export interface KeyPair {
    publicKey: Uint8Array;
    privateKey: Uint8Array;
}
export interface DID {
    id: string;
    publicKey: Uint8Array;
}
export interface VerifiableCredential {
    "@context": string[];
    id: string;
    type: string[];
    issuer: string;
    issuanceDate: string;
    credentialSubject: {
        id: string;
        [key: string]: any;
    };
    proof?: {
        type: string;
        created: string;
        proofPurpose: string;
        verificationMethod: string;
        jws: string;
    };
}
export interface VerifiablePresentation {
    "@context": string[];
    type: string[];
    verifiableCredential: (VerifiableCredential | SelectivelyDisclosedCredential)[];
    proof?: {
        type: string;
        created: string;
        proofPurpose: string;
        verificationMethod: string;
        jws: string;
    };
}
export interface SelectivelyDisclosedCredential {
    "@context": string[];
    id: string;
    type: string[];
    issuer: string;
    issuanceDate: string;
    credentialSubject: {
        id: string;
        [key: string]: any;
    };
    proof?: {
        type: string;
        created: string;
        proofPurpose: string;
        verificationMethod: string;
        jws: string;
    };
    disclosureProof?: {
        type: string;
        originalCredentialId: string;
        disclosedAttributes: string[];
        nonce: string;
        proofValue: string;
    };
}
export interface SelectiveDisclosureRequest {
    credentialId: string;
    attributesToDisclose: string[];
}
export interface AttributeSchema {
    name: string;
    type: "string" | "date" | "boolean" | "number" | "object";
    required?: boolean;
}
export interface PhoneNumber {
    id?: string;
    number: string;
    type: 'mobile' | 'home' | 'work' | 'other';
    countryCode?: string;
    isPrimary?: boolean;
    verified?: boolean;
    verifiedAt?: string;
    canReceiveSMS?: boolean;
    canReceiveCalls?: boolean;
    preferredFor2FA?: boolean;
}
export interface EmailAddress {
    id?: string;
    email: string;
    type: 'personal' | 'work' | 'school' | 'other';
    isPrimary?: boolean;
    verified?: boolean;
    verifiedAt?: string;
    canReceive2FA?: boolean;
    preferredFor2FA?: boolean;
}
export interface Address {
    id?: string;
    street: string;
    city: string;
    state?: string;
    postalCode?: string;
    country: string;
    type: 'home' | 'work' | 'mailing' | 'other';
    isPrimary?: boolean;
    verified?: boolean;
    verifiedAt?: string;
}
export interface UserAttributes {
    givenName?: string;
    dateOfBirth?: string;
    isOver18?: boolean;
    phoneNumbers?: PhoneNumber[];
    emailAddresses?: EmailAddress[];
    addresses?: Address[];
    [key: string]: any;
}
export interface RevocationList {
    "@context": string[];
    id: string;
    type: string[];
    issuer: string;
    issuanceDate: string;
    revokedCredentials: string[];
    proof?: {
        type: string;
        created: string;
        proofPurpose: string;
        verificationMethod: string;
        jws: string;
    };
}
export interface RevocationRegistry {
    [issuerDID: string]: RevocationList;
}
export * from './vc2';
//# sourceMappingURL=index.d.ts.map