import { StripeResource } from '../../StripeResource.js';
import { PaginationParams, RangeQueryParam, Address } from '../../shared.js';
import { RequestOptions, ApiListPromise, Response } from '../../lib.js';
export declare class VerificationReportResource extends StripeResource {
    /**
     * List all verification reports.
     */
    list(params?: Identity.VerificationReportListParams, options?: RequestOptions): ApiListPromise<VerificationReport>;
    /**
     * Retrieves an existing VerificationReport
     */
    retrieve(id: string, params?: Identity.VerificationReportRetrieveParams, options?: RequestOptions): Promise<Response<VerificationReport>>;
}
export interface VerificationReport {
    /**
     * Unique identifier for the object.
     */
    id: string;
    /**
     * String representing the object's type. Objects of the same type share the same value.
     */
    object: 'identity.verification_report';
    /**
     * A string to reference this user. This can be a customer ID, a session ID, or similar, and can be used to reconcile this verification with your internal systems.
     */
    client_reference_id: string | null;
    /**
     * Time at which the object was created. Measured in seconds since the Unix epoch.
     */
    created: number;
    /**
     * Result from a document check
     */
    document?: Identity.VerificationReport.Document;
    /**
     * Result from a email check
     */
    email?: Identity.VerificationReport.Email;
    /**
     * Result from an id_number check
     */
    id_number?: Identity.VerificationReport.IdNumber;
    /**
     * If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
     */
    livemode: boolean;
    options?: Identity.VerificationReport.Options;
    /**
     * Result from a phone check
     */
    phone?: Identity.VerificationReport.Phone;
    /**
     * Result from a selfie check
     */
    selfie?: Identity.VerificationReport.Selfie;
    /**
     * Type of report.
     */
    type: Identity.VerificationReport.Type;
    /**
     * The configuration token of a verification flow from the dashboard.
     */
    verification_flow?: string;
    /**
     * ID of the VerificationSession that created this report.
     */
    verification_session: string | null;
}
export declare namespace Identity {
    namespace VerificationReport {
        interface Document {
            /**
             * Address as it appears in the document.
             */
            address: Address | null;
            /**
             * Date of birth as it appears in the document.
             */
            dob?: Document.Dob | null;
            /**
             * Details on the verification error. Present when status is `unverified`.
             */
            error: Document.Error | null;
            /**
             * Expiration date of the document.
             */
            expiration_date?: Document.ExpirationDate | null;
            /**
             * Array of [File](https://docs.stripe.com/api/files) ids containing images for this document.
             */
            files: Array<string> | null;
            /**
             * First name as it appears in the document.
             */
            first_name: string | null;
            /**
             * Issued date of the document.
             */
            issued_date: Document.IssuedDate | null;
            /**
             * Issuing country of the document.
             */
            issuing_country: string | null;
            /**
             * Last name as it appears in the document.
             */
            last_name: string | null;
            /**
             * Document ID number.
             */
            number?: string | null;
            /**
             * Sex of the person in the document.
             */
            sex?: Document.Sex | null;
            /**
             * Status of this `document` check.
             */
            status: Document.Status;
            /**
             * Type of the document.
             */
            type: Document.Type | null;
            /**
             * Place of birth as it appears in the document.
             */
            unparsed_place_of_birth?: string | null;
            /**
             * Sex as it appears in the document.
             */
            unparsed_sex?: string | null;
        }
        interface Email {
            /**
             * Email to be verified.
             */
            email: string | null;
            /**
             * Details on the verification error. Present when status is `unverified`.
             */
            error: Email.Error | null;
            /**
             * Status of this `email` check.
             */
            status: Email.Status;
        }
        interface IdNumber {
            /**
             * Date of birth.
             */
            dob?: IdNumber.Dob | null;
            /**
             * Details on the verification error. Present when status is `unverified`.
             */
            error: IdNumber.Error | null;
            /**
             * First name.
             */
            first_name: string | null;
            /**
             * ID number. When `id_number_type` is `us_ssn`, only the last 4 digits are present.
             */
            id_number?: string | null;
            /**
             * Type of ID number.
             */
            id_number_type: IdNumber.IdNumberType | null;
            /**
             * Last name.
             */
            last_name: string | null;
            /**
             * Status of this `id_number` check.
             */
            status: IdNumber.Status;
        }
        interface Options {
            document?: Options.Document;
            id_number?: Options.IdNumber;
        }
        interface Phone {
            /**
             * Details on the verification error. Present when status is `unverified`.
             */
            error: Phone.Error | null;
            /**
             * Phone to be verified.
             */
            phone: string | null;
            /**
             * Status of this `phone` check.
             */
            status: Phone.Status;
        }
        interface Selfie {
            /**
             * ID of the [File](https://docs.stripe.com/api/files) holding the image of the identity document used in this check.
             */
            document: string | null;
            /**
             * Details on the verification error. Present when status is `unverified`.
             */
            error: Selfie.Error | null;
            /**
             * ID of the [File](https://docs.stripe.com/api/files) holding the image of the selfie used in this check.
             */
            selfie: string | null;
            /**
             * Status of this `selfie` check.
             */
            status: Selfie.Status;
        }
        type Type = 'document' | 'id_number' | 'verification_flow';
        namespace Document {
            interface Dob {
                /**
                 * Numerical day between 1 and 31.
                 */
                day: number | null;
                /**
                 * Numerical month between 1 and 12.
                 */
                month: number | null;
                /**
                 * The four-digit year.
                 */
                year: number | null;
            }
            interface Error {
                /**
                 * A short machine-readable string giving the reason for the verification failure.
                 */
                code: Error.Code | null;
                /**
                 * A human-readable message giving the reason for the failure. These messages can be shown to your users.
                 */
                reason: string | null;
            }
            interface ExpirationDate {
                /**
                 * Numerical day between 1 and 31.
                 */
                day: number | null;
                /**
                 * Numerical month between 1 and 12.
                 */
                month: number | null;
                /**
                 * The four-digit year.
                 */
                year: number | null;
            }
            interface IssuedDate {
                /**
                 * Numerical day between 1 and 31.
                 */
                day: number | null;
                /**
                 * Numerical month between 1 and 12.
                 */
                month: number | null;
                /**
                 * The four-digit year.
                 */
                year: number | null;
            }
            type Sex = '[redacted]' | 'female' | 'male' | 'unknown';
            type Status = 'unverified' | 'verified';
            type Type = 'driving_license' | 'id_card' | 'passport';
            namespace Error {
                type Code = 'document_expired' | 'document_type_not_supported' | 'document_unverified_other';
            }
        }
        namespace Email {
            interface Error {
                /**
                 * A short machine-readable string giving the reason for the verification failure.
                 */
                code: Error.Code | null;
                /**
                 * A human-readable message giving the reason for the failure. These messages can be shown to your users.
                 */
                reason: string | null;
            }
            type Status = 'unverified' | 'verified';
            namespace Error {
                type Code = 'email_unverified_other' | 'email_verification_declined';
            }
        }
        namespace IdNumber {
            interface Dob {
                /**
                 * Numerical day between 1 and 31.
                 */
                day: number | null;
                /**
                 * Numerical month between 1 and 12.
                 */
                month: number | null;
                /**
                 * The four-digit year.
                 */
                year: number | null;
            }
            interface Error {
                /**
                 * A short machine-readable string giving the reason for the verification failure.
                 */
                code: Error.Code | null;
                /**
                 * A human-readable message giving the reason for the failure. These messages can be shown to your users.
                 */
                reason: string | null;
            }
            type IdNumberType = 'br_cpf' | 'sg_nric' | 'us_ssn';
            type Status = 'unverified' | 'verified';
            namespace Error {
                type Code = 'id_number_insufficient_document_data' | 'id_number_mismatch' | 'id_number_unverified_other';
            }
        }
        namespace Options {
            interface Document {
                /**
                 * Array of strings of allowed identity document types. If the provided identity document isn't one of the allowed types, the verification check will fail with a document_type_not_allowed error code.
                 */
                allowed_types?: Array<Document.AllowedType>;
                /**
                 * Collect an ID number and perform an [ID number check](https://docs.stripe.com/identity/verification-checks?type=id-number) with the document's extracted name and date of birth.
                 */
                require_id_number?: boolean;
                /**
                 * Disable image uploads, identity document images have to be captured using the device's camera.
                 */
                require_live_capture?: boolean;
                /**
                 * Capture a face image and perform a [selfie check](https://docs.stripe.com/identity/verification-checks?type=selfie) comparing a photo ID and a picture of your user's face. [Learn more](https://docs.stripe.com/identity/selfie).
                 */
                require_matching_selfie?: boolean;
            }
            interface IdNumber {
            }
            namespace Document {
                type AllowedType = 'driving_license' | 'id_card' | 'passport';
            }
        }
        namespace Phone {
            interface Error {
                /**
                 * A short machine-readable string giving the reason for the verification failure.
                 */
                code: Error.Code | null;
                /**
                 * A human-readable message giving the reason for the failure. These messages can be shown to your users.
                 */
                reason: string | null;
            }
            type Status = 'unverified' | 'verified';
            namespace Error {
                type Code = 'phone_unverified_other' | 'phone_verification_declined';
            }
        }
        namespace Selfie {
            interface Error {
                /**
                 * A short machine-readable string giving the reason for the verification failure.
                 */
                code: Error.Code | null;
                /**
                 * A human-readable message giving the reason for the failure. These messages can be shown to your users.
                 */
                reason: string | null;
            }
            type Status = 'unverified' | 'verified';
            namespace Error {
                type Code = 'selfie_document_missing_photo' | 'selfie_face_mismatch' | 'selfie_manipulated' | 'selfie_unverified_other';
            }
        }
    }
}
export declare namespace Identity {
    interface VerificationReportRetrieveParams {
        /**
         * Specifies which fields in the response should be expanded.
         */
        expand?: Array<string>;
    }
}
export declare namespace Identity {
    interface VerificationReportListParams extends PaginationParams {
        /**
         * A string to reference this user. This can be a customer ID, a session ID, or similar, and can be used to reconcile this verification with your internal systems.
         */
        client_reference_id?: string;
        /**
         * Only return VerificationReports that were created during the given date interval.
         */
        created?: RangeQueryParam | number;
        /**
         * Specifies which fields in the response should be expanded.
         */
        expand?: Array<string>;
        /**
         * Only return VerificationReports of this type
         */
        type?: VerificationReportListParams.Type;
        /**
         * Only return VerificationReports created by this VerificationSession ID. It is allowed to provide a VerificationIntent ID.
         */
        verification_session?: string;
    }
    namespace VerificationReportListParams {
        type Type = 'document' | 'id_number';
    }
}
