/**
 * 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 { DocumentCC } from './documentCC';
import { DocumentInfo } from './documentInfo';
import { FormGroup } from './formGroup';
import { RecipientNotificationSettings } from './recipientNotificationSettings';
import { ReminderSettings } from './reminderSettings';
import { Role } from './role';
import { TextTagDefinition } from './textTagDefinition';

export class MergeAndSendForSignForm {
    'files'?: Array<RequestFile> | null;
    'fileUrls'?: Array<string> | null;
    'templateIds'?: Array<string> | null;
    'useTextTags'?: boolean;
    'textTagDefinitions'?: Array<TextTagDefinition> | null;
    'documentId'?: string | null;
    'title'?: string | null;
    'message'?: string | null;
    'roles'?: Array<Role> | null;
    'brandId'?: string | null;
    'labels'?: Array<string> | null;
    'disableEmails'?: boolean;
    'disableSMS'?: boolean = false;
    'hideDocumentId'?: boolean | null;
    'reminderSettings'?: ReminderSettings;
    'cc'?: Array<DocumentCC> | null;
    'expiryDays'?: number;
    'expiryDateType'?: MergeAndSendForSignForm.ExpiryDateTypeEnum;
    'expiryValue'?: number = 60;
    'enablePrintAndSign'?: boolean;
    'enableReassign'?: boolean | null;
    'enableSigningOrder'?: boolean | null;
    'disableExpiryAlert'?: boolean | null;
    'documentInfo'?: Array<DocumentInfo> | null;
    'onBehalfOf'?: string | null;
    'isSandbox'?: boolean | null;
    'roleRemovalIndices'?: Array<number> | null;
    'documentDownloadOption'?: MergeAndSendForSignForm.DocumentDownloadOptionEnum;
    'metaData'?: { [key: string]: string | null; } | null;
    'recipientNotificationSettings'?: RecipientNotificationSettings;
    'formGroups'?: Array<FormGroup> | null;
    'removeFormFields'?: Array<string> | null;
    'enableAuditTrailLocalization'?: boolean | null;
    'downloadFileName'?: string | null;
    'scheduledSendTime'?: number | null;
    'allowScheduledSend'?: boolean = false;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "files",
            "baseName": "files",
            "type": "Array<RequestFile>"
        },
        {
            "name": "fileUrls",
            "baseName": "fileUrls",
            "type": "Array<string>"
        },
        {
            "name": "templateIds",
            "baseName": "templateIds",
            "type": "Array<string>"
        },
        {
            "name": "useTextTags",
            "baseName": "useTextTags",
            "type": "boolean"
        },
        {
            "name": "textTagDefinitions",
            "baseName": "textTagDefinitions",
            "type": "Array<TextTagDefinition>"
        },
        {
            "name": "documentId",
            "baseName": "documentId",
            "type": "string"
        },
        {
            "name": "title",
            "baseName": "title",
            "type": "string"
        },
        {
            "name": "message",
            "baseName": "message",
            "type": "string"
        },
        {
            "name": "roles",
            "baseName": "roles",
            "type": "Array<Role>"
        },
        {
            "name": "brandId",
            "baseName": "brandId",
            "type": "string"
        },
        {
            "name": "labels",
            "baseName": "labels",
            "type": "Array<string>"
        },
        {
            "name": "disableEmails",
            "baseName": "disableEmails",
            "type": "boolean"
        },
        {
            "name": "disableSMS",
            "baseName": "disableSMS",
            "type": "boolean"
        },
        {
            "name": "hideDocumentId",
            "baseName": "hideDocumentId",
            "type": "boolean"
        },
        {
            "name": "reminderSettings",
            "baseName": "reminderSettings",
            "type": "ReminderSettings"
        },
        {
            "name": "cc",
            "baseName": "cc",
            "type": "Array<DocumentCC>"
        },
        {
            "name": "expiryDays",
            "baseName": "expiryDays",
            "type": "number"
        },
        {
            "name": "expiryDateType",
            "baseName": "expiryDateType",
            "type": "MergeAndSendForSignForm.ExpiryDateTypeEnum"
        },
        {
            "name": "expiryValue",
            "baseName": "expiryValue",
            "type": "number"
        },
        {
            "name": "enablePrintAndSign",
            "baseName": "enablePrintAndSign",
            "type": "boolean"
        },
        {
            "name": "enableReassign",
            "baseName": "enableReassign",
            "type": "boolean"
        },
        {
            "name": "enableSigningOrder",
            "baseName": "enableSigningOrder",
            "type": "boolean"
        },
        {
            "name": "disableExpiryAlert",
            "baseName": "disableExpiryAlert",
            "type": "boolean"
        },
        {
            "name": "documentInfo",
            "baseName": "documentInfo",
            "type": "Array<DocumentInfo>"
        },
        {
            "name": "onBehalfOf",
            "baseName": "onBehalfOf",
            "type": "string"
        },
        {
            "name": "isSandbox",
            "baseName": "isSandbox",
            "type": "boolean"
        },
        {
            "name": "roleRemovalIndices",
            "baseName": "roleRemovalIndices",
            "type": "Array<number>"
        },
        {
            "name": "documentDownloadOption",
            "baseName": "documentDownloadOption",
            "type": "MergeAndSendForSignForm.DocumentDownloadOptionEnum"
        },
        {
            "name": "metaData",
            "baseName": "metaData",
            "type": "{ [key: string]: string | null; }"
        },
        {
            "name": "recipientNotificationSettings",
            "baseName": "recipientNotificationSettings",
            "type": "RecipientNotificationSettings"
        },
        {
            "name": "formGroups",
            "baseName": "formGroups",
            "type": "Array<FormGroup>"
        },
        {
            "name": "removeFormFields",
            "baseName": "removeFormFields",
            "type": "Array<string>"
        },
        {
            "name": "enableAuditTrailLocalization",
            "baseName": "enableAuditTrailLocalization",
            "type": "boolean"
        },
        {
            "name": "downloadFileName",
            "baseName": "downloadFileName",
            "type": "string"
        },
        {
            "name": "scheduledSendTime",
            "baseName": "scheduledSendTime",
            "type": "number"
        },
        {
            "name": "allowScheduledSend",
            "baseName": "allowScheduledSend",
            "type": "boolean"
        }    ];

    static getAttributeTypeMap() {
        return MergeAndSendForSignForm.attributeTypeMap;
    }
}

export namespace MergeAndSendForSignForm {
    export enum ExpiryDateTypeEnum {
        Days = <any> 'Days',
        Hours = <any> 'Hours',
        SpecificDateTime = <any> 'SpecificDateTime'
    }
    export enum DocumentDownloadOptionEnum {
        Combined = <any> 'Combined',
        Individually = <any> 'Individually'
    }
}
