import { BIP32Interface as BIP32 } from 'bip32'; import { ECPairInterface as ECPair } from 'bitcoinjs-lib'; import { ILogger, RPCNode, IKeypair } from '@onechain/core'; import { IApiProvider } from './api-providers'; export interface IAddress { index: number; address: string; txCount: number; balance: number; ecpair: ECPair; } export interface IAddressJSON { index: number; address: string; wif: string; publicKey: string; privateKey: string; txCount: number; balance: number; } /** * HDWallet * * @export * @class HDWallet */ export declare class HDWallet { static ADDRESS_ALL: string; static ADDRESS_CHANGE: string; static ADDRESS_RECEIVING: string; protected _logger: ILogger; protected _rpcnode: RPCNode; protected _root: BIP32; protected _apiProvider: IApiProvider; protected _mnemonic: string; protected _receiving: IAddress[]; protected _change: IAddress[]; protected _gapLimit: number; protected _batchSize: number; constructor(mnemonic: string, rpcnode: RPCNode, apiProvider: IApiProvider, logger: ILogger); /** * 从助记词创建一个 HDWallet * * @static * @param {string} mnemonic * @param {RPCNode} rpcnode * @param {IApiProvider} apiProvider * @param {boolean} [needSync=true] * @param {ILogger} logger * @returns * @memberof HDWallet */ static fromMnemonic(mnemonic: string, rpcnode: RPCNode, apiProvider: IApiProvider, needSync: boolean, logger: ILogger): Promise; /** * 从 JSON 数据创建一个 HDWallet * * @static * @param {*} data * @param {RPCNode} rpcnode * @param {IApiProvider} apiProvider * @param {ILogger} logger * @returns * @memberof HDWallet */ static fromJSON(data: any, rpcnode: RPCNode, apiProvider: IApiProvider, logger: ILogger): Promise; /** * HDWallet 转为 JSON 对象 * * @returns * @memberof HDWallet */ toJSON(): { mnemonic: string; receiving: IAddressJSON[]; change: IAddressJSON[]; }; /** * 获取所有 keypair * * @param {*} [type=HDWallet.ADDRESS_ALL] * @returns * @memberof HDWallet */ getKeypairs(type?: string): IKeypair[]; /** * * 自动更新 HDWallet 状态 * * 主要是刷新可用收款地址和找零地址 * * @param {boolean} [force=false] 是否强制从头同步 * @returns * @memberof HDWallet */ sync(force?: boolean): Promise<[void, void]>; /** * 静态初始化 HDWallet * * @memberof HDWallet */ init(): void; /** * 主动更新 HDWallet 状态 * * 主要用于从缓存重建 HDWallet 的情况 * * @param {IAddressJSON[]} receiving * @param {IAddressJSON[]} change * @memberof HDWallet */ protected _recover(receiving: IAddressJSON[], change: IAddressJSON[]): void; /** * 推导 20 个地址 * * 对于不需要同步的情况,可以使用此接口默认推导前面 20 个地址。 * * @protected * @param {string} coinType * @param {string} isChange * @returns * @memberof HDWallet */ protected _derive(coinType: string, isChange: string): any[]; /** * 发现可用收款地址 * * @protected * @param {boolean} [force=false] * @memberof HDWallet */ protected _discoverReceiving(force?: boolean): Promise; /** * 发现可用找零地址 * * @protected * @param {boolean} [force=false] * @memberof HDWallet */ protected _discoverChange(force?: boolean): Promise; /** * 计算 fetch 起始参数 * * @protected * @param {string} coinType * @param {string} isChange * @param {IAddress[]} addresses * @param {boolean} [force=false] * @returns * @memberof HDWallet */ protected _calcFetchStart(coinType: string, isChange: string, addresses: IAddress[], force?: boolean): { path: BIP32; startAt: number; gap: number; }; /** * 根据 apiProvider 的频率限制 fetch 可用地址 * * @protected * @param {BIP32} path * @param {number} index * @param {number} gap * @param {IAddress[]} [fetchedAddress=[]] * @returns {Promise} * @memberof HDWallet */ protected _fetchAddresses(path: BIP32, index: number, gap: number, fetchedAddress?: IAddress[]): Promise; /** * 根据 apiProvider 的频率限制批量 fetch 可用地址 * * @protected * @param {BIP32} path * @param {number} index * @param {number} gap * @param {IAddress[]} [fetchedAddress=[]] * @returns {Promise} * @memberof HDWallet */ protected _batchFetchAddresses(path: BIP32, index: number, gap: number, fetchedAddress?: IAddress[]): Promise; }