crypto-janitor
Version:
The Crypto Janitor provides a simple interface for fetching and cleaning crypto account data.
161 lines (160 loc) • 7.19 kB
TypeScript
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 {};