turtlecoin-wallet-backend
Version:
[](https://travis-ci.org/turtlecoin/turtlecoin-wallet-backend-js)
128 lines (127 loc) • 4.68 kB
TypeScript
import { IConfig } from './Config';
import { Block, TopBlock, DaemonConnection } from './Types';
/**
* Provides an interface to a daemon or similar, such as a blockchain cache
*/
export interface IDaemon {
/**
* This is emitted whenever the interface fails to contact the underlying daemon.
* This event will only be emitted on the first disconnection. It will not
* be emitted again, until the daemon connects, and then disconnects again.
*
* Example:
*
* ```javascript
* daemon.on('disconnect', (error) => {
* console.log('Possibly lost connection to daemon: ' + error.toString());
* });
* ```
*
* @event
*/
on(event: 'disconnect', callback: (error: Error) => void): this;
/**
* This is emitted whenever the interface previously failed to contact the
* underlying daemon, and has now reconnected.
* This event will only be emitted on the first connection. It will not
* be emitted again, until the daemon disconnects, and then reconnects again.
*
* Example:
*
* ```javascript
* daemon.on('connect', () => {
* console.log('Regained connection to daemon!');
* });
* ```
*
* @event
*/
on(event: 'connect', callback: () => void): this;
/**
* This is emitted whenever either the localDaemonBlockCount or the networkDaemonBlockCount
* changes.
*
* Example:
*
* ```javascript
* daemon.on('heightchange', (localDaemonBlockCount, networkDaemonBlockCount) => {
* console.log(localDaemonBlockCount, networkDaemonBlockCount);
* });
*
* @event
*/
on(event: 'heightchange', callback: (localDaemonBlockCount: number, networkDaemonBlockCount: number) => void): this;
/**
* @param blockHashCheckpoints Hashes of the last known blocks. Later
* blocks (higher block height) should be
* ordered at the front of the array.
*
* @param startHeight Height to start taking blocks from
* @param startTimestamp Block timestamp to start taking blocks from
*
* Gets blocks from the daemon. Blocks are returned starting from the last
* known block hash (if higher than the startHeight/startTimestamp)
*
* Returns TopBlock data if daemon is synced, and daemon supports this
* feature.
*/
getWalletSyncData(blockHashCheckpoints: string[], startHeight: number, startTimestamp: number, blockCount: number): Promise<[Block[], TopBlock | boolean]>;
/**
* Gets the node fee address and amount. Will be `['', 0]` if none/invalid
*/
nodeFee(): [string, number];
/**
* Initializes the daemon if necessary, with node fee and internal data
*/
init(): Promise<void>;
/**
* Updates internal daemon info
*/
updateDaemonInfo(): Promise<void>;
/**
* Returns the height that the network has. Possibly 0 if can't connect
* to daemon
*/
getNetworkBlockCount(): number;
/**
* Returns the height that the local daemon has.
*/
getLocalDaemonBlockCount(): number;
/**
* @returns Returns a mapping of transaction hashes to global indexes
*
* Get global indexes for the transactions in the range
* [startHeight, endHeight]
*/
getGlobalIndexesForRange(startHeight: number, endHeight: number): Promise<Map<string, number[]>>;
/**
* Get any transactions which we have sent, but are no longer present in
* the pool or a block. (They have returned to our wallet)
*/
getCancelledTransactions(transactionHashes: string[]): Promise<string[]>;
/**
* Gets random outputs for the given amounts. requestedOuts per. Usually mixin+1.
*
* @returns Returns an array of amounts to global indexes and keys. There
* should be requestedOuts indexes if the daemon fully fulfilled
* our request.
*/
getRandomOutputsByAmount(amounts: number[], requestedOuts: number): Promise<Array<[number, Array<[number, string]>]>>;
/**
* Sends a raw serialized transaction to the daemon. Returns true/false
* based on daemon status.
*
* Will throw on timeout.
*
* @returns Whether the transaction was accepted
*/
sendTransaction(rawTransaction: string): Promise<boolean>;
/**
* Updates the internal config with the passed in config.
*/
updateConfig(config: IConfig): void;
/**
* Returns information on the daemon connection such as host and port
*/
getConnectionInfo(): DaemonConnection;
}