import { Serializable } from '../../../internal/interfaces/serializable';
export declare class SubAccountTransferReq implements Serializable {
    /**
     * Unique order ID created by users to identify their orders, e.g. UUID, with a maximum length of 128 bits
     */
    clientOid: string;
    /**
     * currency
     */
    currency: string;
    /**
     * Transfer amount: The amount is a positive integer multiple of the currency precision.
     */
    amount: string;
    /**
     * OUT — the master user to sub user IN — the sub user to the master user
     */
    direction: SubAccountTransferReq.DirectionEnum;
    /**
     * Account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
     */
    accountType?: SubAccountTransferReq.AccountTypeEnum;
    /**
     * Sub-account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
     */
    subAccountType?: SubAccountTransferReq.SubAccountTypeEnum;
    /**
     * the user ID of a sub-account.
     */
    subUserId?: string;
    /**
     *  Need to be defined if accountType=ISOLATED.
     */
    tag?: string;
    /**
     *  Need to be defined if subAccountType=ISOLATED.
     */
    subTag: string;
    /**
     * Private constructor, please use the corresponding static methods to construct the object.
     */
    private constructor();
    /**
     * Creates a new instance of the `SubAccountTransferReq` class.
     * The builder pattern allows step-by-step construction of a `SubAccountTransferReq` object.
     */
    static builder(): SubAccountTransferReqBuilder;
    /**
     * Creates a new instance of the `SubAccountTransferReq` class with the given data.
     */
    static create(data: {
        /**
         * Unique order ID created by users to identify their orders, e.g. UUID, with a maximum length of 128 bits
         */
        clientOid: string;
        /**
         * currency
         */
        currency: string;
        /**
         * Transfer amount: The amount is a positive integer multiple of the currency precision.
         */
        amount: string;
        /**
         * OUT — the master user to sub user IN — the sub user to the master user
         */
        direction: SubAccountTransferReq.DirectionEnum;
        /**
         * Account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
         */
        accountType?: SubAccountTransferReq.AccountTypeEnum;
        /**
         * Sub-account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
         */
        subAccountType?: SubAccountTransferReq.SubAccountTypeEnum;
        /**
         * the user ID of a sub-account.
         */
        subUserId?: string;
        /**
         *  Need to be defined if accountType=ISOLATED.
         */
        tag?: string;
        /**
         *  Need to be defined if subAccountType=ISOLATED.
         */
        subTag: string;
    }): SubAccountTransferReq;
    /**
     * Convert the object to a JSON string.
     */
    toJson(): string;
    /**
     * Create an object from a JSON string.
     */
    static fromJson(input: string): SubAccountTransferReq;
    /**
     * Create an object from Js Object.
     */
    static fromObject(jsonObject: Object): SubAccountTransferReq;
}
export declare namespace SubAccountTransferReq {
    enum DirectionEnum {
        /**
         *
         */
        IN,
        /**
         *
         */
        OUT
    }
    enum AccountTypeEnum {
        /**
         * Funding account
         */
        MAIN,
        /**
         * Spot account
         */
        TRADE,
        /**
         * Margin account
         */
        MARGIN,
        /**
         * Futures account
         */
        CONTRACT,
        /**
         * Option account
         */
        OPTION
    }
    enum SubAccountTypeEnum {
        /**
         *
         */
        MAIN,
        /**
         *
         */
        TRADE,
        /**
         *
         */
        MARGIN,
        /**
         *
         */
        CONTRACT
    }
}
export declare class SubAccountTransferReqBuilder {
    readonly obj: SubAccountTransferReq;
    constructor(obj: SubAccountTransferReq);
    /**
     * Unique order ID created by users to identify their orders, e.g. UUID, with a maximum length of 128 bits
     */
    setClientOid(value: string): SubAccountTransferReqBuilder;
    /**
     * currency
     */
    setCurrency(value: string): SubAccountTransferReqBuilder;
    /**
     * Transfer amount: The amount is a positive integer multiple of the currency precision.
     */
    setAmount(value: string): SubAccountTransferReqBuilder;
    /**
     * OUT — the master user to sub user IN — the sub user to the master user
     */
    setDirection(value: SubAccountTransferReq.DirectionEnum): SubAccountTransferReqBuilder;
    /**
     * Account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
     */
    setAccountType(value: SubAccountTransferReq.AccountTypeEnum): SubAccountTransferReqBuilder;
    /**
     * Sub-account type: MAIN, TRADE, CONTRACT, MARGIN, ISOLATED
     */
    setSubAccountType(value: SubAccountTransferReq.SubAccountTypeEnum): SubAccountTransferReqBuilder;
    /**
     * the user ID of a sub-account.
     */
    setSubUserId(value: string): SubAccountTransferReqBuilder;
    /**
     *  Need to be defined if accountType=ISOLATED.
     */
    setTag(value: string): SubAccountTransferReqBuilder;
    /**
     *  Need to be defined if subAccountType=ISOLATED.
     */
    setSubTag(value: string): SubAccountTransferReqBuilder;
    /**
     * Get the final object.
     */
    build(): SubAccountTransferReq;
}
