/**
 * 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 { TemplateCC } from './templateCC';
import { TemplateSenderDetails } from './templateSenderDetails';
import { TemplateSignerDetails } from './templateSignerDetails';

export class Template {
    'documentId'?: string | null;
    'senderDetail'?: TemplateSenderDetails;
    'ccDetails'?: Array<TemplateCC> | null;
    'createdDate'?: number;
    'activityDate'?: number;
    'activityBy'?: string | null;
    'messageTitle'?: string | null;
    'status'?: Template.StatusEnum;
    'signerDetails'?: Array<TemplateSignerDetails> | null;
    'enableSigningOrder'?: boolean;
    'templateName'?: string | null;
    'templateDescription'?: string | null;
    'accessType'?: Template.AccessTypeEnum;
    'accessTid'?: string | null;
    'isTemplate'?: boolean = false;
    'behalfOf'?: BehalfOf;
    'templateLabels'?: Array<string> | null;
    'labels'?: Array<string> | null;
    'brandId'?: string | null;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "documentId",
            "baseName": "documentId",
            "type": "string"
        },
        {
            "name": "senderDetail",
            "baseName": "senderDetail",
            "type": "TemplateSenderDetails"
        },
        {
            "name": "ccDetails",
            "baseName": "ccDetails",
            "type": "Array<TemplateCC>"
        },
        {
            "name": "createdDate",
            "baseName": "createdDate",
            "type": "number"
        },
        {
            "name": "activityDate",
            "baseName": "activityDate",
            "type": "number"
        },
        {
            "name": "activityBy",
            "baseName": "activityBy",
            "type": "string"
        },
        {
            "name": "messageTitle",
            "baseName": "messageTitle",
            "type": "string"
        },
        {
            "name": "status",
            "baseName": "status",
            "type": "Template.StatusEnum"
        },
        {
            "name": "signerDetails",
            "baseName": "signerDetails",
            "type": "Array<TemplateSignerDetails>"
        },
        {
            "name": "enableSigningOrder",
            "baseName": "enableSigningOrder",
            "type": "boolean"
        },
        {
            "name": "templateName",
            "baseName": "templateName",
            "type": "string"
        },
        {
            "name": "templateDescription",
            "baseName": "templateDescription",
            "type": "string"
        },
        {
            "name": "accessType",
            "baseName": "accessType",
            "type": "Template.AccessTypeEnum"
        },
        {
            "name": "accessTid",
            "baseName": "accessTid",
            "type": "string"
        },
        {
            "name": "isTemplate",
            "baseName": "isTemplate",
            "type": "boolean"
        },
        {
            "name": "behalfOf",
            "baseName": "behalfOf",
            "type": "BehalfOf"
        },
        {
            "name": "templateLabels",
            "baseName": "templateLabels",
            "type": "Array<string>"
        },
        {
            "name": "labels",
            "baseName": "labels",
            "type": "Array<string>"
        },
        {
            "name": "brandId",
            "baseName": "brandId",
            "type": "string"
        }    ];

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

export namespace Template {
    export enum StatusEnum {
        InProgress = <any> 'InProgress',
        Completed = <any> 'Completed',
        Declined = <any> 'Declined',
        Expired = <any> 'Expired',
        Revoked = <any> 'Revoked',
        Draft = <any> 'Draft',
        Scheduled = <any> 'Scheduled'
    }
    export enum AccessTypeEnum {
        Use = <any> 'Use',
        Edit = <any> 'Edit',
        None = <any> 'None'
    }
}
