UNPKG

@nextrope/xrpl

Version:

A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser

146 lines 5.51 kB
import type { Amount, Currency, Path, StreamType, ResponseOnlyTxInfo, APIVersion, DEFAULT_API_VERSION, RIPPLED_API_V1, RIPPLED_API_V2 } from '../common'; import { Offer } from '../ledger'; import { OfferCreate, Transaction } from '../transactions'; import { TransactionMetadata } from '../transactions/metadata'; import type { BaseRequest, BaseResponse } from './baseMethod'; import { ManifestRequest } from './manifest'; export interface SubscribeBook { taker_gets: Currency; taker_pays: Currency; taker: string; snapshot?: boolean; both?: boolean; domain?: string; } export interface SubscribeRequest extends BaseRequest { command: 'subscribe'; streams?: StreamType[]; accounts?: string[]; accounts_proposed?: string[]; books?: SubscribeBook[]; url?: string; url_username?: string; url_password?: string; } export type BooksSnapshot = Offer[]; export interface SubscribeResponse extends BaseResponse { result: Record<string, never> | LedgerStreamResponse | BooksSnapshot; } interface BaseStream { type: string; } export interface LedgerStream extends BaseStream { type: 'ledgerClosed'; fee_base: number; fee_ref?: number; ledger_hash: string; ledger_index: number; ledger_time: number; reserve_base: number; reserve_inc: number; txn_count: number; validated_ledgers?: string; network_id?: number; } export interface LedgerStreamResponse { fee_base: number; fee_ref?: number; ledger_hash: string; ledger_index: number; ledger_time: number; reserve_base: number; reserve_inc: number; validated_ledgers?: string; network_id?: number; } export interface ValidationStream extends BaseStream { type: 'validationReceived'; amendments?: string[]; base_fee?: number; cookie?: string; data?: string; flags: number; full: boolean; ledger_hash: string; ledger_index: string; load_fee?: number; master_key?: string; reserve_base?: number; reserve_inc?: number; signature: string; signing_time: number; validation_public_key: string; network_id?: number; } interface TransactionStreamBase<Version extends APIVersion = typeof DEFAULT_API_VERSION> extends BaseStream { status: string; type: 'transaction'; close_time_iso: Version extends typeof RIPPLED_API_V2 ? string : never; engine_result: string; engine_result_code: number; engine_result_message: string; hash?: Version extends typeof RIPPLED_API_V2 ? string : never; ledger_current_index?: number; ledger_hash?: string; ledger_index?: number; meta?: TransactionMetadata; tx_json?: Version extends typeof RIPPLED_API_V2 ? Transaction & ResponseOnlyTxInfo : never; transaction?: Version extends typeof RIPPLED_API_V1 ? Transaction & ResponseOnlyTxInfo : never; validated?: boolean; warnings?: Array<{ id: number; message: string; }>; } export type TransactionStream = TransactionStreamBase; export type TransactionV1Stream = TransactionStreamBase<typeof RIPPLED_API_V1>; export interface PeerStatusStream extends BaseStream { type: 'peerStatusChange'; action: 'CLOSING_LEDGER' | 'ACCEPTED_LEDGER' | 'SWITCHED_LEDGER' | 'LOST_SYNC'; date: number; ledger_hash?: string; ledger_index?: number; ledger_index_max?: number; ledger_index_min?: number; } interface ModifiedOfferCreateTransaction extends OfferCreate { owner_funds: string; } export interface OrderBookStream extends BaseStream { status: string; type: 'transaction'; engine_result: string; engine_result_code: number; engine_result_message: string; ledger_current_index?: number; ledger_hash?: string; ledger_index?: number; meta: TransactionMetadata; transaction: (Transaction | ModifiedOfferCreateTransaction) & { date?: number; hash?: string; }; validated: boolean; } export interface ConsensusStream extends BaseStream { type: 'consensusPhase'; consensus: 'open' | 'establish' | 'accepted'; } export interface PathFindStream extends BaseStream { type: 'path_find'; source_account: string; destination_account: string; destination_amount: Amount; full_reply: boolean; id: number | string; send_max?: Amount; alternatives: [] | { paths_computed: Path[]; source_amount: Amount; }; } export type Stream = LedgerStream | ValidationStream | TransactionStream | PathFindStream | PeerStatusStream | OrderBookStream | ConsensusStream; export type EventTypes = 'connected' | 'disconnected' | 'ledgerClosed' | 'validationReceived' | 'transaction' | 'peerStatusChange' | 'consensusPhase' | 'manifestReceived' | 'path_find' | 'error'; export type OnEventToListenerMap<T extends EventTypes> = T extends 'connected' ? () => void : T extends 'disconnected' ? (code: number) => void : T extends 'ledgerClosed' ? (ledger: LedgerStream) => void : T extends 'validationReceived' ? (validation: ValidationStream) => void : T extends 'transaction' ? (transaction: TransactionStream) => void : T extends 'peerStatusChange' ? (peerStatus: PeerStatusStream) => void : T extends 'consensusPhase' ? (consensus: ConsensusStream) => void : T extends 'manifestReceived' ? (manifest: ManifestRequest) => void : T extends 'path_find' ? (path: PathFindStream) => void : T extends 'error' ? (...err: any[]) => void : (...args: never[]) => void; export {}; //# sourceMappingURL=subscribe.d.ts.map