import { VerifiableCredentialOptions, VerifiableCredentialWithType } from './ssi/vc';
import { VeriffStatusEnum } from '../types/VeriffStatusEnum';
import { VerificationTypeEnum } from '../types/VerificationTypeEnum';
import { KeyValueObject } from './objects';
import { Issuer } from 'did-jwt-vc';
export type KYCPayload = VeriffWebhookPayload;
export declare class KYCVC extends VerifiableCredentialWithType<KYCPayload> {
    protected static type: string;
    /**
     * Alternative constructor that returns type KYCVC
     */
    static signData(payload: KYCPayload, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<KYCVC>;
}
export declare class FirstNameVC extends VerifiableCredentialWithType<{
    firstName: string;
}> {
    protected static type: string;
    /**
     * Alternative constructor that returns type FirstNameVC
     */
    static signData(payload: {
        firstName: string;
    }, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<FirstNameVC>;
}
export declare class LastNameVC extends VerifiableCredentialWithType<{
    lastName: string;
}> {
    protected static type: string;
    /**
     * Alternative constructor that returns type LastNameVC
     */
    static signData(payload: {
        lastName: string;
    }, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<LastNameVC>;
}
export declare class BirthDateVC extends VerifiableCredentialWithType<{
    birthDate: string;
}> {
    protected static type: string;
    /**
     * Alternative constructor that returns type BirthDateVC
     */
    static signData(payload: {
        birthDate: string;
    }, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<BirthDateVC>;
}
export type AddressVCType = {
    address: string;
    components?: KeyValueObject;
};
export declare class AddressVC extends VerifiableCredentialWithType<AddressVCType> {
    protected static type: string;
    /**
     * Alternative constructor that returns type AddressVC
     */
    static signData(payload: AddressVCType, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<AddressVC>;
}
export declare class NationalityVC extends VerifiableCredentialWithType<{
    nationality: string;
}> {
    protected static type: string;
    /**
     * Alternative constructor that returns type NationalityVC
     */
    static signData(payload: {
        nationality: string;
    }, issuer: Issuer, options?: VerifiableCredentialOptions): Promise<NationalityVC>;
}
export type PersonCredentialType = KYCVC | FirstNameVC | LastNameVC | BirthDateVC | AddressVC | NationalityVC;
export type VerificationMessagePayload = {
    kyc: KYCVC;
    firstName?: FirstNameVC;
    lastName?: LastNameVC;
    birthDate?: BirthDateVC;
    address?: AddressVC;
    nationality?: NationalityVC;
};
export type DocumentField = {
    confidenceCategory?: 'high' | 'medium' | 'low' | null;
    value: string | null;
    sources?: ('VIZ' | 'MRZ' | 'NFC' | 'BARCODE')[];
};
export type PersonField = DocumentField | null;
export type AddressField = (DocumentField & {
    components?: KeyValueObject;
}) | null;
export type VeriffWebhookPayload = {
    status: 'success' | 'fail';
    eventType: 'fullauto';
    sessionId: string;
    attemptId: string;
    vendorData: string | null;
    endUserId: string | null;
    version: string;
    acceptanceTime: string;
    time: string;
    data: {
        verification: {
            decisionScore: number | null;
            decision: 'approved' | 'declined' | 'resubmission_requested' | 'expired' | 'abandoned';
            person: {
                firstName?: PersonField;
                lastName?: PersonField;
                dateOfBirth?: PersonField;
                gender?: PersonField;
                idNumber?: PersonField;
                nationality?: PersonField;
                address?: AddressField;
                placeOfBirth?: PersonField;
                foreignerStatus?: PersonField;
                occupation?: PersonField;
                employer?: PersonField;
                extraNames?: PersonField;
            };
            document: {
                type?: (DocumentField & {
                    value: string | null;
                }) | null;
                country?: DocumentField | null;
                number?: DocumentField;
                validFrom?: DocumentField;
                validUntil?: DocumentField;
                issuedBy?: DocumentField | null | undefined;
                firstIssue?: DocumentField | null | undefined;
                placeOfIssue?: DocumentField | null | undefined;
                processNumber?: DocumentField | null | undefined;
                residencePermitType?: DocumentField | null | undefined;
                licenseNumber?: DocumentField | null | undefined;
                [extra: string]: DocumentField | null | undefined;
            };
            insights: {
                label: string;
                result: 'yes' | 'likelyYes' | 'no' | 'notApplicable';
                category: string;
            }[] | null;
        };
    };
};
export declare function castDecisionToStatus(decision: string): VeriffStatusEnum;
export declare function castStringToCredential(vc: string, type: VerificationTypeEnum): PersonCredentialType;
//# sourceMappingURL=veriff.d.ts.map