diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..1b10f8a0 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,245 @@ +declare module "gdax" { + export type callback = (err, response, data: T) => void; + + export type ProductTicker = { + trade_id: string, + price: string, + size: string, + bid: string, + ask: string, + volume: string, + time: Date + } + + type LimitOrder = { + type: "limit"; + product_id: string; + price: string; + size: string; + time_in_force?: "GTC" | "GTT" | "IOC" | "FOK"; + cancel_after?: "min" | "hour" | "day"; + post_only: boolean; + }; + + type MarketOrder = { + type: "market"; + product_id: string; + size: string; + } | + { + type: "market"; + product_id: string; + funds: string; + }; + + type StopOrder = { + type: "stop"; + product_id: string; + size: string; + } | + { + type: "stop"; + product_id: string; + funds: string; + }; + + export type BuyOrderParams = MarketOrder | LimitOrder | StopOrder; + + export type SellOrderParams = MarketOrder | LimitOrder | StopOrder; + + export type OrderResult = { + id: string; + price: number; + size: number; + product_id: string; + side: "buy" | "sell"; + stp: "dc" | "co" | "cn" | "cb"; + type: "limit" | "market" | "stop"; + time_in_force: "GTC" | "GTT" | "IOC" | "FOK"; + post_only: boolean; + created_at: string; + fill_fees: number; + filled_size: number; + executed_value: number; + status: "received" | "open" | "done"; + settled: boolean; + } + + export type OrderInfo = { + id: string; + price: number; + size: number; + product_id: string; + side: "buy" | "sell"; + stp: "dc" | "co" | "cn" | "cb"; + funds: number; + specified_funds: number; + type: "market" | "limit" | "stop"; + post_only: boolean, + created_at: string; + done_at: string; + done_reason: string; + fill_fees: number; + filled_size: number; + executed_value: number; + status: "received" | "open" | "done" | "pending"; + settled: boolean; + } + + export type PageArgs = { + before: number; + after?: number; + limit?: number; + } | + { + before?: number; + after: number; + limit?: number; + } | + { + before?: number; + after?: number; + limit: number; + }; + + + + export type Account = { + id: string, + profile_id: string, + currency: "USD" | "BTC" | "LTC" | "ETH", + balance: number, + available: number, + hold: number + }; + + export type CoinbaseAccount = { + id: string, + name: string, + balance: number, + currency: CurrencyType, + type: "wallet" | "fiat", + primary: boolean, + active: boolean + }; + + export type CurrencyType = "USD" | "BTC" | "LTC" | "ETH"; + + export type CurrencyInfo = { + id: CurrencyType, + name: string, + min_size: string + }; + + export class PublicClient { + constructor(productId: string); + + getProducts(callback: callback); + getProducts(): Promise; + + getProductOrderBook(callback: callback); + getProductOrderBook(): Promise; + + getProductTicker(callback: callback); + getProductTicker(): Promise; + + getProductTrades(callback: callback); + getProductTrades(): Promise; + + getProductTradeStream(callback: callback); + getProductTradeStream(): Promise; + + getProductHistoricRates(args: any, callback: callback); + getProductHistoricRates(args: any): Promise; + + getProduct24HrStats(callback: callback); + getProduct24HrStats(): Promise; + + getCurrencies(callback: callback); + getCurrencies(): Promise; + + getTime(callback: callback); + getTime(): Promise; + } + + export class AuthenticatedClient { + constructor(key: string, b64secret: string, passphrase: string, apiURI: string); + + getCoinbaseAccounts(callback: callback) + getCoinbaseAccounts(): Promise; + + getAccounts(callback: callback); + getAccounts(): Promise; + + getAccount(accountID: string, callback: callback); + getAccount(accountID: string): Promise; + + getAccountHistory(accountID: string, callback: callback); + getAccountHistory(accountID: string): Promise; + + getAccountHistory(accountID: string, pageArgs: PageArgs, callback: callback) + getAccountHistory(accountID: string, pageArgs: PageArgs): Promise; + + getAccountHolds(accountID: string, callback: callback); + getAccountHolds(accountID: string): Promise; + + getAccountHolds(accountID: string, pageArgs: PageArgs, callback: callback); + getAccountHolds(accountID: string, pageArgs: PageArgs): Promise; + + buy(params: BuyOrderParams, callback: callback); + buy(params: BuyOrderParams): Promise; + + sell(params: SellOrderParams, callback: callback); + sell(params: SellOrderParams): Promise; + + cancelOrder(orderID, callback: callback); + cancelOrder(orderID): Promise; + + cancelAllOrders(args: { product_id: string }, callback: callback); + cancelAllOrders(args: { product_id: string }): Promise; + + getOrders(callback: callback); + getOrders(): Promise; + + getOrders(pageArgs: PageArgs, callback: callback); + getOrders(pageArgs: PageArgs): Promise; + + getOrder(orderID, callback: callback); + getOrder(orderID): Promise; + + getFills(callback: callback); + getFills(): Promise; + + getFills(pageArgs: PageArgs, callback: callback); + getFills(pageArgs: PageArgs): Promise; + + getFundings(params, callback: callback); + getFundings(params): Promise; + + repay(params, callback: callback); + repay(params): Promise; + + marginTransfer(params, callback: callback); + marginTransfer(params): Promise; + + closePosition(params, callback: callback); + closePosition(params): Promise; + + deposit(params, callback: callback); + deposit(params): Promise; + + withdraw(params, callback: callback); + withdraw(params): Promise; + + getTrailingVolume(callback: callback); + getTrailingVolume(): Promise; + } + + export class WebsocketClient { + constructor(productIds: string[]); + on(event: 'message', eventHandler: (data) => void); + on(event: 'error', eventHandler: (err) => void); + on(event: 'open', eventHandler: () => void); + on(event: 'close', eventHandler: () => void); + } +} diff --git a/package.json b/package.json index 03f845e8..99be47f1 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ ], "license": "MIT", "main": "index.js", + "types": "index.d.ts", "repository": { "type": "git", "url": "git://github.com/coinbase/gdax-node.git"