import { Serializable } from '../../../internal/interfaces/serializable';
export declare class WithdrawalV3Req implements Serializable {
    /**
     * currency
     */
    currency: string;
    /**
     * The chainId of currency, For a currency with multiple chains, it is recommended to specify the chain parameter instead of using the default chain; you can query the chainId through the response of the GET /api/v3/currencies/{currency} interface.
     */
    chain?: string;
    /**
     * Withdrawal amount, a positive number which is a multiple of the amount precision
     */
    amount: string;
    /**
     * Address remark. If there’s no remark, it is empty. When you withdraw from other platforms to KuCoin, you need to fill in memo(tag). Be careful: If you do not fill in memo(tag), your deposit may not be available.
     */
    memo?: string;
    /**
     * Internal withdrawal or not. Default: False
     */
    isInner?: boolean;
    /**
     * Remark
     */
    remark?: string;
    /**
     * Withdrawal fee deduction type: INTERNAL, EXTERNAL, or not specified  1. INTERNAL: Deduct the transaction fees from your withdrawal amount 2. EXTERNAL: Deduct the transaction fees from your main account 3. If you don\'t specify the feeDeductType parameter, when the balance in your main account is sufficient to support the withdrawal, the system will initially deduct the transaction fees from your main account. But if the balance in your main account is not sufficient to support the withdrawal, the system will deduct the fees from your withdrawal amount. For example: Suppose you are going to withdraw 1 BTC from the KuCoin platform (transaction fee: 0.0001BTC), if the balance in your main account is insufficient, the system will deduct the transaction fees from your withdrawal amount. In this case, you will be receiving 0.9999BTC.
     */
    feeDeductType?: string;
    /**
     * Withdrawal address
     */
    toAddress: string;
    /**
     * Withdrawal type, ADDRESS (withdrawal address), UID, MAIL (email), PHONE (mobile phone number). Note: If you withdraw by uid/mail/phone, there will be rate limits: 3 times/10 seconds, 50 times/24 hours (calculated on a rolling basis based on the first request time)
     */
    withdrawType: WithdrawalV3Req.WithdrawTypeEnum;
    /**
     * Private constructor, please use the corresponding static methods to construct the object.
     */
    private constructor();
    /**
     * Creates a new instance of the `WithdrawalV3Req` class.
     * The builder pattern allows step-by-step construction of a `WithdrawalV3Req` object.
     */
    static builder(): WithdrawalV3ReqBuilder;
    /**
     * Creates a new instance of the `WithdrawalV3Req` class with the given data.
     */
    static create(data: {
        /**
         * currency
         */
        currency: string;
        /**
         * The chainId of currency, For a currency with multiple chains, it is recommended to specify the chain parameter instead of using the default chain; you can query the chainId through the response of the GET /api/v3/currencies/{currency} interface.
         */
        chain?: string;
        /**
         * Withdrawal amount, a positive number which is a multiple of the amount precision
         */
        amount: string;
        /**
         * Address remark. If there’s no remark, it is empty. When you withdraw from other platforms to KuCoin, you need to fill in memo(tag). Be careful: If you do not fill in memo(tag), your deposit may not be available.
         */
        memo?: string;
        /**
         * Internal withdrawal or not. Default: False
         */
        isInner?: boolean;
        /**
         * Remark
         */
        remark?: string;
        /**
         * Withdrawal fee deduction type: INTERNAL, EXTERNAL, or not specified  1. INTERNAL: Deduct the transaction fees from your withdrawal amount 2. EXTERNAL: Deduct the transaction fees from your main account 3. If you don\'t specify the feeDeductType parameter, when the balance in your main account is sufficient to support the withdrawal, the system will initially deduct the transaction fees from your main account. But if the balance in your main account is not sufficient to support the withdrawal, the system will deduct the fees from your withdrawal amount. For example: Suppose you are going to withdraw 1 BTC from the KuCoin platform (transaction fee: 0.0001BTC), if the balance in your main account is insufficient, the system will deduct the transaction fees from your withdrawal amount. In this case, you will be receiving 0.9999BTC.
         */
        feeDeductType?: string;
        /**
         * Withdrawal address
         */
        toAddress: string;
        /**
         * Withdrawal type, ADDRESS (withdrawal address), UID, MAIL (email), PHONE (mobile phone number). Note: If you withdraw by uid/mail/phone, there will be rate limits: 3 times/10 seconds, 50 times/24 hours (calculated on a rolling basis based on the first request time)
         */
        withdrawType: WithdrawalV3Req.WithdrawTypeEnum;
    }): WithdrawalV3Req;
    /**
     * Convert the object to a JSON string.
     */
    toJson(): string;
    /**
     * Create an object from a JSON string.
     */
    static fromJson(input: string): WithdrawalV3Req;
    /**
     * Create an object from Js Object.
     */
    static fromObject(jsonObject: Object): WithdrawalV3Req;
}
export declare namespace WithdrawalV3Req {
    enum WithdrawTypeEnum {
        /**
         *
         */
        ADDRESS,
        /**
         *
         */
        UID,
        /**
         *
         */
        MAIL,
        /**
         *
         */
        PHONE
    }
}
export declare class WithdrawalV3ReqBuilder {
    readonly obj: WithdrawalV3Req;
    constructor(obj: WithdrawalV3Req);
    /**
     * currency
     */
    setCurrency(value: string): WithdrawalV3ReqBuilder;
    /**
     * The chainId of currency, For a currency with multiple chains, it is recommended to specify the chain parameter instead of using the default chain; you can query the chainId through the response of the GET /api/v3/currencies/{currency} interface.
     */
    setChain(value: string): WithdrawalV3ReqBuilder;
    /**
     * Withdrawal amount, a positive number which is a multiple of the amount precision
     */
    setAmount(value: string): WithdrawalV3ReqBuilder;
    /**
     * Address remark. If there’s no remark, it is empty. When you withdraw from other platforms to KuCoin, you need to fill in memo(tag). Be careful: If you do not fill in memo(tag), your deposit may not be available.
     */
    setMemo(value: string): WithdrawalV3ReqBuilder;
    /**
     * Internal withdrawal or not. Default: False
     */
    setIsInner(value: boolean): WithdrawalV3ReqBuilder;
    /**
     * Remark
     */
    setRemark(value: string): WithdrawalV3ReqBuilder;
    /**
     * Withdrawal fee deduction type: INTERNAL, EXTERNAL, or not specified  1. INTERNAL: Deduct the transaction fees from your withdrawal amount 2. EXTERNAL: Deduct the transaction fees from your main account 3. If you don\'t specify the feeDeductType parameter, when the balance in your main account is sufficient to support the withdrawal, the system will initially deduct the transaction fees from your main account. But if the balance in your main account is not sufficient to support the withdrawal, the system will deduct the fees from your withdrawal amount. For example: Suppose you are going to withdraw 1 BTC from the KuCoin platform (transaction fee: 0.0001BTC), if the balance in your main account is insufficient, the system will deduct the transaction fees from your withdrawal amount. In this case, you will be receiving 0.9999BTC.
     */
    setFeeDeductType(value: string): WithdrawalV3ReqBuilder;
    /**
     * Withdrawal address
     */
    setToAddress(value: string): WithdrawalV3ReqBuilder;
    /**
     * Withdrawal type, ADDRESS (withdrawal address), UID, MAIL (email), PHONE (mobile phone number). Note: If you withdraw by uid/mail/phone, there will be rate limits: 3 times/10 seconds, 50 times/24 hours (calculated on a rolling basis based on the first request time)
     */
    setWithdrawType(value: WithdrawalV3Req.WithdrawTypeEnum): WithdrawalV3ReqBuilder;
    /**
     * Get the final object.
     */
    build(): WithdrawalV3Req;
}
