@nimiq/network-client
Version:
141 lines (140 loc) • 6.24 kB
TypeScript
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 };