import { Serializable } from '../../../internal/interfaces/serializable';
export declare class InnerTransferReq 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;
    /**
     * Receiving Account Type: main, trade, margin, isolated, margin_v2, isolated_v2, contract
     */
    to: InnerTransferReq.ToEnum;
    /**
     * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
     */
    fromTag?: string;
    /**
     * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
     */
    toTag?: string;
    /**
     * Payment Account Type: main, trade, margin, isolated, margin_v2, isolated_v2
     */
    from: InnerTransferReq.FromEnum;
    /**
     * Private constructor, please use the corresponding static methods to construct the object.
     */
    private constructor();
    /**
     * Creates a new instance of the `InnerTransferReq` class.
     * The builder pattern allows step-by-step construction of a `InnerTransferReq` object.
     */
    static builder(): InnerTransferReqBuilder;
    /**
     * Creates a new instance of the `InnerTransferReq` 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;
        /**
         * Receiving Account Type: main, trade, margin, isolated, margin_v2, isolated_v2, contract
         */
        to: InnerTransferReq.ToEnum;
        /**
         * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
         */
        fromTag?: string;
        /**
         * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
         */
        toTag?: string;
        /**
         * Payment Account Type: main, trade, margin, isolated, margin_v2, isolated_v2
         */
        from: InnerTransferReq.FromEnum;
    }): InnerTransferReq;
    /**
     * Convert the object to a JSON string.
     */
    toJson(): string;
    /**
     * Create an object from a JSON string.
     */
    static fromJson(input: string): InnerTransferReq;
    /**
     * Create an object from Js Object.
     */
    static fromObject(jsonObject: Object): InnerTransferReq;
}
export declare namespace InnerTransferReq {
    enum ToEnum {
        /**
         * Funding account
         */
        MAIN,
        /**
         * Spot account
         */
        TRADE,
        /**
         * Cross margin account
         */
        MARGIN,
        /**
         * Isolated margin account
         */
        ISOLATED,
        /**
         * Cross margin account
         */
        MARGIN_V2,
        /**
         * Isolated margin account
         */
        ISOLATED_V2,
        /**
         * Option account
         */
        OPTION
    }
    enum FromEnum {
        /**
         * Funding account
         */
        MAIN,
        /**
         * Spot account
         */
        TRADE,
        /**
         * Cross margin account
         */
        MARGIN,
        /**
         * Isolated margin account
         */
        ISOLATED,
        /**
         * Cross margin account
         */
        MARGIN_V2,
        /**
         * Isolated margin account
         */
        ISOLATED_V2,
        /**
         * Option account
         */
        OPTION
    }
}
export declare class InnerTransferReqBuilder {
    readonly obj: InnerTransferReq;
    constructor(obj: InnerTransferReq);
    /**
     * Unique order ID created by users to identify their orders, e.g. UUID, with a maximum length of 128 bits
     */
    setClientOid(value: string): InnerTransferReqBuilder;
    /**
     * currency
     */
    setCurrency(value: string): InnerTransferReqBuilder;
    /**
     * Transfer amount: The amount is a positive integer multiple of the currency precision.
     */
    setAmount(value: string): InnerTransferReqBuilder;
    /**
     * Receiving Account Type: main, trade, margin, isolated, margin_v2, isolated_v2, contract
     */
    setTo(value: InnerTransferReq.ToEnum): InnerTransferReqBuilder;
    /**
     * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
     */
    setFromTag(value: string): InnerTransferReqBuilder;
    /**
     * Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT
     */
    setToTag(value: string): InnerTransferReqBuilder;
    /**
     * Payment Account Type: main, trade, margin, isolated, margin_v2, isolated_v2
     */
    setFrom(value: InnerTransferReq.FromEnum): InnerTransferReqBuilder;
    /**
     * Get the final object.
     */
    build(): InnerTransferReq;
}
