import { SignerModuleInterface } from "../core/SignerModule";
export declare enum ClaimType {
    KYC = 1
}
export declare enum ClaimScheme {
    SOME = 1
}
export declare enum ClaimStatus {
    EXPECTED = "EXPECTED",
    READY = "READY",
    PENDING = "PENDING",
    CONFIRMED = "CONFIRMED",
    REVOKED = "REVOKED"
}
export interface ClaimData {
    address?: string;
    data?: string;
    hash?: string;
    emissionDate?: Date;
    id?: string;
    issuanceDate?: Date;
    issuer?: string;
    publicData?: object;
    privateData?: object;
    scheme?: number;
    signature?: string;
    status?: ClaimStatus;
    type?: number;
    uri?: string;
}
export declare enum AccessGrantType {
    IMMEDIATE = "IMMEDIATE",
    PERSISTENT = "PERSISTENT"
}
export declare enum AccessGrantStatus {
    PENDING = "PENDING",
    CONFIRMED = "CONFIRMED",
    REVOKED = "REVOKED"
}
export interface AccessGrant {
    address: string;
    challenge: string;
    claimId: string;
    date: Date;
    id: string;
    key?: string;
    keySigningMethod?: string;
    keyType?: string;
    signature?: string;
    status: AccessGrantStatus;
    type: AccessGrantType;
    uri: string;
}
export interface AccessToken {
    access: boolean;
    accessToken?: string;
}
export interface ClaimObject extends ClaimData {
    completeAccessChallenge(accessGrant: AccessGrant, signer: SignerModuleInterface): Promise<AccessGrant | AccessToken>;
    generateHash(type?: ClaimType, issuanceDate?: Date, publicData?: object, privateData?: object): string;
    getPublicData(): Promise<object>;
    getPrivateData(accessToken: string): Promise<object>;
    populate(accessToken?: string): Promise<void>;
    requestAccess(accessType?: AccessGrantType, signer?: SignerModuleInterface): Promise<AccessGrant>;
    requestAccessToken(accessGrant: AccessGrant, signer: SignerModuleInterface): Promise<AccessToken>;
    sign(signer?: SignerModuleInterface): Promise<string>;
}
