/**
 * BoldSign API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { RequestFile } from './models';
import { DocumentFormFields } from './documentFormFields';
import { GroupSigner } from './groupSigner';
import { IdVerificationDetails } from './idVerificationDetails';
import { PhoneNumber } from './phoneNumber';
import { RecipientNotificationSettings } from './recipientNotificationSettings';
import { SignerAuthenticationSettings } from './signerAuthenticationSettings';

export class DocumentSignerDetails {
    'id'?: string | null;
    'signerName'?: string | null;
    'signerRole'?: string | null;
    'signerEmail'?: string | null;
    'status'?: DocumentSignerDetails.StatusEnum;
    'enableAccessCode'?: boolean;
    'isAuthenticationFailed'?: boolean | null = false;
    'enableEmailOTP'?: boolean;
    'authenticationType'?: DocumentSignerDetails.AuthenticationTypeEnum;
    'isDeliveryFailed'?: boolean = false;
    'isViewed'?: boolean = false;
    'order'?: number = 0;
    'signerType'?: DocumentSignerDetails.SignerTypeEnum = DocumentSignerDetails.SignerTypeEnum.Signer;
    'hostEmail'?: string | null;
    'hostName'?: string | null;
    'isReassigned'?: boolean;
    'privateMessage'?: string | null;
    'allowFieldConfiguration'?: boolean;
    'formFields'?: Array<DocumentFormFields> | null;
    /**
    * <p>Description:</p><ul><li><i>0</i> - None</li><li><i>1</i> - English</li><li><i>2</i> - Spanish</li><li><i>3</i> - German</li><li><i>4</i> - French</li><li><i>5</i> - Romanian</li><li><i>6</i> - Norwegian</li><li><i>7</i> - Bulgarian</li><li><i>8</i> - Italian</li><li><i>9</i> - Danish</li><li><i>10</i> - Polish</li><li><i>11</i> - Portuguese</li><li><i>12</i> - Czech</li><li><i>13</i> - Dutch</li><li><i>14</i> - Swedish</li><li><i>15</i> - Russian</li><li><i>16</i> - Japanese</li><li><i>17</i> - Thai</li><li><i>18</i> - SimplifiedChinese</li><li><i>19</i> - TraditionalChinese</li><li><i>20</i> - Korean</li></ul>
    */
    'language'?: DocumentSignerDetails.LanguageEnum;
    'locale'?: DocumentSignerDetails.LocaleEnum;
    'signType'?: DocumentSignerDetails.SignTypeEnum = DocumentSignerDetails.SignTypeEnum.Single;
    'groupId'?: string | null;
    'phoneNumber'?: PhoneNumber;
    'idVerification'?: IdVerificationDetails;
    'recipientNotificationSettings'?: RecipientNotificationSettings;
    'authenticationRetryCount'?: number | null;
    'enableQes'?: boolean | null;
    'deliveryMode'?: DocumentSignerDetails.DeliveryModeEnum;
    'authenticationSettings'?: SignerAuthenticationSettings;
    'groupSigners'?: Array<GroupSigner> | null;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "id",
            "baseName": "id",
            "type": "string"
        },
        {
            "name": "signerName",
            "baseName": "signerName",
            "type": "string"
        },
        {
            "name": "signerRole",
            "baseName": "signerRole",
            "type": "string"
        },
        {
            "name": "signerEmail",
            "baseName": "signerEmail",
            "type": "string"
        },
        {
            "name": "status",
            "baseName": "status",
            "type": "DocumentSignerDetails.StatusEnum"
        },
        {
            "name": "enableAccessCode",
            "baseName": "enableAccessCode",
            "type": "boolean"
        },
        {
            "name": "isAuthenticationFailed",
            "baseName": "isAuthenticationFailed",
            "type": "boolean"
        },
        {
            "name": "enableEmailOTP",
            "baseName": "enableEmailOTP",
            "type": "boolean"
        },
        {
            "name": "authenticationType",
            "baseName": "authenticationType",
            "type": "DocumentSignerDetails.AuthenticationTypeEnum"
        },
        {
            "name": "isDeliveryFailed",
            "baseName": "isDeliveryFailed",
            "type": "boolean"
        },
        {
            "name": "isViewed",
            "baseName": "isViewed",
            "type": "boolean"
        },
        {
            "name": "order",
            "baseName": "order",
            "type": "number"
        },
        {
            "name": "signerType",
            "baseName": "signerType",
            "type": "DocumentSignerDetails.SignerTypeEnum"
        },
        {
            "name": "hostEmail",
            "baseName": "hostEmail",
            "type": "string"
        },
        {
            "name": "hostName",
            "baseName": "hostName",
            "type": "string"
        },
        {
            "name": "isReassigned",
            "baseName": "isReassigned",
            "type": "boolean"
        },
        {
            "name": "privateMessage",
            "baseName": "privateMessage",
            "type": "string"
        },
        {
            "name": "allowFieldConfiguration",
            "baseName": "allowFieldConfiguration",
            "type": "boolean"
        },
        {
            "name": "formFields",
            "baseName": "formFields",
            "type": "Array<DocumentFormFields>"
        },
        {
            "name": "language",
            "baseName": "language",
            "type": "DocumentSignerDetails.LanguageEnum"
        },
        {
            "name": "locale",
            "baseName": "locale",
            "type": "DocumentSignerDetails.LocaleEnum"
        },
        {
            "name": "signType",
            "baseName": "signType",
            "type": "DocumentSignerDetails.SignTypeEnum"
        },
        {
            "name": "groupId",
            "baseName": "groupId",
            "type": "string"
        },
        {
            "name": "phoneNumber",
            "baseName": "phoneNumber",
            "type": "PhoneNumber"
        },
        {
            "name": "idVerification",
            "baseName": "idVerification",
            "type": "IdVerificationDetails"
        },
        {
            "name": "recipientNotificationSettings",
            "baseName": "recipientNotificationSettings",
            "type": "RecipientNotificationSettings"
        },
        {
            "name": "authenticationRetryCount",
            "baseName": "authenticationRetryCount",
            "type": "number"
        },
        {
            "name": "enableQes",
            "baseName": "enableQes",
            "type": "boolean"
        },
        {
            "name": "deliveryMode",
            "baseName": "deliveryMode",
            "type": "DocumentSignerDetails.DeliveryModeEnum"
        },
        {
            "name": "authenticationSettings",
            "baseName": "authenticationSettings",
            "type": "SignerAuthenticationSettings"
        },
        {
            "name": "groupSigners",
            "baseName": "groupSigners",
            "type": "Array<GroupSigner>"
        }    ];

    static getAttributeTypeMap() {
        return DocumentSignerDetails.attributeTypeMap;
    }
}

