/**
 * Adyen for Platforms: Account API
 * The Account API provides endpoints for managing account-related entities on your platform. These related entities include account holders, accounts, bank accounts, shareholders, and KYC-related documents. The management operations include actions such as creation, retrieval, updating, and deletion of them.  For more information, refer to our [documentation](https://docs.adyen.com/platforms). ## Authentication To connect to the Account API, you must use basic authentication credentials of your web service user. If you don\'t have one, contact the [Adyen Support Team](https://support.adyen.com/hc/en-us/requests/new). Then use its credentials to authenticate your request, for example:  ``` curl -U \"ws@MarketPlace.YourMarketPlace\":\"YourWsPassword\" \\ -H \"Content-Type: application/json\" \\ ... ``` Note that when going live, you need to generate new web service user credentials to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).  ## Versioning The Account API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.  For example: ``` https://cal-test.adyen.com/cal/services/Account/v6/createAccountHolder ```
 *
 * The version of the OpenAPI document: 6
 * 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 the class manually.
 */

import {Amount} from './amount';

export class AccountPayoutState {
    /**
    * Indicates whether payouts are allowed. This field is the overarching payout status, and is the aggregate of multiple conditions (e.g., KYC status, disabled flag, etc). If this field is false, no payouts will be permitted for any of the account holder\'s accounts. If this field is true, payouts will be permitted for any of the account holder\'s accounts.
    */
    'allowPayout'?: boolean;
    /**
    * The reason why payouts (to all of the account holder\'s accounts) have been disabled (by the platform). If the `disabled` field is true, this field can be used to explain why.
    */
    'disableReason'?: string;
    /**
    * Indicates whether payouts have been disabled (by the platform) for all of the account holder\'s accounts. A platform may enable and disable this field at their discretion. If this field is true, `allowPayout` will be false and no payouts will be permitted for any of the account holder\'s accounts. If this field is false, `allowPayout` may or may not be enabled, depending on other factors.
    */
    'disabled'?: boolean;
    /**
    * The reason why payouts (to all of the account holder\'s accounts) have been disabled (by Adyen). If payouts have been disabled by Adyen, this field will explain why. If this field is blank, payouts have not been disabled by Adyen.
    */
    'notAllowedReason'?: string;
    'payoutLimit'?: Amount;
    /**
    * The payout tier that the account holder occupies.
    */
    'tierNumber'?: number;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "allowPayout",
            "baseName": "allowPayout",
            "type": "boolean"
        },
        {
            "name": "disableReason",
            "baseName": "disableReason",
            "type": "string"
        },
        {
            "name": "disabled",
            "baseName": "disabled",
            "type": "boolean"
        },
        {
            "name": "notAllowedReason",
            "baseName": "notAllowedReason",
            "type": "string"
        },
        {
            "name": "payoutLimit",
            "baseName": "payoutLimit",
            "type": "Amount"
        },
        {
            "name": "tierNumber",
            "baseName": "tierNumber",
            "type": "number"
        }    ];

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

