From 1ecd6a7e2a50b1b7550cdb8a657c4866089fe342 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Tue, 10 Aug 2021 15:47:11 -0700 Subject: [PATCH] Implements TypeScript types for server info method requests/responses (#1514) * fee * manifest * server_info * server_state * export * fix amendment_blocked type * fix typo --- src/models/methods/fee.ts | 27 +++++++++++ src/models/methods/index.ts | 23 ++++++++++ src/models/methods/manifest.ts | 19 ++++++++ src/models/methods/serverInfo.ts | 74 +++++++++++++++++++++++++++++++ src/models/methods/serverState.ts | 57 ++++++++++++++++++++++++ 5 files changed, 200 insertions(+) create mode 100644 src/models/methods/fee.ts create mode 100644 src/models/methods/manifest.ts create mode 100644 src/models/methods/serverInfo.ts create mode 100644 src/models/methods/serverState.ts diff --git a/src/models/methods/fee.ts b/src/models/methods/fee.ts new file mode 100644 index 00000000..7b57fe1f --- /dev/null +++ b/src/models/methods/fee.ts @@ -0,0 +1,27 @@ +import { BaseRequest, BaseResponse } from "./baseMethod"; + +export interface FeeRequest extends BaseRequest { + command: "fee" +} + +export interface FeeResponse extends BaseResponse { + result: { + current_ledger_size: string + current_queue_size: string + drops: { + base_fee: string + median_fee: string + minimum_fee: string + open_ledger_fee: string + } + expected_ledger_size: string + ledger_current_index: number + levels: { + median_level: string + minimum_level: string + open_ledger_level: string + reference_level: string + } + max_queue_size: string + } +} \ No newline at end of file diff --git a/src/models/methods/index.ts b/src/models/methods/index.ts index bdfd47a3..9f82ed3e 100644 --- a/src/models/methods/index.ts +++ b/src/models/methods/index.ts @@ -7,7 +7,9 @@ import { AccountOffersRequest, AccountOffersResponse } from "./accountOffers"; import { AccountTxRequest, AccountTxResponse } from "./accountTx"; import { BookOffersRequest, BookOffersResponse } from "./bookOffers"; import { DepositAuthorizedRequest, DepositAuthorizedResponse } from "./depositAuthorized"; +import { FeeRequest, FeeResponse } from "./fee"; import { GatewayBalancesRequest, GatewayBalancesResponse } from "./gatewayBalances"; +import { ManifestRequest, ManifestResponse } from "./manifest"; import { NoRippleCheckRequest, NoRippleCheckResponse } from "./norippleCheck"; import { ConsensusStream, LedgerStream, OrderBookStream, PeerStatusStream, Stream, SubscribeRequest, SubscribeResponse, TransactionStream, ValidationStream } from "./subscribe"; import { UnsubscribeRequest, UnsubscribeResponse } from "./unsubscribe"; @@ -15,6 +17,8 @@ import { PathFindRequest, PathFindResponse } from "./pathFind"; import { PingRequest, PingResponse } from "./ping"; import { RandomRequest, RandomResponse } from "./random"; import { RipplePathFindRequest, RipplePathFindResponse } from "./ripplePathFind"; +import { ServerInfoRequest, ServerInfoResponse } from "./serverInfo"; +import { ServerStateRequest, ServerStateResponse } from "./serverState"; type Request = // account methods AccountChannelsRequest @@ -34,6 +38,11 @@ type Request = // account methods // subscription methods | SubscribeRequest | UnsubscribeRequest + // server info methods + | FeeRequest + | ManifestRequest + | ServerInfoRequest + | ServerStateRequest // utility methods | PingRequest | RandomRequest @@ -56,6 +65,11 @@ type Response = // account methods // subscription methods | SubscribeResponse | UnsubscribeResponse + // server info methods + | FeeResponse + | ManifestResponse + | ServerInfoResponse + | ServerStateResponse // utility methods | PingResponse | RandomResponse @@ -103,6 +117,15 @@ export { ConsensusStream, UnsubscribeRequest, UnsubscribeResponse, + // server info methods + FeeRequest, + FeeResponse, + ManifestRequest, + ManifestResponse, + ServerInfoRequest, + ServerInfoResponse, + ServerStateRequest, + ServerStateResponse, // utility methods PingRequest, PingResponse, diff --git a/src/models/methods/manifest.ts b/src/models/methods/manifest.ts new file mode 100644 index 00000000..10851a42 --- /dev/null +++ b/src/models/methods/manifest.ts @@ -0,0 +1,19 @@ +import { BaseRequest, BaseResponse } from "./baseMethod"; + +export interface ManifestRequest extends BaseRequest { + command: "manifest" + public_key: string +} + +export interface ManifestResponse extends BaseResponse { + result: { + details?: { + domain: string + ephemeral_key: string + master_key: string + seq: number + } + manifest?: string + requested: string + } +} \ No newline at end of file diff --git a/src/models/methods/serverInfo.ts b/src/models/methods/serverInfo.ts new file mode 100644 index 00000000..98cf7bbe --- /dev/null +++ b/src/models/methods/serverInfo.ts @@ -0,0 +1,74 @@ +import { BaseRequest, BaseResponse } from "./baseMethod"; + +export interface ServerInfoRequest extends BaseRequest { + command: "server_info" +} + +export type ServerState = "disconnected" | "connected" | "syncing" | "tracking" | "full" | "validating" | "proposing" + +export interface StateAccounting { + duration_us: string + transitions: number +} + +export interface JobType { + job_type: string + per_second: number + peak_time?: number + avg_time?: number + in_progress?: number +} + +export interface ServerInfoResponse extends BaseResponse { + result: { + info: { + amendment_blocked?: boolean + build_version: string + closed_ledger?: { + age: number + base_fee_xrp: number + hash: string + reserve_base_xrp: number + reserve_inc_xrp: number + seq: number + } + complete_ledgers: string + hostid: string + io_latency_ms: number + jq_trans_overflow: string + last_close: { + converge_time_s: number + proposers: number + } + load?: { + job_types: JobType[] + threads: number + } + load_factor: number + load_factor_local?: number + load_factor_net?: number + load_factor_cluster?: number + load_factor_fee_escalation?: number + load_factor_fee_queue?: number + load_factor_server?: number + peers: number + pubkey_node: string + pubkey_validator?: string + server_state: ServerState + server_state_duration_us: number + state_accounting: Record + time: string + uptime: number + validated_ledger?: { + age: number + base_fee_xrp: number + hash: string + reserve_base_xrp: number + reserve_inc_xrp: number + seq: number + } + validation_quorum: number + validator_list_expires?: string + } + } +} \ No newline at end of file diff --git a/src/models/methods/serverState.ts b/src/models/methods/serverState.ts new file mode 100644 index 00000000..3ae12194 --- /dev/null +++ b/src/models/methods/serverState.ts @@ -0,0 +1,57 @@ +import { BaseRequest, BaseResponse } from "./baseMethod"; +import { JobType, ServerState, StateAccounting } from "./serverInfo"; + +export interface ServerStateRequest extends BaseRequest { + command: "server_state" +} +export interface ServerStateResponse extends BaseResponse { + result: { + state: { + amendment_blocked?: boolean + build_version: string + complete_ledgers: string + closed_ledger?: { + age: number + base_fee: number + hash: string + reserve_base: number + reserve_inc: number + seq: number + } + io_latency_ms: number + jq_trans_overflow: string + last_close: { + converge_time_s: number + proposers: number + } + load?: { + job_types: JobType[] + threads: number + } + load_base: number + load_factor: number + load_factor_fee_escalation?: number + load_factor_fee_queue?: number + load_factor_fee_reference?: number + load_factor_server?: number + peers: number + pubkey_node: string + pubkey_validator?: string + server_state: ServerState + server_state_duration_us: number + state_accounting: Record + time: string + uptime: number + validated_ledger?: { + age: number + base_fee: number + hash: string + reserve_base: number + reserve_inc: number + seq: number + } + validation_quorum: number + validator_list_expires?: string + } + } +} \ No newline at end of file