UNPKG

@firefly-exchange/firefly-client

Version:

The Firefly Client Library allows traders to sign, create, retrieve and listen to orders on Firefly Exchange.

742 lines (741 loc) 19 kB
import { MarketSymbol, ORDER_STATUS, ORDER_SIDE, TIME_IN_FORCE, MARGIN_TYPE, ORDER_TYPE, address, CANCEL_REASON, Interval } from "@firefly-exchange/library"; export interface GetTransactionHistoryRequest { symbol?: MarketSymbol; pageSize?: number; pageNumber?: number; } export interface GetFundingHistoryRequest { symbol?: MarketSymbol; pageSize?: number; cursor?: number; parentAddress?: string; } export interface GetTransferHistoryRequest { pageSize?: number; cursor?: number; action?: string; } export interface GetOrderRequest extends GetTransactionHistoryRequest { orderId?: number; orderHashes?: string[]; statuses: ORDER_STATUS[]; orderType?: ORDER_TYPE[]; parentAddress?: string; } export interface GetPositionRequest extends GetTransactionHistoryRequest { parentAddress?: string; } export interface RequiredOrderFields { symbol: MarketSymbol; price: number; quantity: number; side: ORDER_SIDE; orderType: ORDER_TYPE; triggerPrice?: number; } export interface OrderSignatureRequest extends RequiredOrderFields { leverage?: number; reduceOnly?: boolean; salt?: number; expiration?: number; maker?: address; } export interface OrderSignatureResponse extends RequiredOrderFields { leverage: number; reduceOnly: boolean; salt: number; expiration: number; orderSignature: string; maker: address; } export interface PlaceOrderRequest extends OrderSignatureResponse { timeInForce?: TIME_IN_FORCE; postOnly?: boolean; cancelOnRevert?: boolean; clientId?: string; } export interface PostOrderRequest extends OrderSignatureRequest { timeInForce?: TIME_IN_FORCE; postOnly?: boolean; cancelOnRevert?: boolean; clientId?: string; } interface OrderResponse { id: number; clientId: string; requestTime: number; cancelReason: CANCEL_REASON; orderStatus: ORDER_STATUS; hash: string; symbol: MarketSymbol; orderType: ORDER_TYPE; timeInForce: TIME_IN_FORCE; userAddress: address; side: ORDER_SIDE; price: string; triggerPrice: string; quantity: string; leverage: string; reduceOnly: boolean; expiration: number; salt: number; filledQty: string; avgFillPrice: string; createdAt: number; updatedAt: number; makerFee: string; takerFee: string; openQty: string; cancelOnRevert?: boolean; } export interface GetOrderResponse extends OrderResponse { fee: string; postOnly: boolean; cancelOnRevert: boolean; triggerPrice: string; margin: string; } export interface PlaceOrderResponse extends OrderResponse { postOnly?: boolean; cancelOnRevert?: boolean; } export interface MatchedOrderData { fillPrice: string; quantity: string; } export interface OrderSentForSettlementUpdateResponse { orderHash: string; userAddress: string; symbol: string; message: string; quantitySentForSettlement: string; orderQuantity: string; isMaker: boolean; isBuy: boolean; avgFillPrice: string; fillId: string; timestamp: number; matchedOrders: MatchedOrderData[]; } export interface OrderRequeueUpdateResponse { orderHash: string; userAddress: string; symbol: string; message: string; isBuy: boolean; quantitySentForRequeue: string; fillId: string; timestamp: number; } export interface OrderCancellationOnReversionUpdateResponse { orderHash: string; userAddress: string; symbol: string; message: string; isBuy: boolean; quantitySentForCancellation: string; fillId: string; timestamp: number; } export interface OrderCancelSignatureRequest { symbol: MarketSymbol; hashes: string[]; parentAddress?: string; } export interface OrderCancellationRequest extends OrderCancelSignatureRequest { signature: string; } export type CancelOrder = { hash: string; reason?: string; }; export type CancelOrderResponse = { message: string; data: { acceptedForCancelling: CancelOrder[]; failedCancelling: CancelOrder[]; }; }; export interface GetOrderbookRequest { symbol: MarketSymbol; limit: number; } export interface GetPositionResponse { userAddress: address; symbol: MarketSymbol; marginType: MARGIN_TYPE; side: ORDER_SIDE; avgEntryPrice: string; quantity: string; margin: string; leverage: string; positionSelectedLeverage: string; liquidationPrice: string; positionValue: string; unrealizedProfit: string; unrealizedProfitPercent: string; midMarketPrice: string; oraclePrice?: string; indexPrice?: string; updatedAt: number; createdAt: number; } export interface GetOrderBookResponse { asks: string[][]; bids: string[][]; midPrice: string; symbol: MarketSymbol; lastUpdatedAt: number; orderbookUpdateId: number; responseSentAt: number; bestBidPrice: string; bestBidQty: string; bestAskPrice: string; bestAskQty: string; oraclePrice: string; oraclePriceLastUpdateAt: number; firstUpdateId?: number; lastUpdateId?: number; limit?: number; } export interface OrderBookPartialDepth { symbol: string; orderbookUpdateId: number; depth: number; asks: string[][]; bids: string[][]; } export interface GetOrderBookResponse { asks: string[][]; bids: string[][]; midPrice: string; symbol: MarketSymbol; lastUpdatedAt: number; orderbookUpdateId: number; responseSentAt: number; bestBidPrice: string; bestBidQty: string; bestAskPrice: string; bestAskQty: string; oraclePrice: string; oraclePriceLastUpdateAt: number; firstUpdateId?: number; lastUpdateId?: number; limit?: number; } export interface GetUserTradesRequest { symbol?: MarketSymbol; maker?: boolean; fromId?: number; startTime?: number; endTime?: number; pageSize?: number; pageNumber?: number; type?: ORDER_TYPE; parentAddress?: string; } export interface GetUserTradesResponse { id: number; symbol: MarketSymbol; commission: string; commissionAsset: string; maker: boolean; orderHash: string; side: ORDER_SIDE; price: string; quantity: string; quoteQty: string; realizedPnl: string; time: number; clientId: string; orderId: number; tradeType: string; } export interface GetUserTradesHistoryRequest { symbol?: MarketSymbol; maker?: boolean; fromId?: number; startTime?: number; endTime?: number; limit?: number; cursor?: number; type?: ORDER_TYPE; parentAddress?: string; } export interface GetUserTradesHistoryResponse { data: GetUserTradesResponse[]; nextCursor: number; isMoreDataAvailable: boolean; } export interface MarketAccountData { symbol: MarketSymbol; positionQtyReduced: string; positionQtyReducible: string; unrealizedProfit: string; positionMargin: string; expectedPnl: string; selectedLeverage: string; } export interface GetAccountDataResponse { address: address; feeTier: string; canTrade: boolean; totalPositionMargin: string; totalPositionQtyReduced: string; totalPositionQtyReducible: string; totalExpectedPnl: string; totalUnrealizedProfit: string; walletBalance: string; freeCollateral: string; accountValue: string; accountDataByMarket: MarketAccountData[]; updateTime: number; } export interface GetUserTransactionHistoryResponse { id: number; symbol: MarketSymbol; commission: string; commissionAsset: string; maker: boolean; side: ORDER_SIDE; price: string; quantity: string; quoteQty: string; realizedPnl: string; time: number; orderHash: string; traderType: string; } export interface GetUserTransferHistoryResponse { data: UserTransferHistoryResponse[]; nextCursor: number; isMoreDataAvailable: boolean; } export interface UserTransferHistoryResponse { id: number; status: string; action: string; amount: string; userAddress: string; blockNumber: number; latestTxHash: string; time: number; createdAt: number; updatedAt: number; } export interface GetFundingRateResponse { symbol: MarketSymbol; createdAt: number; nextTime: number; fundingRate: string; } export interface GetUserFundingHistoryResponse { data: UserFundingHistoryResponse[]; nextCursor: number; isMoreDataAvailable: boolean; } export interface UserFundingHistoryResponse { id: number; symbol: MarketSymbol; userAddress: string; quantity: string; time: number; appliedFundingRate: string; isFundingRatePositive: boolean; payment: string; isPaymentPositive: boolean; oraclePrice: string; side: ORDER_SIDE; blockNumber: number; isPositionPositive: boolean; } export interface GetMarketRecentTradesRequest { symbol: MarketSymbol; pageSize?: number; pageNumber?: number; traders?: address; } export interface GetMarketRecentTradesResponse { symbol: MarketSymbol; id: number; price: string; quantity: string; quoteQty: string; time: number; side: ORDER_SIDE; } export interface GetCandleStickRequest { symbol: MarketSymbol; interval: Interval; startTime?: number; endTime?: number; limit?: number; } export interface ExchangeInfo { symbol: MarketSymbol; status: string; baseAssetSymbol: string; baseAssetName: string; quoteAssetSymbol: string; quoteAssetName: string; maintenanceMarginReq: string; initialMarginReq: string; stepSize: number; tickSize: number; minOrderSize: number; maxLimitOrderSize: string; maxMarketOrderSize: string; minOrderPrice: string; maxOrderPrice: string; defaultMakerFee: string; defaultTakerFee: string; insurancePoolPercentage: string; mtbLong: string; mtbShort: string; defaultLeverage: string; maxAllowedOIOpen: []; } export interface MarketData { symbol: MarketSymbol; lastQty: string; lastTime: string; lastPrice: string; _24hrHighPrice: string; _24hrLowPrice: string; _24hrVolume: string; _24hrQuoteVolume: string; _24hrClosePrice: string; _24hrOpenPrice: string; _24hrCloseTime: string; _24hrOpenTime: string; _24hrCount: string; oraclePrice?: string; indexPrice?: string; midMarketPrice: string; _24hrFirstId: number; _24hrLastId: number; bestBidPrice: string; bestBidQty: string; bestAskPrice: string; bestAskQty: string; lastFundingRate: string; nextFundingTime: string; time: string; _24hrPriceChange: string; midMarketPriceDirection: number; _24hrPriceChangePercent: string; marketPrice: string; marketPriceDirection: number; } export interface MarketMeta { symbol: MarketSymbol; domainHash: string; onboardingWebsiteUrl: string; rpcURI: string; networkID: string; orderAddress: address; liquidationAddress: address; perpetualAddress: address; } export interface MasterInfo { _24hrTrades: string; _24hrVolume: string; data: MasterInfoData[]; } export interface MasterInfoData { symbol: string; meta: MarketMeta; exchangeInfo: ExchangeInfo; marketData: MarketData; } export interface TickerData { symbol: MarketSymbol; _24hrPriceChange: string; _24hrPriceChangePercent: string; openTime: number; closeTime: number; price: string; priceDirection: number; _24hrVolume: string; oraclePrice?: string; indexPrice?: string; } export interface StatusResponse { isAlive: boolean; serverTime: number; } export interface AuthorizeHashResponse { token: string; } export interface adjustLeverageRequest { symbol: MarketSymbol; leverage: number; perpetualAddress?: address; parentAddress?: string; signedTransaction?: string; } export interface AdjustLeverageResponse { symbol: string; address: string; leverage: string; marginType: string; maxNotionalValue: string; } export interface FundGasResponse { message: string; } export interface UserSubscriptionAck { success: boolean; message: string; } export interface verifyDepositResponse { verificationStatus: string; } export interface CountDown { symbol: string; countDown: number; } export interface PostTimerAttributes { countDowns: CountDown[]; parentAddress?: string; } export interface PostTimerResponse { acceptedToReset: string[]; failedReset: FailedCountDownResetResponse[]; } export interface FailedCountDownResetResponse { symbol: string; reason: string; } export interface GetCountDownsResponse { countDowns: CountDown[]; timestamp: number; } export interface GetReferrerInfoResponse { isReferee: boolean; } export interface GetCampaignDetailsResponse { id: number; campaignName: string; parentCampaignName?: string; startDate: string; endDate: string; isActive: boolean; epochDurationSeconds: number; config: { cashShare: string; tokenShare: string; shareOfFees: string; refereeDiscount: string; }; createdAt: string; updatedAt: string; } export interface GetCampaignRewardsResponse { campaignName: string; campaignConfig: { cashShare: string; tokenShare: string; shareOfFees: string; refereeDiscount: string; }; cashReward: string; tokenReward: string; } export interface GetAffiliatePayoutsResponse { epStartDate: string; epEndDate: string; isActive: boolean; totalReferralFees: string; cashReward: string; tokenReward: string; epochNumber: string; } export interface GetAffiliateRefereeDetailsRequest { campaignId: number; pageNumber?: number; pageSize?: number; parentAddress?: string; } export interface GetAffiliateRefereeDetailsResponse { data: AffiliateRefereeDetailsData[]; nextCursor: number; isMoreDataAvailable: boolean; } interface AffiliateRefereeDetailsData { userAddress: string; lastTraded?: string; dateJoined: string; feesPaid: string; } export interface GetAffiliateRefereeCountResponse { referralCode: string; referralCount: number; } export interface GetUserRewardsHistoryRequest { pageSize?: number; cursor?: number; parentAddress?: string; } export interface GetUserRewardsHistoryResponse { data: UserRewardsHistoryData[]; nextCursor: number; isMoreDataAvailable: boolean; } interface UserRewardsHistoryData { programName: string; parentProgramName?: string; startDate: string; endDate: string; cashReward: string; tokenReward: string; isActive: boolean; cursor: string; epochNumber: string; } export interface GetUserRewardsSummaryResponse { totalTokenReward: string; totalCashReward: string; campaignData: RewardsSummaryData[]; } interface RewardsSummaryData { campaignName: string; totalCashReward: string; totalTokenReward: string; } export interface GetTradeAndEarnRewardsOverviewResponse { totalHistoricalRewards: string; totalActiveRewards: string; totalFeePaid: string; latestEpochNumber: string; latestEpochStart: number; latestEpochEnd: number; latestEpochTotalFee: string; latestEpochTotalRewards: string; } export interface GetTradeAndEarnRewardsDetailRequest { campaignId: number; pageSize?: number; cursor?: number; parentAddress?: string; } export interface GetTradeAndEarnRewardsDetailResponse { data: TradeAndEarnRewardsDetailData[]; nextCursor: string; isMoreDataAvailable: boolean; } interface TradeAndEarnRewardsDetailData { tradingRewards: string; feePaid: string; cursor: string; id: number; isActive: boolean; startDate: string; endDate: string; epochNumber: string; } export interface GetTotalHistoricalTradingRewardsResponse { totalTokenRewards: string; } export interface GetMakerRewardsSummaryResponse { latestEpochStart: number; latestEpochEnd: number; latestEpochNumber: string; latestEpochTotalRewards: string; totalActiveRewards: string; totalHistoricalRewards: string; } export interface GetMakerRewardDetailsRequest { symbol?: string; pageSize?: number; cursor?: number; parentAddress?: string; } export interface GetMakerRewardDetailsResponse { data: MakerRewardDetailsData[]; nextCursor: number; isMoreDataAvailable: boolean; } interface MakerRewardDetailsData { latestEpochNumber: string; status: string; makerVolume: string; volumePercentage: string; rewardPoolPercentage: string; makerRewards: string; startDate: string; endDate: string; cursor: string; liquidityScore?: string; uptimePercentage?: string; } export interface GetUserWhiteListStatusForMarkeMakerResponse { isWhitelist: boolean; } export interface GenerateReferralCodeRequest { referralCode: string; campaignId: number; } export interface GenerateReferralCodeResponse { referralAddress: string; referralCode: string; message?: string; } export interface LinkReferredUserRequest { referralCode: string; } export interface LinkReferredUserResponse { referralCode: string; refereeAddress: string; campaignId: number; message?: string; } export interface Callbacks { [event: string]: Function; } export interface GetOrderByTypeRequest extends GetTransactionHistoryRequest { orderId?: number; orderHashes?: string[]; limitStatuses?: ORDER_STATUS[]; marketStatuses?: ORDER_STATUS[]; orderType?: ORDER_TYPE[]; parentAddress?: string; } export type OpenReferralPayout = { epochNumber: number; epStartDate: string; epEndDate: string; isActive: true; referralPoints: string; referralTradeAndEarnPoints: string; rewardedPoints: string; cursor: string; }; export type OpenReferralPayoutList = OpenReferralPayout[]; export type OpenReferralOverview = { totalHistoricalRewardedPoints: string; totalHistoricalRefereePoints: string; totalHistoricalReferralPoints: string; totalActiveRewardedPoints: string; totalActiveRefereePoints: string; totalActiveReferralPoints: string; latestEpochNumber: number; latestEpochStart: string; latestEpochEnd: string; latestEpochReferralMultiplier: string; latestEpochRefereeMultiplier: string; }; export type OpenReferralRefereeDetail = { refereeAddress: string; tradeAndEarnPoints: string; refereePoints: string; rewardedPoints: string; lastTraded: string; dateJoined: string; }; export type OpenReferralRefereeDetails = OpenReferralRefereeDetail[]; export type OpenReferralDetails = { referralCode: string; referralCount: number; }; export {};