import { ModelAliases } from '@glazed/types';
import { z } from 'zod';
import { StreamID } from '@ceramicnetwork/streamid';
import { Plugin } from '@learncard/core';
import { VC, CredentialRecord } from '@learncard/types';
import { CeramicClient } from '@ceramicnetwork/http-client';
/** @group IDXPlugin */
export type IDXIndexObject<IDXMetadata extends Record<string, any>, Metadata extends Record<string, any>> = {
    credentials: CredentialRecord<Metadata>[];
} & IDXMetadata;
/** @group IDXPlugin */
export type IDXArgs = {
    modelData: ModelAliases;
    credentialAlias: string;
};
/** @group IDXPlugin */
export type IDXPluginMethods = {
    getCredentialsListFromIdx: <Metadata extends Record<string, any> = Record<never, never>>(alias?: string) => Promise<CredentialRecord<Metadata>[]>;
    getVerifiableCredentialFromIdx: (id: string) => Promise<VC | undefined>;
    getVerifiableCredentialsFromIdx: () => Promise<VC[]>;
    addVerifiableCredentialInIdx: <Metadata extends Record<string, any> = Record<never, never>>(cred: CredentialRecord<Metadata>) => Promise<string>;
    removeVerifiableCredentialInIdx: (title: string) => Promise<StreamID>;
    removeAllVerifiableCredentialsInIdx: () => Promise<StreamID>;
    getIDXIndex: <IDXMetadata extends Record<string, any>, Metadata extends Record<string, any>>() => Promise<IDXIndexObject<IDXMetadata, Metadata> | null>;
    setIDXIndex: <IDXMetadata extends Record<string, any>, Metadata extends Record<string, any>>(index: IDXIndexObject<IDXMetadata, Metadata>) => Promise<StreamID>;
};
/** @group IDXPlugin */
export type IDXPluginDependentMethods = {
    getCeramicClient: () => CeramicClient;
};
/** @group IDXPlugin */
export type CredentialsList<Metadata extends Record<string, any> = Record<never, never>> = {
    credentials: Array<CredentialRecord<Metadata>>;
};
/** @group IDXPlugin */
export declare const CredentialsListValidator: z.ZodType<CredentialsList>;
/** @group IDXPlugin */
export type IDXPlugin = Plugin<'IDX', 'index', IDXPluginMethods, 'read', IDXPluginDependentMethods>;
/** @group IDXPlugin */
export type BackwardsCompatIDXCredential<Metadata extends Record<string, any> = Record<never, never>> = {
    [key: string]: any;
    id: string;
    title: string;
    storageType?: 'ceramic';
} & Metadata;
/** @group IDXPlugin */
export declare const BackwardsCompatIDXCredentialValidator: z.ZodType<BackwardsCompatIDXCredential>;
/** @group IDXPlugin */
export type BackwardsCompatCredentialsList<Metadata extends Record<string, any> = Record<never, never>> = {
    credentials: Array<CredentialRecord<Metadata> | BackwardsCompatIDXCredential<Metadata>>;
};
/** @group IDXPlugin */
export declare const BackwardsCompatCredentialsListValidator: z.ZodType<BackwardsCompatCredentialsList>;
//# sourceMappingURL=types.d.ts.map