import * as config from "./config"; import * as web3 from "./web3"; import * as types from "./types"; export declare class SDK { readonly wallet_blast?: web3.Wallet; readonly clearingHouse_blast: types.ClearingHouse; readonly clearingHouse_wbtc_blast: types.ClearingHouse; readonly insuranceFund_blast: types.InsuranceFund; readonly insuranceFund_wbtc_blast: types.InsuranceFund; readonly weth_blast: types.ERC20; readonly wbtc_blast: types.ERC20; private readonly _api; /** * @param params params for initing sdk * @param params.wallet web3 wallet class for signing txs * @param params.instance instance */ constructor(params?: { rpcUrl_blast?: string; privateKey?: string; }); /** * Create a market order * @param params params for opening position * @param params.amm amm eg bayc * @param params.side BUY or SELL * @param params.margin margin * @param params.leverage leverage * @returns tx */ createMarketOrder(params: { amm: types.Amm; side: types.Side; margin: number; leverage: number; slippagePercent?: number; }, options?: { maxApprove?: boolean; skipChecks?: boolean; }, overrides?: web3.Overrides): Promise; /** * Create a limit order * @param params params for creating limit order * @param params.amm amm eg bayc * @param params.side BUY or SELL * @param params.price limit order price * @param params.margin margin * @param params.leverage leverage * @returns tx */ createLimitOrder(params: { amm: types.Amm; side: types.Side; price: number; margin: number; leverage: number; reduceOnly?: boolean; }, options?: { maxApprove?: boolean; skipChecks?: boolean; }, overrides?: web3.Overrides): Promise; /** * Create a trigger order (sl/tp) * @param params params for creating trigger order * @param params.amm amm eg bayc * @param params.trigger trigger price * @param params.size size to execute * @param params.type SL or TP * @returns tx */ createTriggerOrder(params: { amm: types.Amm; price: number; size: number; type: types.TriggerType; }, overrides?: web3.Overrides): Promise; /** * Close position * @param params params for closing position * @param params.amm amm eg bayc * @returns tx */ closePosition(params: { amm: types.Amm; closePercent?: number; slippagePercent?: number; }, overrides?: web3.Overrides): Promise; /** * Update a limit order * @param id order id * @param params params for creating limit order * @param params.amm amm eg bayc * @param params.side BUY or SELL * @param params.price limit order price * @param params.margin margin * @param params.leverage leverage * @param params.reduceOnly reduce only * @returns tx */ updateLimitOrder(params: { id: number; amm: types.Amm; order: { side: types.Side; price: number; margin: number; leverage: number; reduceOnly?: boolean; }; }, overrides?: web3.Overrides): Promise; /** * Delete a limit order * @param id order id * @param amm amm eg bayc * @returns tx */ deleteLimitOrder(params: { id: number; amm: types.Amm; }, overrides?: web3.Overrides): Promise; /** * Delete a trigger order * @param id order id * @returns tx */ deleteTriggerOrder(params: { id: number; amm: types.Amm; }, overrides?: web3.Overrides): Promise; /** * Create limit order batch * @param params limit order params * @returns tx */ createLimitOrderBatch(params: { amm: types.Amm; orders: { side: types.Side; price: number; margin: number; leverage: number; reduceOnly?: boolean; }[]; }, overrides?: web3.Overrides): Promise; /** * Delete limit order batch * @param ids order ids * @returns tx */ deleteLimitOrderBatch(params: { amm: types.Amm; ids: number[]; }, overrides?: web3.Overrides): Promise; /** * Update limit order batch * @param ids orders ids to update * @param params new limit order params * @returns tx */ updateLimitOrderBatch(params: { amm: types.Amm; ids: number[]; orders: { side: types.Side; price: number; margin: number; leverage: number; reduceOnly?: boolean; }[]; }, overrides?: web3.Overrides): Promise; /** * Add margin to position. increases margin ratio (position health) * @param params params for adding margin * @param params.amm amm eg bayc * @param params.amount margin to add * @returns tx */ addMargin(params: { amm: types.Amm; amount: number; }, overrides?: web3.Overrides): Promise; /** * Remove margin from position. decreases margin ratio and increases liq price * @param params params for removing margin * @param params.amm amm eg bayc * @param params.amount margin to remove * @returns tx */ removeMargin(params: { amm: types.Amm; amount: number; }, overrides?: web3.Overrides): Promise; approve(params: { network: types.Network; amount?: number | string; max?: boolean; amm: types.Amm; }): Promise; /** * Get position * @param amm amm eg bayc * @returns position */ getPosition(amm: types.Amm, trader?: string): Promise; /** * Get maker position * @param amm amm eg bayc * @returns position */ getMakerPosition(amm: types.Amm, trader?: string): Promise; /** * Get all limit orders * @returns all orders */ getLimitOrders(amm: types.Amm, trader?: string): Promise; /** * Get trigger orders * @returns all trigger orders */ getTriggerOrders(amm: types.Amm, trader?: string): Promise; /** * Get orderbook * @returns orderbook */ getOrderbook(amm: types.Amm): Promise; /** * Get balances * @returns balances */ getBalances(trader?: string): Promise; /** * get open pos summary * @param params.amm amm eg bayc * @param params.amount collateral amount * @param params.leverage leverage * @param params.side buy or sell * @returns open pos summary */ getOpenSummary(params: { amm: types.Amm; side: types.Side; margin: number; leverage: number; }): Promise; /** * get closes pos tx summary (market) * @param params.amm amm eg bayc * @param params.closePercent percent to close * @returns close pos market summary */ getCloseMarketSummary(params: { amm: types.Amm; closePercent?: number; }): Promise; /** * get close pos tx summary (limit) * @param params.amm amm eg bayc * @param params.limit limit order price * @returns close pos limit summary */ getCloseLimitSummary(params: { amm: types.Amm; price: number; closePercent?: number; }): Promise; /** * get upnl * @param amm amm eg bayc * @returns upnl in `eth` */ getUpnl(amm: types.Amm, trader?: string): Promise; /** * get funding payment * @param amm amm eg bayc * @returns funding payment in `eth` */ getFundingPayment(amm: types.Amm): Promise; /** * get liquidation price * @param amm amm eg bayc * @returns liquidation price in `eth` */ getLiquidationPrice(amm: types.Amm, trader?: string): Promise; /** * get max leverage for amm * @param amm amm eg bayc * @returns max leverage */ getMaxLeverage(amm: types.Amm): Promise; /** * Get mark price (trading price) * @param amm amm eg bayc * @returns mark price */ getMarkPrice(amm: types.Amm): Promise; /** * Get index price (oracle price - as per marketplaces) * @param amm amm eg bayc * @returns index price */ getIndexPrice(amm: types.Amm): Promise; /** * Get funding info * @param amm amm eg bayc * @returns funding info */ getFundingRate(amm: types.Amm): Promise; /** * Get amm info * @param amm amm eg bayc * @returns amm Info */ getAmmInfo(amm: types.Amm): Promise; /** * Get margin ratio. margin ratio = active margin / active notional * @param params.amm amm eg bayc * @returns margin ratio */ getMaintenanceMarginRatio(amm: types.Amm): Promise; /** * Get trades * @param params.amm amm eg bayc * @param params.trader trader address * @param params.from from timestamp unix (in seconds, inclusive) * @param params.to to timestamp unix (in seconds, inclusive) * @param params.sort asc or desc * @param params.page page number for pagination * @param parans.pageSize limit per page * @returns trade info */ getTrades(params?: types.TradeApiParams): Promise>; /** * Get trades * @param params.amm amm eg bayc * @param params.from from timestamp unix (in seconds, inclusive) * @param params.to to timestamp unix (in seconds, inclusive) * @param params.sort asc or desc * @param params.page page number for pagination * @param parans.pageSize limit per page * @returns funding info */ getFundings(params?: types.FundingApiParams): Promise>; /** * Get supported Amms * @returns Amms */ getSupportedAmms(): (keyof typeof types.Amm)[]; /** * Get contract addresses * @returns Amms */ getContracts(): typeof config.info.contracts; /** * get base asset amount limit * @requires baseAssetOut in `eth` * @returns base asset amount limit in `eth` */ private _getSlippageBaseAmount; /** * get quote asset amount limit * @param `side` side of existing position * @requires outputNotional in `eth` * @returns quote asset amount limit `eth` */ private _getSlippageQuoteAssetAmount; /** * get balance of quote token * @returns balance in `eth` */ private _getBalance; /** * throws if balance below amount * @requires amount in `eth` */ private _checkBalance; /** * allowance of quote token on clearing house * @returns allowance in `eth` */ private _getAllowance; /** * approves if allowance less than amount * @requires amount in `eth` */ private _checkAllowance; /** * sets approval on clearing house * @returns tx */ private _approve; /** * open market order * @returns tx */ private _openPosition; /** * close position * @returns hash */ private _closePosition; /** * add margin * @returns tx */ private _addMargin; /** * remove margin * @returns tx */ private _removeMargin; /** * get amm address */ private _getAmmAddress; /** * validate rpc and instance match */ private _validateRpcNetwork; /** * get signer address */ private _getAddress; /** * check whether amm supported for instance */ private _checkAmm; /** * check wallet exists for write */ private _checkWallet; /** * get contract instance */ private _getClearingHouseInstance; /** * get contract instance */ private _getInsuranceFundInstance; /** * get contract instance */ private _getWethInstance; /** * get contract instance */ private _getWbtcInstance; }