ftx-api-typed
Version:
Node.js/typescript connector for FTX's REST APIs and WebSockets
238 lines (237 loc) • 14.1 kB
TypeScript
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>;
}