export namespace DocumentSignerDetails {
    export enum StatusEnum {
        None = <any> 'None',
        NotCompleted = <any> 'NotCompleted',
        Completed = <any> 'Completed',
        Declined = <any> 'Declined',
        Revoked = <any> 'Revoked',
        Expired = <any> 'Expired'
    }
    export enum AuthenticationTypeEnum {
        None = <any> 'None',
        EmailOtp = <any> 'EmailOTP',
        AccessCode = <any> 'AccessCode',
        Smsotp = <any> 'SMSOTP',
        IdVerification = <any> 'IdVerification'
    }
    export enum SignerTypeEnum {
        Signer = <any> 'Signer',
        Reviewer = <any> 'Reviewer',
        InPersonSigner = <any> 'InPersonSigner'
    }
    export enum LanguageEnum {
        NUMBER_0 = <any> 0,
        NUMBER_1 = <any> 1,
        NUMBER_2 = <any> 2,
        NUMBER_3 = <any> 3,
        NUMBER_4 = <any> 4,
        NUMBER_5 = <any> 5,
        NUMBER_6 = <any> 6,
        NUMBER_7 = <any> 7,
        NUMBER_8 = <any> 8,
        NUMBER_9 = <any> 9,
        NUMBER_10 = <any> 10,
        NUMBER_11 = <any> 11,
        NUMBER_12 = <any> 12,
        NUMBER_13 = <any> 13,
        NUMBER_14 = <any> 14,
        NUMBER_15 = <any> 15,
        NUMBER_16 = <any> 16,
        NUMBER_17 = <any> 17,
        NUMBER_18 = <any> 18,
        NUMBER_19 = <any> 19,
        NUMBER_20 = <any> 20
    }
    export enum LocaleEnum {
        En = <any> 'EN',
        No = <any> 'NO',
        Fr = <any> 'FR',
        De = <any> 'DE',
        Es = <any> 'ES',
        Bg = <any> 'BG',
        Cs = <any> 'CS',
        Da = <any> 'DA',
        It = <any> 'IT',
        Nl = <any> 'NL',
        Pl = <any> 'PL',
        Pt = <any> 'PT',
        Ro = <any> 'RO',
        Ru = <any> 'RU',
        Sv = <any> 'SV',
        Default = <any> 'Default',
        Ja = <any> 'JA',
        Th = <any> 'TH',
        ZhCn = <any> 'ZH_CN',
        ZhTw = <any> 'ZH_TW',
        Ko = <any> 'KO'
    }
    export enum SignTypeEnum {
        Single = <any> 'Single',
        Group = <any> 'Group'
    }
    export enum DeliveryModeEnum {
        Email = <any> 'Email',
        Sms = <any> 'SMS',
        EmailAndSms = <any> 'EmailAndSMS',
        WhatsApp = <any> 'WhatsApp'
    }
}
