UNPKG

crypto-janitor

Version:

The Crypto Janitor provides a simple interface for fetching and cleaning crypto account data.

161 lines (160 loc) 7.19 kB
import BaseConnection, { Transaction, Order } from "./base"; import * as ccxt from "ccxt"; interface ExchangeCredentials { apiKey: string; secret: string; password?: string; } /** * Create ccxt exchange object * * @param {string} name - Name of exchange * @param {string} creds - User's exchange credentials * @param {number} rateLimit - API request rate limit * @return {ccxt.Exchange} ccxt exchange instance */ export declare function getExchange(name: string, creds?: ExchangeCredentials, rateLimit?: number): ccxt.Exchange; /** * A base class to support general ccxt exchange operations */ export default class ccxtConnection extends BaseConnection { quoteCurrency: string; markets: Array<string>; fallbackMarketConnection: ccxtConnection | null; access: string; /** * Create BaseConnection instance * @param {string} name - Name of exchange (Ex: coinbase) * @param {any} credentials - API creds of exchange * @param {any} params - (Optional) Additional paramaters */ constructor(name: string, credentials?: any, params?: any); /** * HELPER: Format transaction * * @param {any} transaction - Unformatted cctx unified transaction * @param {string} forceType - (Optional) Type to assign to transaction * @return {Transaction} Formatted transaction */ _formatTransaction(transaction: any, forceType?: string): Transaction; /** * HELPER: Format orders * * @param {any} order - Unformatted cctx unified transaction * @return {Transaction} Formatted transaction */ _formatOrder(order: any): Order; /** * HELPER * @description Check if params are satified for call * @param {string} method CCXT exchange method name * @param {string} symbol Currency symbol * @return {void} */ _paramCheck(method: string, symbol?: string): void; /** * @description Initialize exchange by fetching balances and loading markets * @override BaseConnection.initialize * @param {boolean} forceReload - (Optional) Additional paramaters * @return {Promise<void>} */ initialize(forceReload?: boolean): Promise<void>; /** * @description Fetch Account Balances * @override BaseConnection.getBalances * @return {Promise<any>} Account balance object */ getBalances(): Promise<any>; /** * @description Fetch Account Withdrawals * @override BaseConnection.getWithdrawals * @param {string} symbol Currency symbol * @param {string} key (Default=Send) Transaction type key * @param {number} since (Optional) Timestamp to get transactions since * @param {number} limit (Optional) Max number of entries per request * @return {Promise<Array<any>>} Array of withdrawal objects */ getWithdrawals(symbol?: string, key?: string, since?: number, limit?: number): Promise<Array<any>>; /** * @description Fetch Account Deposits * @override BaseConnection.getDeposits * @param {string} symbol Currency symbol * @param {string} key (Default=Receive) Transaction type key * @param {number} since (Optional) Timestamp to get transactions since * @param {number} limit (Optional) Max number of entries per request * @return {Promise<Array<any>>} Array of deposit objects */ getDeposits(symbol?: string, key?: string, since?: number, limit?: number): Promise<Array<any>>; /** * @description Fetch Account Orders * @override BaseConnection.getOrders * @param {string} symbol Currency symbol * @param {number} since (Optional) Timestamp to get transactions since * @param {number} limit (Optional) Max number of entries per request * @return {Promise<Array<any>>} Array of order objects */ getOrders(symbol?: string, since?: number, limit?: number): Promise<Array<any>>; /** * @description Fetch all account transactions (withdrawals, deposits, and orders) * @override BaseConnection.getLedger * @param {string} symbol Currency symbol * @param {number} since (Optional) Timestamp to get transactions since * @param {number} limit (Optional) Max number of entries per request * @return {Promise<any>} Array of withdrawal objects */ getLedger(symbol?: string, since?: number, limit?: number): Promise<any>; /** * @description Fetch account transactions (withdrawals, deposits, and orders) * @override BaseConnection.getTransactions * @param {string} symbol Currency symbol * @param {number} since (Optional) Timestamp to get transactions since * @return {Promise<Array<any>>} Array of withdrawal objects */ getTransactions(symbol?: string, since?: number): Promise<Array<any>>; /** * @description Fetch all transactions (withdrawals, deposits, and orders) for all symbols * @override BaseConnection.getAllTransactions * @param {number} since (Optional) Timestamp to get transactions since * @return {Array<any>} Array of withdrawal objects */ getAllTransactions(since?: number): Promise<any>; /** * @description Get preferred market(s) to convert asset to USD (or stablecoin) * @param {string} symbol Currency Symbol * @param {Array<string>} exclude Currency Symbol * @return {Promise<Array<string>>} Ex: ["USDC"] or ["BTC", "USD"] */ getQuoteConversion(symbol: string, exclude?: Array<string>): Promise<Array<string>>; /** * @description Get price of an asset at a given time (only public access required) * @param {string} symbol Currency symbol * @param {number} timestamp Timestamp to get price at * @return {Promise<number>} Price of asset in USD */ getQuote(symbol: string, timestamp: number): Promise<number>; /** * @description Get price of an asset at a given time (only public access required) * @param {number} timestamp Timestamp to get price at * @param {string} baseCurrency Base currency symbol * @param {string} feeCurrency (Optional) Fee currency symbol - will default to base or quote if not specifed * @param {string} quoteCurrency (Optional) Quote currency symbol * @param {number} quotePrice Price of base currency denominated in quote currency * @return {Promise<any>} Price of asset in USD */ getCommonPrices(timestamp: number, baseCurrency: string, feeCurrency?: string, quoteCurrency?: string, quotePrice?: number): Promise<number>; /** * @description Update USD quote values for a transaction (only public access required) * @param {Transaction} tx Transaction object * @param {any} prices Transaction prices * @return {Promise<Transaction>} Transaction with updated pricing data */ quoteTransaction(tx: Transaction, prices?: any): Promise<Transaction>; /** * @description Update USD quote values for an order (only public access required) * @param {Order} order Order object * @param {any} prices Order prices * @return {Promise<Order>} Order with updated pricing data */ quoteOrder(order: Order, prices?: any): Promise<Order>; } export {};