/*
 * The version of the OpenAPI document: v2
 * Contact: developer-experience@adyen.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit this class manually.
 */

import { Individual } from './individual';
import { LegalEntityAssociation } from './legalEntityAssociation';
import { Organization } from './organization';
import { SoleProprietorship } from './soleProprietorship';

export class LegalEntityInfo {
    /**
    * List of legal entities associated with the current legal entity. For example, ultimate beneficial owners associated with an organization through ownership or control, or as signatories.
    */
    'entityAssociations'?: Array<LegalEntityAssociation>;
    'individual'?: Individual;
    'organization'?: Organization;
    /**
    * Your reference for the legal entity, maximum 150 characters.
    */
    'reference'?: string;
    'soleProprietorship'?: SoleProprietorship;
    /**
    * The type of legal entity.   Possible values: **individual**, **organization**, or **soleProprietorship**.
    */
    'type': LegalEntityInfo.TypeEnum;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "entityAssociations",
            "baseName": "entityAssociations",
            "type": "Array<LegalEntityAssociation>"
        },
        {
            "name": "individual",
            "baseName": "individual",
            "type": "Individual"
        },
        {
            "name": "organization",
            "baseName": "organization",
            "type": "Organization"
        },
        {
            "name": "reference",
            "baseName": "reference",
            "type": "string"
        },
        {
            "name": "soleProprietorship",
            "baseName": "soleProprietorship",
            "type": "SoleProprietorship"
        },
        {
            "name": "type",
            "baseName": "type",
            "type": "LegalEntityInfo.TypeEnum"
        }    ];

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

export namespace LegalEntityInfo {
    export enum TypeEnum {
        Individual = <any> 'individual',
        Organization = <any> 'organization',
        SoleProprietorship = <any> 'soleProprietorship',
        Trust = <any> 'trust',
        UnincorporatedPartnership = <any> 'unincorporatedPartnership'
    }
}
