ftx-api-typed
Version:
Node.js/typescript connector for FTX's REST APIs and WebSockets
106 lines (105 loc) • 2.95 kB
TypeScript
import { OrderSide } from "./orders";
export declare type OptionType = "call" | "put";
export declare type OptionStatus = "open" | "cancelled" | "filled" | string;
export interface Option {
/** @example "BTC" */
underlying: string;
type: OptionType;
strike: number;
/** @example "2020-01-08T22:35:54.626023+00:00" */
expiry: string;
}
export interface QuoteRequest {
id: number;
option: Option;
side: OrderSide;
/** @example "2020-01-08T22:35:54.626023+00:00" */
time: string;
status: OptionStatus;
/** @example "2020-01-08T22:35:54.626023+00:00" */
requestExpiry: string;
limitPrice: number;
}
export interface Quote {
id: number;
status: OptionStatus;
collateral: number;
price: number;
/** @example "2020-01-08T22:35:54.626023+00:00" */
quoteExpiry: string | null;
/** @example "2020-01-08T22:35:54.626023+00:00" */
time: string;
}
export interface MyQuoteRequest extends QuoteRequest {
quotes: Quote[];
hideLimitPrice: boolean;
size: number;
counterpartyId?: number | null;
}
export interface CancelledQuoteRequest extends MyQuoteRequest {
status: "cancelled";
}
export interface QuoteForMyQuoteRequest extends Quote {
requestId: number;
quoterSide: OrderSide;
requestSide: OrderSide;
size: number;
option: Option;
requestLimitPrice: number;
}
export interface CancelledQuote extends QuoteForMyQuoteRequest {
state: "cancelled";
}
export interface AcceptedOptionsQuote extends QuoteForMyQuoteRequest {
state: "filled";
}
export interface OptionsAccountInfo {
usdBalance: number;
liquidationPrice: number;
liquidated: boolean;
/**
* @description you will be liquidated if your account collateral + options usdBalance drops below this number
*/
maintenanceMarginRequirement: number;
initialMarginRequirement: number;
}
export interface OptionsPosition {
netSize: number;
entryPrice: number;
size: number;
option: Option;
side: OrderSide;
pessimisticValuation?: number | null;
pessimisticIndexPrice?: number | null;
pessimisticVol?: number | null;
}
export interface OptionsTrade {
id: number;
size: number;
option: Option;
prize: number;
time: string;
}
export interface OptionsFill extends OptionsTrade {
liquidity: "maker" | "taker";
fee: number;
feeRate: number;
side: OrderSide;
}
interface Options24hVolumeItem {
contracts: number;
underlying_total: number;
}
export declare type Options24hVolume = Array<Options24hVolumeItem>;
interface OptionsHistoricalVolumeItem {
numContracts: number;
startTime: string;
endTime: string;
}
export declare type OptionsHistoricalVolumes = Array<OptionsHistoricalVolumeItem>;
interface OptionsOpenInterestItem {
numContracts: number;
time: string;
}
export declare type OptionsOpenInterest = Array<OptionsOpenInterestItem>;
export {};