Implements TypeScript types for server info method requests/responses (#1514)

* fee

* manifest

* server_info

* server_state

* export

* fix amendment_blocked type

* fix typo
This commit is contained in:
Mayukha Vadari
2021-08-10 15:47:11 -07:00
parent a0907472c9
commit 1ecd6a7e2a
5 changed files with 200 additions and 0 deletions

27
src/models/methods/fee.ts Normal file
View File

@@ -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
}
}

View File

@@ -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,

View File

@@ -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
}
}

View File

@@ -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<ServerState, StateAccounting>
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
}
}
}

View File

@@ -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<ServerState, StateAccounting>
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
}
}
}