import { SdkError } from "../errors";
import { EncryptLevel, VerifyType } from "../crypto";
import { Claim, DisclosedData, SecretKey } from "./claims/common";
import { DidDocument, DIDPrivateKey, PublicKey } from "../did";
import { CipherInfo } from "./cipher";
export declare enum VCType {
    vcTypeProof = "ProofClaim",
    vcTypeProfile = "ProfileClaim"
}
export declare class CredentialSubject {
    id: string[];
    claims: Claim[];
}
export declare class Revocation {
    endpoint: string;
}
export declare class Proof {
    static nonceLen: number;
    nonce: string;
    creator: string;
    created: string;
    type: VerifyType;
    signatureValue: string;
    genNonce(): void;
    signVerify(vcID: string, publicKey: PublicKey): Promise<any>;
}
export declare class VerifiableCredential {
    static w3cContextVC: string;
    context: string[];
    id: string;
    type: string;
    issuer: string[];
    validFrom: string;
    validUntil: string;
    credentialSubject: CredentialSubject;
    revocation: Revocation;
    proof: Proof[];
    addContext(context: string): void;
    setID(): void;
    setType(type: VCType): void;
    addIssuer(issuer: string[]): void;
    setValidFrom(time: string | null): void;
    setValidUntil(time: string): void;
    addProof(proof: Proof): void;
    setCredentialSubject(sub: CredentialSubject): void;
    toString(): string;
    copy(): VerifiableCredential;
    static parseFrom(vcStr: string): VerifiableCredential;
    parseFrom(vcStr: string): object;
    genID(): string;
    checkEmpty(): SdkError | null;
    checkType(): SdkError | null;
    checkTime(): SdkError | null;
    checkId(): SdkError | null;
    checkCredentialSubject(): SdkError | null;
    validateBasic(): SdkError | null;
    static creatVC(issuers: string[], subjectIds: string[], claims: Claim[], validYears: number): VerifiableCredential;
    genProof(issuerDoc: DidDocument, issuerPrivateKey: DIDPrivateKey, useNonce: boolean): Promise<Proof>;
    issue(issuerDoc: DidDocument, issuerPrivateKey: DIDPrivateKey): Promise<void>;
    signVerifySingle(issuerDoc: DidDocument): Promise<SdkError | null>;
    makeSecretKey(randomKey: string, dstDoc: DidDocument, publicKeyId?: string): Promise<SecretKey[]>;
    encrypt(level: EncryptLevel, dstDocs: DidDocument[]): Promise<VerifiableCredentialCipher>;
    genIdPrepare(): void;
    verifyMinDisclosure(disclosedClaims: DisclosedData[]): SdkError | null;
}
export declare class VerifiableCredentialCipher extends VerifiableCredential {
    cipherInfo: CipherInfo | null;
    static parseFrom(vcStr: string): VerifiableCredentialCipher;
    validateBasic(): SdkError | null;
    copy(): VerifiableCredentialCipher;
    decrypt(did: string, didPrivateKey: DIDPrivateKey): Promise<VerifiableCredential>;
    decryptFromSecretKey(secretKey: SecretKey, didPrivateKey: DIDPrivateKey): Promise<VerifiableCredential>;
    decryptFromRandomKey(randomKey: string): VerifiableCredential;
    decryptRandomKey(secretKey: SecretKey, didPrivateKey: DIDPrivateKey): Promise<any>;
    getSecretKey(did: string, publicKeyHex: string): SecretKey | null;
    genIdPrepare(): void;
}
