import type { RestFetcher } from '../rest.js';
export declare const createRouter: (request: RestFetcher) => {
    futures: {
        addMargin: (body: {
            amount: number;
            id: import("../index.js").UUID;
        }) => Promise<import("./futures/types.js").FuturesRunningTrade>;
        cancelAllTrades: () => Promise<{
            trades: import("./futures/types.js").FuturesCanceledTrade[];
        }>;
        cancelTrade: (body: {
            id: import("../index.js").UUID;
        }) => Promise<import("./futures/types.js").FuturesCanceledTrade>;
        cashIn: (body: {
            amount: number;
            id: import("../index.js").UUID;
        }) => Promise<import("./futures/types.js").FuturesRunningTrade>;
        closeAllTrades: () => Promise<{
            trades: import("./futures/types.js").FuturesClosedTrade[];
        }>;
        closeTrade: (query: {
            id: import("../index.js").UUID;
        }) => Promise<import("./futures/types.js").FuturesClosedTrade>;
        getCarryFeesHistory: (query: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            fee: number;
            fixingId: import("../index.js").UUID;
            id: import("../index.js").UUID;
            ts: number;
        }[]>;
        getFixingHistory: (query?: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            feeRate: number;
            id: import("../index.js").UUID;
            price: number;
            time: number;
        }[]>;
        getIndexHistory: (query?: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            time: number;
            value: number;
        }[]>;
        getLeaderboard: () => Promise<import("./user/types.js").Leaderboard>;
        getMarketDetails: () => Promise<import("./futures/types.js").FuturesMarketDetails>;
        getOHLCHistory: (query: {
            from: number;
            limit?: number;
            range: import("./futures/types.js").OHLCRange;
            to: number;
        }) => Promise<import("./futures/types.js").OHLC[]>;
        getPriceHistory: (query?: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            time: number;
            value: number;
        }[]>;
        getTicker: () => Promise<import("./futures/types.js").FuturesTicker>;
        getTrade: (params: {
            id: import("../index.js").UUID;
        }) => Promise<import("./futures/types.js").FuturesTrade>;
        getTrades: (query: {
            from?: number;
            limit?: number;
            to?: number;
            type: import("./futures/types.js").FuturesTradeStatus;
        }) => Promise<import("./futures/types.js").FuturesTrade[]>;
        newTrade: (body: {
            leverage: number;
            margin?: number;
            price?: number;
            quantity?: number;
            side: import("./futures/types.js").FuturesTradeSide;
            stoploss?: number;
            takeprofit?: number;
            type: import("./futures/types.js").FuturesTradeType;
        }) => Promise<import("./futures/types.js").FuturesOpenOrRunningTrade>;
        updateTrade: (body: {
            id: import("../index.js").UUID;
            type: "stoploss" | "takeprofit";
            value: number;
        }) => Promise<import("./futures/types.js").FuturesOpenOrRunningTrade>;
    };
    notifications: {
        getAll: () => Promise<import("./notifications/types.js").Notification[]>;
        markAllAsRead: () => Promise<void>;
    };
    options: {
        closeAllTrades: () => Promise<import("./options/types.js").OptionsTradeClosed[]>;
        closeTrade: (query: {
            id: import("../index.js").UUID;
        }) => Promise<import("./options/types.js").OptionsTradeClosed>;
        getInstrument: (body: {
            instrumentName: string;
        }) => Promise<import("./options/types.js").OptionsInstrument>;
        getInstruments: () => Promise<{
            instruments: string[];
        }>;
        getMarketDetails: () => Promise<import("./options/types.js").OptionsMarketDetails>;
        getTrade: (params: {
            id: import("../index.js").UUID;
        }) => Promise<import("./options/types.js").OptionsTrade>;
        getTrades: (query?: {
            from: number;
            limit?: number;
            status: import("./options/types.js").OptionsTradeStatus;
            to: number;
        }) => Promise<import("./options/types.js").OptionsTrade[]>;
        getVolatilityIndex: () => Promise<import("./options/types.js").OptionsVolatilityIndex>;
        newTrade: (body: {
            instrumentName: string;
            quantity: number;
            settlement: import("./options/types.js").OptionsSettlement;
            side: import("./options/types.js").OptionsSide;
        }) => Promise<import("./options/types.js").OptionsTradeRunning>;
        updateTrade: (body: {
            id: import("../index.js").UUID;
            settlement: import("./options/types.js").OptionsSettlement;
        }) => Promise<import("./options/types.js").OptionsTradeRunningWithDelta>;
    };
    oracle: {
        getIndex: (query: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            index: number;
            time: number;
        }[]>;
        getLastPrice: (query: {
            from: number;
            limit?: number;
            to: number;
        }) => Promise<{
            lastPrice: number;
            time: number;
        }>;
    };
    swaps: {
        getSwap: (params: {
            swapId: import("../index.js").UUID;
        }) => Promise<import("./swaps/types.js").Swap>;
        getSwapBySourceId: (params: {
            sourceId: import("../index.js").UUID;
        }, query: {
            source: import("./swaps/types.js").SwapSource;
        }) => Promise<import("./swaps/types.js").Swap>;
        getSwaps: (query?: {
            from?: number;
            limit?: number;
            to?: number;
        }) => Promise<import("./swaps/types.js").Swap[]>;
        newSwap: (body: {
            inAmount: number;
            inAsset: import("./swaps/types.js").SwapAsset;
            outAsset: import("./swaps/types.js").SwapAsset;
        }) => Promise<import("./swaps/types.js").Swap>;
    };
    user: {
        deposit: (body: {
            amount: number;
        }) => Promise<{
            depositId: import("../index.js").UUID;
            expiry: number;
            paymentRequest: string;
        }>;
        depositSyntheticUsd: (body: {
            amount: number;
            currency: import("./user/types.js").Currency;
        }) => Promise<{
            depositId: import("../index.js").UUID;
            expiry: number;
            paymentRequest: string;
            syntheticUsdAmount: number;
        }>;
        get: () => Promise<import("./user/types.js").User>;
        getBitcoinAddresses: (query?: {
            current: boolean;
        }) => Promise<{
            address: string;
            creationTs: number;
            isUsed: boolean;
        }[]>;
        getDeposit: (params: {
            depositId: import("../index.js").UUID;
        }) => Promise<import("./user/types.js").Deposit>;
        getDeposits: (query?: {
            type: import("./user/types.js").DepositType;
        }) => Promise<import("./user/types.js").Deposit[]>;
        getWithdrawal: (params: {
            id: import("../index.js").UUID;
        }) => Promise<import("./user/types.js").WithdrawalCondensed>;
        getWithdrawals: () => Promise<import("./user/types.js").WithdrawalCondensed[]>;
        newBitcoinAddress: (body: {
            format: "p2tr" | "p2wpkh";
        }) => Promise<{
            address: string;
            creationTs: number;
        }>;
        transfer: (body: {
            amount: number;
            toUsername: string;
        }) => Promise<{
            amount: number;
            to: string;
        }>;
        update: (body: {
            autoWithdrawEnabled?: boolean;
            autoWithdrawLightningAddress?: boolean;
            nostrPubkey?: string;
            showLeaderboard?: boolean;
            username?: string;
            useTaprootAddresses?: boolean;
        }) => Promise<import("./user/types.js").User>;
        withdraw: (body: {
            invoice: string;
            quoteId?: import("../index.js").UUID;
        }) => Promise<{
            amount?: number;
            fee?: number;
            id: import("../index.js").UUID;
            paymentHash?: string;
            successTime?: number;
        }>;
        withdrawSyntheticUsd: (body: {
            amount: number;
            currency: import("./user/types.js").Currency;
        }) => Promise<{
            amount: number;
            currency: import("./user/types.js").Currency;
            feeReserve: number;
            minBalanceAfter: number;
            quoteId: import("../index.js").UUID;
            validUntil: number;
        }>;
    };
};
