import { Serializable } from '../../../internal/interfaces/serializable';
export declare class TransferReq implements Serializable {
    /**
     * Currency
     */
    currency: string;
    /**
     * Transfer Amount (must be a positive integer in the currency\'s precision)
     */
    amount: string;
    /**
     * Fund transfer direction: OUT (Broker account is transferred to Broker sub-account), IN (Broker sub-account is transferred to Broker account)
     */
    direction: TransferReq.DirectionEnum;
    /**
     * Broker account types: MAIN (Funding account), TRADE (Spot trading account)
     */
    accountType: TransferReq.AccountTypeEnum;
    /**
     * Broker sub-account UID, must be the Broker sub-account created by the current Broker user.
     */
    specialUid: string;
    /**
     * Broker sub-account types: MAIN (Funding account), TRADE (Spot trading account)
     */
    specialAccountType: TransferReq.SpecialAccountTypeEnum;
    /**
     * Client Order ID, the unique identifier created by the client. It is recommended to use UUID. The maximum length is 128 bits.
     */
    clientOid: string;
    /**
     * Private constructor, please use the corresponding static methods to construct the object.
     */
    private constructor();
    /**
     * Creates a new instance of the `TransferReq` class.
     * The builder pattern allows step-by-step construction of a `TransferReq` object.
     */
    static builder(): TransferReqBuilder;
    /**
     * Creates a new instance of the `TransferReq` class with the given data.
     */
    static create(data: {
        /**
         * Currency
         */
        currency: string;
        /**
         * Transfer Amount (must be a positive integer in the currency\'s precision)
         */
        amount: string;
        /**
         * Fund transfer direction: OUT (Broker account is transferred to Broker sub-account), IN (Broker sub-account is transferred to Broker account)
         */
        direction: TransferReq.DirectionEnum;
        /**
         * Broker account types: MAIN (Funding account), TRADE (Spot trading account)
         */
        accountType: TransferReq.AccountTypeEnum;
        /**
         * Broker sub-account UID, must be the Broker sub-account created by the current Broker user.
         */
        specialUid: string;
        /**
         * Broker sub-account types: MAIN (Funding account), TRADE (Spot trading account)
         */
        specialAccountType: TransferReq.SpecialAccountTypeEnum;
        /**
         * Client Order ID, the unique identifier created by the client. It is recommended to use UUID. The maximum length is 128 bits.
         */
        clientOid: string;
    }): TransferReq;
    /**
     * Convert the object to a JSON string.
     */
    toJson(): string;
    /**
     * Create an object from a JSON string.
     */
    static fromJson(input: string): TransferReq;
    /**
     * Create an object from Js Object.
     */
    static fromObject(jsonObject: Object): TransferReq;
}
export declare namespace TransferReq {
    enum DirectionEnum {
        /**
         *
         */
        OUT,
        /**
         *
         */
        IN
    }
    enum AccountTypeEnum {
        /**
         *
         */
        MAIN,
        /**
         *
         */
        TRADE
    }
    enum SpecialAccountTypeEnum {
        /**
         *
         */
        MAIN,
        /**
         *
         */
        TRADE
    }
}
export declare class TransferReqBuilder {
    readonly obj: TransferReq;
    constructor(obj: TransferReq);
    /**
     * Currency
     */
    setCurrency(value: string): TransferReqBuilder;
    /**
     * Transfer Amount (must be a positive integer in the currency\'s precision)
     */
    setAmount(value: string): TransferReqBuilder;
    /**
     * Fund transfer direction: OUT (Broker account is transferred to Broker sub-account), IN (Broker sub-account is transferred to Broker account)
     */
    setDirection(value: TransferReq.DirectionEnum): TransferReqBuilder;
    /**
     * Broker account types: MAIN (Funding account), TRADE (Spot trading account)
     */
    setAccountType(value: TransferReq.AccountTypeEnum): TransferReqBuilder;
    /**
     * Broker sub-account UID, must be the Broker sub-account created by the current Broker user.
     */
    setSpecialUid(value: string): TransferReqBuilder;
    /**
     * Broker sub-account types: MAIN (Funding account), TRADE (Spot trading account)
     */
    setSpecialAccountType(value: TransferReq.SpecialAccountTypeEnum): TransferReqBuilder;
    /**
     * Client Order ID, the unique identifier created by the client. It is recommended to use UUID. The maximum length is 128 bits.
     */
    setClientOid(value: string): TransferReqBuilder;
    /**
     * Get the final object.
     */
    build(): TransferReq;
}
