@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
TypeScript
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 {};