import { KeyPair, UserAttributes } from '../types';
import { VerifiableCredentialV2, CredentialStatusType, TermsOfUse, Evidence, Proof } from '../types/vc2';
import { IStorageProvider } from '../storage';
import { IdentityProvider } from './identity-provider';
export interface IssueCredentialOptionsV2 {
    credentialStatus?: {
        type: CredentialStatusType;
        statusListUrl?: string;
        statusListIndex?: number;
    };
    termsOfUse?: TermsOfUse | TermsOfUse[];
    evidence?: Evidence | Evidence[];
    validFrom?: string;
    validUntil?: string;
    additionalContexts?: string[];
    useV2Format?: boolean;
    additionalProofs?: Proof[];
}
/**
 * Enhanced Identity Provider with W3C VC 2.0 support
 */
export declare class IdentityProviderV2 extends IdentityProvider {
    private statusList;
    private statusListUrl?;
    private nextStatusIndex;
    constructor(keyPair: KeyPair, storageProvider?: IStorageProvider);
    static create(storageProvider?: IStorageProvider): Promise<IdentityProviderV2>;
    /**
     * Issue a W3C VC 2.0 compliant credential
     */
    issueVerifiableCredentialV2(userDID: string, attributes: UserAttributes, options?: IssueCredentialOptionsV2): Promise<VerifiableCredentialV2>;
    /**
     * Create credential status information
     */
    private createCredentialStatus;
    /**
     * Sign a VC 2.0 credential
     */
    private signCredentialV2;
    /**
     * Revoke a credential using StatusList2021
     */
    revokeCredentialV2(credentialId: string, statusListIndex: number): Promise<void>;
    /**
     * Publish the current status list
     */
    publishStatusList(): Promise<string>;
    /**
     * Create example terms of use
     */
    static createExampleTermsOfUse(): TermsOfUse;
    /**
     * Create example evidence
     */
    static createExampleEvidence(verifierId: string): Evidence;
}
//# sourceMappingURL=identity-provider-v2.d.ts.map