import {base} from "../base";
import {identityVerification} from "../models/identityVerification";
import TwoArgsMethodOverload = base.TwoArgsMethodOverload;
import MethodOverload = base.MethodOverload;
import ThreeArgsMethodOverload = base.ThreeArgsMethodOverload;

export class IdentityVerifications {
    /**
     * Start an identity verification session and get a link for the hosted experience
     * @param {string} userId The user identifier
     * @param {Object} identityVerification The IdentityVerification object
     */
    create: TwoArgsMethodOverload<
        string,
        identityVerification.CreateIdentityVerification,
        identityVerification.IdentityVerificationData
    >;

    /**
     * See the status and basic details of an identity verification session
     * @param {string} id The unique identifier of the identity verification session.
     */
    get: MethodOverload<string, identityVerification.IdentityVerificationData>;

    /**
     * Get all IdentityVerifications for a user
     * @param {string} userId The unique identifier of the user.
     */
    getAll: MethodOverload<string, identityVerification.IdentityVerificationData[]>;

    /**
     * Request the retry of a PSC session
     *
     * @param {string} identityVerificationId The unique identifier of the IdentityVerification
     * @param {string} pscId The unique identifier of the PSC
     * @param {identityVerification.PscRetry} details Optional details. If not needed, send {}
     */
    retryPsc: ThreeArgsMethodOverload<string, string, identityVerification.PscRetry, identityVerification.Psc>
}
