UNPKG

@nimiq/network-client

Version:
141 lines (140 loc) 6.24 kB
import { EventCallback } from '@nimiq/rpc-events'; type PlainNimiqTransaction = ReturnType<import('@nimiq/core-web').Transaction["toPlain"]>; type PlainNimiqTransactionReceipt = ReturnType<import('@nimiq/core-web').TransactionReceipt["toPlain"]>; type PlainNimiqTransactionDetails = ReturnType<import('@nimiq/core-web').Client.TransactionDetails["toPlain"]>; type PlainNimiqVestingContract = ReturnType<import('@nimiq/core-web').VestingContract["toPlain"]>; type ConsensusState = import('@nimiq/core-web').Client.ConsensusState; export declare type TransactionListener = (transaction: PlainNimiqTransactionDetails) => any; export declare type ConsensusChangedListener = (consensusState: ConsensusState) => any; export declare type PlainTransaction = { sender: string; senderPubKey: Uint8Array; recipient: string; value: number; fee: number; validityStartHeight: number; signature: Uint8Array; extraData?: string | Uint8Array; }; export declare type DetailedPlainTransaction = { sender: string; recipient: string; value: number; fee: number; extraData: Uint8Array; hash: string; blockHeight: number; blockHash?: string; timestamp: number; validityStartHeight: number; }; export declare type PlainVestingContract = { address: string; owner: string; start: number; stepAmount: number; stepBlocks: number; totalAmount: number; }; export declare type PlainAddressInfo = { banned: boolean; connected: boolean; netAddress: { ip: Uint8Array; reliable: boolean; } | null; peerAddress: string; peerId: string; services: Array<'FULL_BLOCKS' | 'BLOCK_HISTORY' | 'BLOCK_PROOF' | 'CHAIN_PROOF' | 'ACCOUNTS_PROOF' | 'ACCOUNTS_CHUNKS' | 'MEMPOOL' | 'TRANSACTION_INDEX' | 'BODY_PROOF'>; }; declare class NetworkClient { static readonly DEFAULT_ENDPOINT: "https://network.nimiq.com" | "https://network.nimiq-testnet.com"; static createInstance(endPoint?: string): NetworkClient; static hasInstance(): boolean; static readonly Instance: NetworkClient; private static _instance; private static getAllowedOrigin; private static _createIframe; private readonly _endpoint; private _eventClient; private $iframe; private _initializationPromise?; private _apiLoadingState; private _consensusState; private _peerCount; private _headInfo; private _balances; private _pendingTransactions; private _expiredTransactions; private _minedTransactions; private _relayedTransactions; private constructor(); init(): Promise<void>; on(event: NetworkClient.Events, callback: EventCallback): Promise<void>; off(event: NetworkClient.Events, callback: EventCallback): Promise<void>; connect(): Promise<boolean>; disconnect(reason?: string): Promise<boolean>; relayTransaction(txObj: PlainTransaction): Promise<object>; getTransactionSize(txObj: PlainTransaction): Promise<number>; subscribe(addresses: string | string[]): Promise<boolean>; getBalance(addresses: string | string[]): Promise<Map<string, number>>; forgetBalances(addresses: string | string[]): Promise<boolean>; getAccounts(addresses: string | string[]): Promise<Array<ReturnType<import('@nimiq/core-web').Account["toPlain"]> & { address: string; }>>; getAccountTypeString(address: string): Promise<string | false>; requestTransactionHistory(addresses: string | string[], // userfriendly addresses knownReceipts: Map<string, string>, // Map<txhash (base64), blockhash (base64)> fromHeight?: number): Promise<{ newTransactions: DetailedPlainTransaction[]; wasRateLimited: boolean; }>; requestTransactionReceipts(addresses: string, limit?: number): Promise<PlainNimiqTransactionReceipt[]>; getGenesisVestingContracts(): Promise<PlainVestingContract[]>; getGenesisVestingContracts(modern: true): Promise<PlainNimiqVestingContract[]>; removeTxFromMempool(txObj: PlainTransaction): Promise<boolean>; getPeerAddresses(): Promise<PlainAddressInfo[]>; sendTransaction(tx: PlainNimiqTransaction | string): Promise<PlainNimiqTransactionDetails>; getTransactionsByAddress(address: string, sinceHeight?: number, knownDetails?: PlainNimiqTransactionDetails[], limit?: number): Promise<PlainNimiqTransactionDetails[]>; addTransactionListener(listener: TransactionListener, addresses: string[]): Promise<number>; addConsensusChangedListener(listener: ConsensusChangedListener): Promise<number>; resetConsensus(): Promise<void>; removeListener(handle: number): Promise<void>; readonly apiLoadingState: 'not-started' | 'ready' | 'failed'; readonly consensusState: 'connecting' | 'syncing' | 'established' | 'lost'; readonly peerCount: number; readonly headInfo: { height: number; globalHashrate: number; }; readonly balances: Map<string, number>; readonly pendingTransactions: Iterable<Partial<DetailedPlainTransaction>>; readonly minedTransactions: Iterable<DetailedPlainTransaction>; readonly relayedTransactions: Iterable<Partial<DetailedPlainTransaction>>; /** @returns base64 transaction hashes */ readonly expiredTransactions: Iterable<string>; private _evictCachedTransactions; } declare namespace NetworkClient { enum Events { API_READY = "nimiq-api-ready", API_FAIL = "nimiq-api-fail", CONSENSUS_SYNCING = "nimiq-consensus-syncing", CONSENSUS_ESTABLISHED = "nimiq-consensus-established", CONSENSUS_LOST = "nimiq-consensus-lost", PEERS_CHANGED = "nimiq-peer-count", BALANCES_CHANGED = "nimiq-balances", TRANSACTION_PENDING = "nimiq-transaction-pending", TRANSACTION_EXPIRED = "nimiq-transaction-expired", TRANSACTION_MINED = "nimiq-transaction-mined", TRANSACTION_RELAYED = "nimiq-transaction-relayed", HEAD_CHANGE = "nimiq-head-change", HEAD_HEIGHT = "head-height", CONSENSUS = "consensus", BALANCES = "balances", TRANSACTION = "transaction", PEER_COUNT = "peer-count", PEER_ADDRESSES_ADDED = "peer-addresses-added" } } export { NetworkClient };