/**
 * 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 { BehalfOf } from './behalfOf';
import { DocumentFiles } from './documentFiles';
import { DocumentInfo } from './documentInfo';
import { FormGroup } from './formGroup';
import { RecipientNotificationSettings } from './recipientNotificationSettings';
import { Roles } from './roles';
import { TemplateFormFields } from './templateFormFields';
import { TemplateSenderDetail } from './templateSenderDetail';
import { TemplateSharedTemplateDetail } from './templateSharedTemplateDetail';

export class TemplateProperties {
    'templateId'?: string | null;
    'title'?: string | null;
    'description'?: string | null;
    'documentTitle'?: string | null;
    'documentMessage'?: string | null;
    'files'?: Array<DocumentFiles> | null;
    'roles'?: Array<Roles> | null;
    'formGroups'?: Array<FormGroup> | null;
    'commonFields'?: Array<TemplateFormFields> | null;
    'cCDetails'?: Array<string> | null;
    'brandId'?: string | null;
    'allowMessageEditing'?: boolean;
    'allowNewRoles'?: boolean;
    'allowNewFiles'?: boolean;
    'allowModifyFiles'?: boolean;
    'enableReassign'?: boolean;
    'enablePrintAndSign'?: boolean;
    'enableSigningOrder'?: boolean;
    'createdDate'?: number;
    'createdBy'?: TemplateSenderDetail;
    'sharedTemplateDetail'?: Array<TemplateSharedTemplateDetail> | null;
    'documentInfo'?: Array<DocumentInfo> | null;
    'labels'?: Array<string> | null;
    'templateLabels'?: Array<string> | null;
    'behalfOf'?: BehalfOf;
    'documentDownloadOption'?: TemplateProperties.DocumentDownloadOptionEnum;
    'recipientNotificationSettings'?: RecipientNotificationSettings;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "templateId",
            "baseName": "templateId",
            "type": "string"
        },
        {
            "name": "title",
            "baseName": "title",
            "type": "string"
        },
        {
            "name": "description",
            "baseName": "description",
            "type": "string"
        },
        {
            "name": "documentTitle",
            "baseName": "documentTitle",
            "type": "string"
        },
        {
            "name": "documentMessage",
            "baseName": "documentMessage",
            "type": "string"
        },
        {
            "name": "files",
            "baseName": "files",
            "type": "Array<DocumentFiles>"
        },
        {
            "name": "roles",
            "baseName": "roles",
            "type": "Array<Roles>"
        },
        {
            "name": "formGroups",
            "baseName": "formGroups",
            "type": "Array<FormGroup>"
        },
        {
            "name": "commonFields",
            "baseName": "commonFields",
            "type": "Array<TemplateFormFields>"
        },
        {
            "name": "cCDetails",
            "baseName": "cCDetails",
            "type": "Array<string>"
        },
        {
            "name": "brandId",
            "baseName": "brandId",
            "type": "string"
        },
        {
            "name": "allowMessageEditing",
            "baseName": "allowMessageEditing",
            "type": "boolean"
        },
        {
            "name": "allowNewRoles",
            "baseName": "allowNewRoles",
            "type": "boolean"
        },
        {
            "name": "allowNewFiles",
            "baseName": "allowNewFiles",
            "type": "boolean"
        },
        {
            "name": "allowModifyFiles",
            "baseName": "allowModifyFiles",
            "type": "boolean"
        },
        {
            "name": "enableReassign",
            "baseName": "enableReassign",
            "type": "boolean"
        },
        {
            "name": "enablePrintAndSign",
            "baseName": "EnablePrintAndSign",
            "type": "boolean"
        },
        {
            "name": "enableSigningOrder",
            "baseName": "enableSigningOrder",
            "type": "boolean"
        },
        {
            "name": "createdDate",
            "baseName": "createdDate",
            "type": "number"
        },
        {
            "name": "createdBy",
            "baseName": "createdBy",
            "type": "TemplateSenderDetail"
        },
        {
            "name": "sharedTemplateDetail",
            "baseName": "sharedTemplateDetail",
            "type": "Array<TemplateSharedTemplateDetail>"
        },
        {
            "name": "documentInfo",
            "baseName": "documentInfo",
            "type": "Array<DocumentInfo>"
        },
        {
            "name": "labels",
            "baseName": "labels",
            "type": "Array<string>"
        },
        {
            "name": "templateLabels",
            "baseName": "templateLabels",
            "type": "Array<string>"
        },
        {
            "name": "behalfOf",
            "baseName": "behalfOf",
            "type": "BehalfOf"
        },
        {
            "name": "documentDownloadOption",
            "baseName": "documentDownloadOption",
            "type": "TemplateProperties.DocumentDownloadOptionEnum"
        },
        {
            "name": "recipientNotificationSettings",
            "baseName": "recipientNotificationSettings",
            "type": "RecipientNotificationSettings"
        }    ];

    static getAttributeTypeMap() {
        return TemplateProperties.attributeTypeMap;
    }
}

export namespace TemplateProperties {
    export enum DocumentDownloadOptionEnum {
        Combined = <any> 'Combined',
        Individually = <any> 'Individually'
    }
}
