UNPKG

ftx-api-typed

Version:

Node.js/typescript connector for FTX's REST APIs and WebSockets

238 lines (237 loc) 14.1 kB
import { AxiosRequestConfig } from 'axios'; import { GenericAPIResponse, RestClientOptions } from './util/requestUtils'; import RequestWrapper from './util/requestWrapper'; import { AccountSummary, ActiveFuturesPosition, ApiKeyInfo, Balances, CancelAllOrdersReq, CancelNftAuctionReq, ChangeSubNameReq, DepositAddressReq, EditNftGallerySettingsReq, FillsReq, FundingPaymentsReq, FundingRates, FutureCoin, Futures, FutureStats, HistoricalIndex, HistoricalIndexReq, HistoricalPrices, HistoricalPricesReq, Market, Markets, ModifyClientIdOrderReq, ModifyOrderReq, ModifyTriggerOrderReq, NewLendingOfferReq, NewOrderReq, NewQuoteReq, NewSavedAddressReq, NewTriggerOrderReq, NftAuctionEditReq, NftAuctionReq, NftBidReq, OpenTriggerOrdersReq, Orderbook, OrderbookReq, OrderHistoryReq, QuoteReq, RedeemNftReq, StakeBalances, StakeRequest, StakeRewards, Stakes, Subaccount, SubaccountBalance, SubaccountTransfer, TimeRange, TimeRangeLimit, Trades, TradesReq, TransferBetweenSubReq, TriggerOrderHistoryReq, UnstakeRequests, WithdrawalReq, AllNftTrades, NftAccountInfo, NftBalances, NftCollections, NftDeposits, NftFills, NftGallery, NftGallerySettings, NftInfo, NftList, NftRedemption, NftTrades, NftWithdrawals, Coins, BalancesAllAccounts, DepositAddress, DepositHistory, WithdrawalHistory, WithdrawalRequest, Airdrop, SavedAddress, OpenOrders, OrderHistory, OpenTriggerOrders, ConditionalOrderTriggers, TriggerOrderHistory, Order, TriggerOrder, QuoteStatus, BorrowRate, LendingRate, BorrowedAmount, MarketInfo, BorrowHistory, LendingOffer, LendingInfo, LendingHistory, Fills, AcceptedOptionsQuote, CancelledQuote, CancelledQuoteRequest, MyQuoteRequest, Options24hVolume, OptionsAccountInfo, OptionsFill, OptionsHistoricalVolumes, OptionsOpenInterest, OptionsPosition, OptionsTrade, QuoteForMyQuoteRequest, QuoteRequest, FundingPayment, LeveragedToken, LeveragedTokenBalance, LeveragedTokenCreationRequest, LeveragedTokenCreation, LeveragedTokenRedemptionRequest, LeveragedTokenRedemption, WithdrawalFeeReq, WithdrawalFee, OtcHistory, FiatDepositInstructions, CreateFiatDepositReq, FiatDeposit } from './types/rest'; export declare class RestClient { protected requestWrapper: RequestWrapper; /** * @public Creates an instance of the inverse REST API client. * * @param {string} key - your API key * @param {string} secret - your API secret * @param {RestClientOptions} [restClientOptions={}] options to configure REST API connectivity * @param {AxiosRequestConfig} [requestOptions={}] HTTP networking options for axios */ constructor(key?: string | undefined, secret?: string | undefined, restClientOptions?: RestClientOptions, requestOptions?: AxiosRequestConfig, axiosInstance?: import("axios").AxiosInstance); /** expose low level api methods */ api(): { get: <T>(endpoint: string, params?: any) => GenericAPIResponse<T>; post: <T_1>(endpoint: string, params?: any) => GenericAPIResponse<T_1>; delete: <T_2>(endpoint: string, params?: any) => GenericAPIResponse<T_2>; }; /** * Misc possible undocumented endpoints - these may not always work **/ getRebateHistory(): GenericAPIResponse<unknown>; getAnnouncements(language?: string): GenericAPIResponse<unknown>; requestDust(toCoin: string): GenericAPIResponse<unknown>; getDustStatus(quoteId: string): GenericAPIResponse<unknown>; acceptDust(quoteId: string): GenericAPIResponse<unknown>; /** * * Subaccount Endpoints * https://docs.ftx.com/#subaccounts * **/ getSubaccounts(): GenericAPIResponse<Subaccount[]>; createSubaccount(nickname: string): GenericAPIResponse<Subaccount>; changeSubaccountName(params: ChangeSubNameReq): GenericAPIResponse<null>; deleteSubaccount(nickname: string): GenericAPIResponse<null>; getSubaccountBalances(nickname: string): GenericAPIResponse<SubaccountBalance[]>; transferBetweenSubaccounts(params: TransferBetweenSubReq): GenericAPIResponse<SubaccountTransfer>; /** * * Market Endpoints * https://docs.ftx.com/#markets * **/ getMarkets(): GenericAPIResponse<Markets>; getMarket(marketName: string): GenericAPIResponse<Market>; getOrderbook(params: OrderbookReq): GenericAPIResponse<Orderbook>; getTrades(params: TradesReq): GenericAPIResponse<Trades>; getHistoricalPrices(params: HistoricalPricesReq): GenericAPIResponse<HistoricalPrices>; /** * * Futures Endpoints * https://docs.ftx.com/#futures * **/ listAllFutures(): GenericAPIResponse<Futures>; getFuture(futureName: string): GenericAPIResponse<FutureCoin>; getFutureStats(futureName: string): GenericAPIResponse<FutureStats>; getFundingRates(): GenericAPIResponse<FundingRates>; getIndexWeights(futuresIndexName: string): GenericAPIResponse<Record<string, number>>; getExpiredFutures(): GenericAPIResponse<Futures>; getHistoricalIndex(params: HistoricalIndexReq): GenericAPIResponse<HistoricalIndex>; /** * * Account Endpoints * https://docs.ftx.com/#account * **/ getAccount(): GenericAPIResponse<AccountSummary>; getPositions(showAveragePrice?: boolean): GenericAPIResponse<ActiveFuturesPosition[]>; setAccountLeverage(leverage: number): GenericAPIResponse<unknown>; /** * * Wallet Endpoints * https://docs.ftx.com/#wallet * **/ getCoins(): GenericAPIResponse<Coins>; getBalances(): GenericAPIResponse<Balances>; getBalancesAllAccounts(): GenericAPIResponse<BalancesAllAccounts>; getDepositAddress(params: DepositAddressReq): GenericAPIResponse<DepositAddress>; getDepositHistory(params?: TimeRangeLimit): GenericAPIResponse<DepositHistory>; getWithdrawalFee(params?: WithdrawalFeeReq): GenericAPIResponse<WithdrawalFee>; getWithdrawalHistory(params?: TimeRangeLimit): GenericAPIResponse<WithdrawalHistory>; requestWithdrawal(params: WithdrawalReq): GenericAPIResponse<WithdrawalRequest>; getAirdrops(params?: TimeRangeLimit): GenericAPIResponse<Airdrop[]>; getSavedAddresses(coin?: string): GenericAPIResponse<SavedAddress[]>; createSavedAddress(params: NewSavedAddressReq): GenericAPIResponse<SavedAddress>; deleteSavedAddress(savedAddressId: number): GenericAPIResponse<"Address deleted">; getFiatDepositInstructions(currency: string): GenericAPIResponse<FiatDepositInstructions>; createFiatDeposit(params: CreateFiatDepositReq): GenericAPIResponse<FiatDeposit>; deleteFiatDeposit(id: string | number): GenericAPIResponse<"Success">; /** * * Order Endpoints * https://docs.ftx.com/#orders * **/ getOpenOrders(market?: string): GenericAPIResponse<OpenOrders>; getOrderHistory(params?: OrderHistoryReq): GenericAPIResponse<OrderHistory>; getOpenTriggerOrders(params?: OpenTriggerOrdersReq): GenericAPIResponse<OpenTriggerOrders>; getTriggerOrderTriggers(conditionalOrderId: string): GenericAPIResponse<ConditionalOrderTriggers>; getTriggerOrderHistory(params?: TriggerOrderHistoryReq): GenericAPIResponse<TriggerOrderHistory>; placeOrder(params: NewOrderReq): GenericAPIResponse<Order>; placeTriggerOrder(params: NewTriggerOrderReq): GenericAPIResponse<TriggerOrder>; modifyOrder(params: ModifyOrderReq): GenericAPIResponse<Order>; modifyOrderByClientId(clientOrderId: string, params: ModifyClientIdOrderReq): GenericAPIResponse<Order>; modifyTriggerOrder(orderId: string, params: ModifyTriggerOrderReq): GenericAPIResponse<TriggerOrder>; getOrderStatus(orderId: string): GenericAPIResponse<Order>; getOrderStatusByClientId(clientOrderId: string): GenericAPIResponse<Order>; cancelOrder(orderId: string): GenericAPIResponse<"Order queued for cancellation">; cancelOrderByClientId(clientOrderId: string): GenericAPIResponse<"Order queued for cancellation">; cancelOpenTriggerOrder(conditionalOrderId: string): GenericAPIResponse<"Order cancelled">; cancelAllOrders(params?: CancelAllOrdersReq): GenericAPIResponse<"Orders queued for cancelation">; /** * * Convert Endpoints * https://docs.ftx.com/#convert * **/ requestQuote(params: QuoteReq): GenericAPIResponse<{ quoteId: number; }>; getQuoteStatus(quoteId: string, market?: string): GenericAPIResponse<QuoteStatus>; acceptQuote(quoteId: string): GenericAPIResponse<null>; /** @warning @description undocumented FTX API endpoint */ getOtcHistory(params?: Partial<TimeRange>): GenericAPIResponse<OtcHistory>; /** * * Spot Margin Endpoints * https://docs.ftx.com/#spot-margin * **/ getBorrowRates(): GenericAPIResponse<BorrowRate[]>; getLendingRates(): GenericAPIResponse<LendingRate[]>; getDailyBorrowedAmounts(): GenericAPIResponse<BorrowedAmount[]>; getMarketInfo(market?: string): GenericAPIResponse<MarketInfo>; getBorrowHistory(params?: Partial<TimeRange>): GenericAPIResponse<BorrowHistory>; getLendingHistory(): GenericAPIResponse<LendingHistory>; getLendingOffers(): GenericAPIResponse<LendingOffer[]>; getLendingInfo(): GenericAPIResponse<LendingInfo>; submitLendingOffer(params: NewLendingOfferReq): GenericAPIResponse<null>; /** * * Misc Endpoints (fills, & funding) * https://docs.ftx.com/#fills * **/ getFills(params: FillsReq): GenericAPIResponse<Fills>; getFundingPayments(params?: FundingPaymentsReq): GenericAPIResponse<FundingPayment>; /** * * Leveraged Tokens Endpoints * https://docs.ftx.com/#leveraged-tokens * **/ listLeveragedTokens(): GenericAPIResponse<LeveragedToken[]>; getLeveragedTokenInfo(tokenName: string): GenericAPIResponse<LeveragedToken[]>; getLeveragedTokenBalances(): GenericAPIResponse<LeveragedTokenBalance[]>; listLeveragedTokenCreationRequests(): GenericAPIResponse<LeveragedTokenCreationRequest[]>; requestLeveragedTokenCreation(tokenName: string, size: number): GenericAPIResponse<LeveragedTokenCreation>; listLeveragedTokenRedemptionRequests(): GenericAPIResponse<LeveragedTokenRedemptionRequest[]>; requestLeveragedTokenRedemption(tokenName: string, size: number): GenericAPIResponse<LeveragedTokenRedemption>; /** * * Options Endpoints * https://docs.ftx.com/#options * **/ listQuoteRequests(): GenericAPIResponse<QuoteRequest[]>; getMyQuoteRequests(): GenericAPIResponse<MyQuoteRequest[]>; createQuoteRequest(params: NewQuoteReq): GenericAPIResponse<MyQuoteRequest>; cancelQuoteRequest(quoteRequestId: string): GenericAPIResponse<CancelledQuoteRequest>; getQuotesForQuoteRequest(quoteRequestId: string): GenericAPIResponse<QuoteForMyQuoteRequest[]>; createQuote(quoteRequestId: string, price: number): GenericAPIResponse<QuoteForMyQuoteRequest>; getMyQuotes(): GenericAPIResponse<QuoteForMyQuoteRequest[]>; cancelQuote(quoteId: string): GenericAPIResponse<CancelledQuote>; acceptOptionsQuote(quoteId: string): GenericAPIResponse<AcceptedOptionsQuote>; getOptionsAccountInfo(): GenericAPIResponse<OptionsAccountInfo>; getOptionsPositions(): GenericAPIResponse<OptionsPosition[]>; getPublicOptionsTrades(params?: TimeRangeLimit): GenericAPIResponse<OptionsTrade[]>; getOptionsFills(params?: TimeRangeLimit): GenericAPIResponse<OptionsFill[]>; get24hOptionVolume(): GenericAPIResponse<Options24hVolume>; getOptionsHistoricalVolumes(params?: TimeRangeLimit): GenericAPIResponse<OptionsHistoricalVolumes>; getOptionsOpenInterest(): GenericAPIResponse<{ "openInterest": number; }>; getOptionsHistoricalOpenInterest(params?: TimeRangeLimit): GenericAPIResponse<OptionsOpenInterest>; /** * * SRM Staking Endpoints * https://docs.ftx.com/#srm-staking * **/ getStakes(): GenericAPIResponse<Stakes>; getUnstakeRequests(): GenericAPIResponse<UnstakeRequests>; getStakeBalances(): GenericAPIResponse<StakeBalances>; createUnstakeRequest(coin: string, size: number): GenericAPIResponse<UnstakeRequests>; cancelUnstakeRequest(unstakeRequestId: string): GenericAPIResponse<[status: "Cancelled"]>; getStakingRewards(): GenericAPIResponse<StakeRewards>; createStakeRequest(coin: string, size: number): GenericAPIResponse<StakeRequest>; getServerTime(): GenericAPIResponse<string>; getApiKeyInfo(): GenericAPIResponse<ApiKeyInfo>; /** * * NFT Endpoints * https://docs.ftx.com/#nfts * **/ listNfts(): GenericAPIResponse<NftList>; getNftInfo(nftId: number): GenericAPIResponse<NftInfo>; getNftTrades(nftId: number, params?: TimeRange): GenericAPIResponse<NftTrades>; getAllNftTrades(params?: TimeRangeLimit): GenericAPIResponse<AllNftTrades>; getNftAccountInfo(nftId: number): GenericAPIResponse<NftAccountInfo>; getNftCollections(): GenericAPIResponse<NftCollections>; getNftBalances(): GenericAPIResponse<NftBalances>; makeNftOffer(params: NftBidReq): GenericAPIResponse<NftInfo>; buyNft(params: NftBidReq): GenericAPIResponse<NftInfo>; createNftAuction(params: NftAuctionReq): GenericAPIResponse<NftInfo>; editNftAuction(params: NftAuctionEditReq): GenericAPIResponse<NftInfo>; cancelNftAuction(params: CancelNftAuctionReq): GenericAPIResponse<NftInfo>; placeNftBid(params: NftBidReq): GenericAPIResponse<NftInfo>; getNftDeposits(params: Required<TimeRange>): GenericAPIResponse<NftDeposits>; getNftWithdrawls(params: Required<TimeRange>): GenericAPIResponse<NftWithdrawals>; getNftFills(params: Required<TimeRange>): GenericAPIResponse<NftFills>; redeemNft(params: RedeemNftReq): GenericAPIResponse<NftRedemption>; getNftGallery(gallery_id: number): GenericAPIResponse<NftGallery>; getNftGallerySettings(): GenericAPIResponse<NftGallerySettings>; editNftGallerySettings(params: EditNftGallerySettingsReq): GenericAPIResponse<unknown>; /** * @deprecated move this somewhere else, because endpoints shouldn't be hardcoded here */ getTimeOffset(): Promise<number>; }