verus-rpc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +139 -0
- package/dist/amount.d.ts +32 -0
- package/dist/amount.d.ts.map +1 -0
- package/dist/amount.js +65 -0
- package/dist/amount.js.map +1 -0
- package/dist/client.d.ts +60 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +61 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +81 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +107 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/lossless.d.ts +32 -0
- package/dist/lossless.d.ts.map +1 -0
- package/dist/lossless.js +64 -0
- package/dist/lossless.js.map +1 -0
- package/dist/mapping.d.ts +41 -0
- package/dist/mapping.d.ts.map +1 -0
- package/dist/mapping.js +139 -0
- package/dist/mapping.js.map +1 -0
- package/dist/methods/addressindex.d.ts +69 -0
- package/dist/methods/addressindex.d.ts.map +1 -0
- package/dist/methods/addressindex.js +97 -0
- package/dist/methods/addressindex.js.map +1 -0
- package/dist/methods/blockchain.d.ts +99 -0
- package/dist/methods/blockchain.d.ts.map +1 -0
- package/dist/methods/blockchain.js +141 -0
- package/dist/methods/blockchain.js.map +1 -0
- package/dist/methods/chain.d.ts +39 -0
- package/dist/methods/chain.d.ts.map +1 -0
- package/dist/methods/chain.js +44 -0
- package/dist/methods/chain.js.map +1 -0
- package/dist/methods/currency.d.ts +210 -0
- package/dist/methods/currency.d.ts.map +1 -0
- package/dist/methods/currency.js +303 -0
- package/dist/methods/currency.js.map +1 -0
- package/dist/methods/identity.d.ts +284 -0
- package/dist/methods/identity.d.ts.map +1 -0
- package/dist/methods/identity.js +333 -0
- package/dist/methods/identity.js.map +1 -0
- package/dist/methods/shielded.d.ts +136 -0
- package/dist/methods/shielded.d.ts.map +1 -0
- package/dist/methods/shielded.js +175 -0
- package/dist/methods/shielded.js.map +1 -0
- package/dist/methods/t2.d.ts +8 -0
- package/dist/methods/t2.d.ts.map +1 -0
- package/dist/methods/t2.js +10 -0
- package/dist/methods/t2.js.map +1 -0
- package/dist/methods/wallet-types.d.ts +143 -0
- package/dist/methods/wallet-types.d.ts.map +1 -0
- package/dist/methods/wallet-types.js +6 -0
- package/dist/methods/wallet-types.js.map +1 -0
- package/dist/methods/wallet.d.ts +206 -0
- package/dist/methods/wallet.d.ts.map +1 -0
- package/dist/methods/wallet.js +455 -0
- package/dist/methods/wallet.js.map +1 -0
- package/dist/mock.d.ts +28 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/mock.js +61 -0
- package/dist/mock.js.map +1 -0
- package/dist/resilience.d.ts +20 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +32 -0
- package/dist/resilience.js.map +1 -0
- package/dist/transport.d.ts +38 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +79 -0
- package/dist/transport.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { parseAmount } from "../amount.js";
|
|
2
|
+
import { isLosslessNumber } from "../lossless.js";
|
|
3
|
+
import { expectArray, expectObject, mapInt, mapIntOptional, mapSats, mapString, mapStringArray, withPassthrough, } from "../mapping.js";
|
|
4
|
+
import { ResponseMappingError } from "../errors.js";
|
|
5
|
+
function mapCurrencyAmounts(raw, method, field) {
|
|
6
|
+
if (raw === undefined || raw === null)
|
|
7
|
+
return undefined;
|
|
8
|
+
const obj = expectObject(raw, method);
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const [currency, value] of Object.entries(obj)) {
|
|
11
|
+
const ctx = { method, field: `${field}.${currency}` };
|
|
12
|
+
if (!isLosslessNumber(value)) {
|
|
13
|
+
throw new ResponseMappingError(method, ctx.field, "expected a JSON number");
|
|
14
|
+
}
|
|
15
|
+
out[currency] = parseAmount(value.toString(), { allowNegative: true });
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
export function mapAddressBalance(raw) {
|
|
20
|
+
const method = "getaddressbalance";
|
|
21
|
+
const obj = expectObject(raw, method);
|
|
22
|
+
return withPassthrough(obj, {
|
|
23
|
+
balance: mapSats(obj["balance"], { method, field: "balance" }, { signed: true }),
|
|
24
|
+
received: mapSats(obj["received"], { method, field: "received" }),
|
|
25
|
+
currencybalance: mapCurrencyAmounts(obj["currencybalance"], method, "currencybalance"),
|
|
26
|
+
currencyreceived: mapCurrencyAmounts(obj["currencyreceived"], method, "currencyreceived"),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function mapAddressUtxo(raw, index) {
|
|
30
|
+
const method = "getaddressutxos";
|
|
31
|
+
const obj = expectObject(raw, method);
|
|
32
|
+
const ctx = (field) => ({ method, field: `[${index}].${field}` });
|
|
33
|
+
return withPassthrough(obj, {
|
|
34
|
+
address: mapString(obj["address"], ctx("address")),
|
|
35
|
+
txid: mapString(obj["txid"], ctx("txid")),
|
|
36
|
+
outputIndex: mapInt(obj["outputIndex"], ctx("outputIndex")),
|
|
37
|
+
script: mapString(obj["script"], ctx("script")),
|
|
38
|
+
satoshis: mapSats(obj["satoshis"], ctx("satoshis")),
|
|
39
|
+
height: mapIntOptional(obj["height"], ctx("height")),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function mapAddressDelta(raw, method, index) {
|
|
43
|
+
const obj = expectObject(raw, method);
|
|
44
|
+
const ctx = (field) => ({ method, field: `[${index}].${field}` });
|
|
45
|
+
return withPassthrough(obj, {
|
|
46
|
+
address: mapString(obj["address"], ctx("address")),
|
|
47
|
+
txid: mapString(obj["txid"], ctx("txid")),
|
|
48
|
+
satoshis: mapSats(obj["satoshis"], ctx("satoshis"), { signed: true }),
|
|
49
|
+
index: mapInt(obj["index"], ctx("index")),
|
|
50
|
+
blockindex: mapIntOptional(obj["blockindex"], ctx("blockindex")),
|
|
51
|
+
height: mapIntOptional(obj["height"], ctx("height")),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/** Address index queries (transparent addresses, cross-wallet). */
|
|
55
|
+
export class AddressIndexApi {
|
|
56
|
+
transport;
|
|
57
|
+
constructor(transport) {
|
|
58
|
+
this.transport = transport;
|
|
59
|
+
}
|
|
60
|
+
/** Balance/received of arbitrary transparent addresses — bigint sats. */
|
|
61
|
+
async getAddressBalance(options) {
|
|
62
|
+
return mapAddressBalance(await this.transport.request("getaddressbalance", [{ addresses: options.addresses }]));
|
|
63
|
+
}
|
|
64
|
+
/** Unspent outputs of arbitrary transparent addresses — bigint sats. */
|
|
65
|
+
async getAddressUtxos(options) {
|
|
66
|
+
const result = expectArray(await this.transport.request("getaddressutxos", [{ addresses: options.addresses }]), "getaddressutxos");
|
|
67
|
+
return result.map((item, i) => mapAddressUtxo(item, i));
|
|
68
|
+
}
|
|
69
|
+
/** Balance changes per address over a height range — signed bigint sats. */
|
|
70
|
+
async getAddressDeltas(options) {
|
|
71
|
+
const query = { addresses: options.addresses };
|
|
72
|
+
if (options.start !== undefined)
|
|
73
|
+
query["start"] = options.start;
|
|
74
|
+
if (options.end !== undefined)
|
|
75
|
+
query["end"] = options.end;
|
|
76
|
+
const result = expectArray(await this.transport.request("getaddressdeltas", [query]), "getaddressdeltas");
|
|
77
|
+
return result.map((item, i) => mapAddressDelta(item, "getaddressdeltas", i));
|
|
78
|
+
}
|
|
79
|
+
/** Mempool deltas touching these addresses — signed bigint sats. */
|
|
80
|
+
async getAddressMempool(options) {
|
|
81
|
+
const result = expectArray(await this.transport.request("getaddressmempool", [{ addresses: options.addresses }]), "getaddressmempool");
|
|
82
|
+
return result.map((item, i) => mapAddressDelta(item, "getaddressmempool", i));
|
|
83
|
+
}
|
|
84
|
+
/** Txids touching these addresses (optionally height-bounded). */
|
|
85
|
+
async getAddressTxids(options) {
|
|
86
|
+
const query = { addresses: options.addresses };
|
|
87
|
+
if (options.start !== undefined)
|
|
88
|
+
query["start"] = options.start;
|
|
89
|
+
if (options.end !== undefined)
|
|
90
|
+
query["end"] = options.end;
|
|
91
|
+
return mapStringArray(await this.transport.request("getaddresstxids", [query]), {
|
|
92
|
+
method: "getaddresstxids",
|
|
93
|
+
field: "(result)",
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=addressindex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressindex.js","sourceRoot":"","sources":["../../src/methods/addressindex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { RpcTransport } from "../transport.js";
|
|
2
|
+
/**
|
|
3
|
+
* Blockchain / Rawtransactions / Network / Util reads and the raw-tx build
|
|
4
|
+
* chain. Mostly T2 (typed, decimal-string value fields); a couple of
|
|
5
|
+
* high-value reads (getblock header, getvdxfid) are curated T1.
|
|
6
|
+
*/
|
|
7
|
+
export interface GetVdxfIdResult {
|
|
8
|
+
/** The i-address form of the VDXF key. */
|
|
9
|
+
vdxfid?: string | undefined;
|
|
10
|
+
hash160result: string;
|
|
11
|
+
qualifiedname: {
|
|
12
|
+
name: string;
|
|
13
|
+
namespace?: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface CreateRawTransactionInput {
|
|
18
|
+
txid: string;
|
|
19
|
+
vout: number;
|
|
20
|
+
sequence?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface RawTransactionOptions {
|
|
23
|
+
/** Address → amount (bigint sats) or currency-object output. */
|
|
24
|
+
outputs: Record<string, unknown>[];
|
|
25
|
+
inputs?: CreateRawTransactionInput[];
|
|
26
|
+
locktime?: number;
|
|
27
|
+
expiryHeight?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function mapGetVdxfId(raw: unknown): GetVdxfIdResult;
|
|
30
|
+
/** Blockchain and general reads + raw-transaction chain. */
|
|
31
|
+
export declare class BlockchainApi {
|
|
32
|
+
private readonly transport;
|
|
33
|
+
constructor(transport: RpcTransport);
|
|
34
|
+
/** VDXF key id for a namespaced name. */
|
|
35
|
+
getVdxfId(options: {
|
|
36
|
+
name: string;
|
|
37
|
+
parent?: string;
|
|
38
|
+
}): Promise<GetVdxfIdResult>;
|
|
39
|
+
/** Best-chain block count. */
|
|
40
|
+
getBlockCount(): Promise<number>;
|
|
41
|
+
/** Block hash at a height. */
|
|
42
|
+
getBlockHash(height: number): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Block by hash or height. `verbosity`: 0 = hex, 1 = header+txids
|
|
45
|
+
* (default), 2 = full tx detail. Heights are passed as strings (daemon
|
|
46
|
+
* requirement). T2.
|
|
47
|
+
*/
|
|
48
|
+
getBlock(options: {
|
|
49
|
+
hashOrHeight: string | number;
|
|
50
|
+
verbosity?: 0 | 1 | 2;
|
|
51
|
+
}): Promise<unknown>;
|
|
52
|
+
/** Chain state summary. T2. */
|
|
53
|
+
getBlockchainInfo(): Promise<Record<string, unknown>>;
|
|
54
|
+
/** Node/mempool/chain info. T2. */
|
|
55
|
+
getMiningInfo(): Promise<Record<string, unknown>>;
|
|
56
|
+
/** Block reward split at a height. T2 — decimal strings. */
|
|
57
|
+
getBlockSubsidy(options?: {
|
|
58
|
+
height?: number;
|
|
59
|
+
}): Promise<Record<string, unknown>>;
|
|
60
|
+
/** Decoded raw transaction. `verbose` controls hex vs object. T2. */
|
|
61
|
+
getRawTransaction(options: {
|
|
62
|
+
txid: string;
|
|
63
|
+
verbose?: boolean;
|
|
64
|
+
}): Promise<unknown>;
|
|
65
|
+
/** UTXO details (null if spent/unknown). T2 — value as decimal string. */
|
|
66
|
+
getTxOut(options: {
|
|
67
|
+
txid: string;
|
|
68
|
+
vout: number;
|
|
69
|
+
includeMempool?: boolean;
|
|
70
|
+
}): Promise<Record<string, unknown> | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Build an unsigned raw transaction. Amount outputs accept bigint sats and
|
|
73
|
+
* are serialized losslessly. T2. Chain: createRawTransaction →
|
|
74
|
+
* (fund)/signRawTransaction → sendRawTransaction.
|
|
75
|
+
*/
|
|
76
|
+
createRawTransaction(options: RawTransactionOptions): Promise<string>;
|
|
77
|
+
/** Sign a raw transaction with wallet keys. T2 — `{hex, complete}`. */
|
|
78
|
+
signRawTransaction(options: {
|
|
79
|
+
hex: string;
|
|
80
|
+
}): Promise<Record<string, unknown>>;
|
|
81
|
+
/** Broadcast a signed raw transaction. Returns the txid. T2. */
|
|
82
|
+
sendRawTransaction(options: {
|
|
83
|
+
hex: string;
|
|
84
|
+
allowHighFees?: boolean;
|
|
85
|
+
}): Promise<string>;
|
|
86
|
+
/** Connected-peer info. T2. */
|
|
87
|
+
getPeerInfo(): Promise<unknown[]>;
|
|
88
|
+
/** P2P/network summary. T2. */
|
|
89
|
+
getNetworkInfo(): Promise<Record<string, unknown>>;
|
|
90
|
+
/** Validate an address / return its metadata. T2. */
|
|
91
|
+
validateAddress(options: {
|
|
92
|
+
address: string;
|
|
93
|
+
}): Promise<Record<string, unknown>>;
|
|
94
|
+
/** Fee estimate (VRSC/kB) for a confirmation target. T2 — decimal string. */
|
|
95
|
+
estimateFee(options: {
|
|
96
|
+
blocks: number;
|
|
97
|
+
}): Promise<string>;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=blockchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockchain.d.ts","sourceRoot":"","sources":["../../src/methods/blockchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { toSafeNumbers } from "../lossless.js";
|
|
2
|
+
import { expectObject, mapInt, mapString, mapStringOptional, withPassthrough } from "../mapping.js";
|
|
3
|
+
import { requestT2 } from "./t2.js";
|
|
4
|
+
export function mapGetVdxfId(raw) {
|
|
5
|
+
const method = "getvdxfid";
|
|
6
|
+
const obj = expectObject(raw, method);
|
|
7
|
+
const qn = expectObject(obj["qualifiedname"], method);
|
|
8
|
+
return withPassthrough(obj, {
|
|
9
|
+
vdxfid: mapStringOptional(obj["vdxfid"], { method, field: "vdxfid" }),
|
|
10
|
+
hash160result: mapString(obj["hash160result"], { method, field: "hash160result" }),
|
|
11
|
+
qualifiedname: {
|
|
12
|
+
name: mapString(qn["name"], { method, field: "qualifiedname.name" }),
|
|
13
|
+
namespace: mapStringOptional(qn["namespace"], { method, field: "qualifiedname.namespace" }),
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/** Blockchain and general reads + raw-transaction chain. */
|
|
18
|
+
export class BlockchainApi {
|
|
19
|
+
transport;
|
|
20
|
+
constructor(transport) {
|
|
21
|
+
this.transport = transport;
|
|
22
|
+
}
|
|
23
|
+
// -------------------------------------------------------------------------
|
|
24
|
+
// T1 curated
|
|
25
|
+
/** VDXF key id for a namespaced name. */
|
|
26
|
+
async getVdxfId(options) {
|
|
27
|
+
const params = [options.name];
|
|
28
|
+
if (options.parent !== undefined)
|
|
29
|
+
params.push({ parent: options.parent });
|
|
30
|
+
return mapGetVdxfId(await this.transport.request("getvdxfid", params));
|
|
31
|
+
}
|
|
32
|
+
/** Best-chain block count. */
|
|
33
|
+
async getBlockCount() {
|
|
34
|
+
return mapInt(await this.transport.request("getblockcount", []), {
|
|
35
|
+
method: "getblockcount",
|
|
36
|
+
field: "(result)",
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/** Block hash at a height. */
|
|
40
|
+
async getBlockHash(height) {
|
|
41
|
+
return mapString(await this.transport.request("getblockhash", [height]), {
|
|
42
|
+
method: "getblockhash",
|
|
43
|
+
field: "(result)",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// -------------------------------------------------------------------------
|
|
47
|
+
// T2 typed (value fields as exact decimal strings)
|
|
48
|
+
/**
|
|
49
|
+
* Block by hash or height. `verbosity`: 0 = hex, 1 = header+txids
|
|
50
|
+
* (default), 2 = full tx detail. Heights are passed as strings (daemon
|
|
51
|
+
* requirement). T2.
|
|
52
|
+
*/
|
|
53
|
+
async getBlock(options) {
|
|
54
|
+
const params = [String(options.hashOrHeight)];
|
|
55
|
+
if (options.verbosity !== undefined)
|
|
56
|
+
params.push(options.verbosity);
|
|
57
|
+
return requestT2(this.transport, "getblock", params);
|
|
58
|
+
}
|
|
59
|
+
/** Chain state summary. T2. */
|
|
60
|
+
async getBlockchainInfo() {
|
|
61
|
+
return requestT2(this.transport, "getblockchaininfo", []);
|
|
62
|
+
}
|
|
63
|
+
/** Node/mempool/chain info. T2. */
|
|
64
|
+
async getMiningInfo() {
|
|
65
|
+
return requestT2(this.transport, "getmininginfo", []);
|
|
66
|
+
}
|
|
67
|
+
/** Block reward split at a height. T2 — decimal strings. */
|
|
68
|
+
async getBlockSubsidy(options) {
|
|
69
|
+
const params = options?.height === undefined ? [] : [options.height];
|
|
70
|
+
return requestT2(this.transport, "getblocksubsidy", params);
|
|
71
|
+
}
|
|
72
|
+
/** Decoded raw transaction. `verbose` controls hex vs object. T2. */
|
|
73
|
+
async getRawTransaction(options) {
|
|
74
|
+
const params = [options.txid];
|
|
75
|
+
if (options.verbose !== undefined)
|
|
76
|
+
params.push(options.verbose ? 1 : 0);
|
|
77
|
+
return requestT2(this.transport, "getrawtransaction", params);
|
|
78
|
+
}
|
|
79
|
+
/** UTXO details (null if spent/unknown). T2 — value as decimal string. */
|
|
80
|
+
async getTxOut(options) {
|
|
81
|
+
const params = [options.txid, options.vout];
|
|
82
|
+
if (options.includeMempool !== undefined)
|
|
83
|
+
params.push(options.includeMempool);
|
|
84
|
+
const result = await requestT2(this.transport, "gettxout", params);
|
|
85
|
+
return result ?? null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build an unsigned raw transaction. Amount outputs accept bigint sats and
|
|
89
|
+
* are serialized losslessly. T2. Chain: createRawTransaction →
|
|
90
|
+
* (fund)/signRawTransaction → sendRawTransaction.
|
|
91
|
+
*/
|
|
92
|
+
async createRawTransaction(options) {
|
|
93
|
+
const inputs = (options.inputs ?? []).map((input) => {
|
|
94
|
+
const raw = { txid: input.txid, vout: input.vout };
|
|
95
|
+
if (input.sequence !== undefined)
|
|
96
|
+
raw["sequence"] = input.sequence;
|
|
97
|
+
return raw;
|
|
98
|
+
});
|
|
99
|
+
const outputs = toSafeNumbers(options.outputs); // caller-provided; kept opaque
|
|
100
|
+
const params = [inputs, outputs];
|
|
101
|
+
if (options.locktime !== undefined || options.expiryHeight !== undefined)
|
|
102
|
+
params.push(options.locktime ?? 0);
|
|
103
|
+
if (options.expiryHeight !== undefined)
|
|
104
|
+
params.push(options.expiryHeight);
|
|
105
|
+
return requestT2(this.transport, "createrawtransaction", params);
|
|
106
|
+
}
|
|
107
|
+
/** Sign a raw transaction with wallet keys. T2 — `{hex, complete}`. */
|
|
108
|
+
async signRawTransaction(options) {
|
|
109
|
+
return requestT2(this.transport, "signrawtransaction", [options.hex]);
|
|
110
|
+
}
|
|
111
|
+
/** Broadcast a signed raw transaction. Returns the txid. T2. */
|
|
112
|
+
async sendRawTransaction(options) {
|
|
113
|
+
const params = [options.hex];
|
|
114
|
+
if (options.allowHighFees !== undefined)
|
|
115
|
+
params.push(options.allowHighFees);
|
|
116
|
+
return mapString(await this.transport.request("sendrawtransaction", params), {
|
|
117
|
+
method: "sendrawtransaction",
|
|
118
|
+
field: "(result)",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// -------------------------------------------------------------------------
|
|
122
|
+
// Network / Util reads. T2.
|
|
123
|
+
/** Connected-peer info. T2. */
|
|
124
|
+
async getPeerInfo() {
|
|
125
|
+
return requestT2(this.transport, "getpeerinfo", []);
|
|
126
|
+
}
|
|
127
|
+
/** P2P/network summary. T2. */
|
|
128
|
+
async getNetworkInfo() {
|
|
129
|
+
return requestT2(this.transport, "getnetworkinfo", []);
|
|
130
|
+
}
|
|
131
|
+
/** Validate an address / return its metadata. T2. */
|
|
132
|
+
async validateAddress(options) {
|
|
133
|
+
return requestT2(this.transport, "validateaddress", [options.address]);
|
|
134
|
+
}
|
|
135
|
+
/** Fee estimate (VRSC/kB) for a confirmation target. T2 — decimal string. */
|
|
136
|
+
async estimateFee(options) {
|
|
137
|
+
const result = await requestT2(this.transport, "estimatefee", [options.blocks]);
|
|
138
|
+
return typeof result === "string" ? result : String(result);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=blockchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/methods/blockchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { RpcTransport } from "../transport.js";
|
|
2
|
+
/**
|
|
3
|
+
* `getinfo` — curated against verusd v1.2.17. Value fields (`paytxfee`,
|
|
4
|
+
* `relayfee`) are bigint sats; unknown fields pass through with safe-number
|
|
5
|
+
* conversion.
|
|
6
|
+
*/
|
|
7
|
+
export interface GetInfoResult {
|
|
8
|
+
version: number;
|
|
9
|
+
protocolversion: number;
|
|
10
|
+
VRSCversion: string;
|
|
11
|
+
chainid?: string | undefined;
|
|
12
|
+
name?: string | undefined;
|
|
13
|
+
blocks: number;
|
|
14
|
+
longestchain: number;
|
|
15
|
+
timeoffset?: number | undefined;
|
|
16
|
+
connections: number;
|
|
17
|
+
proxy?: string | undefined;
|
|
18
|
+
difficulty: number;
|
|
19
|
+
testnet: boolean;
|
|
20
|
+
keypoololdest?: number | undefined;
|
|
21
|
+
keypoolsize?: number | undefined;
|
|
22
|
+
/** Wallet's transaction fee — bigint sats. */
|
|
23
|
+
paytxfee: bigint;
|
|
24
|
+
/** Minimum relay fee — bigint sats. */
|
|
25
|
+
relayfee: bigint;
|
|
26
|
+
errors: string;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
export declare function mapGetInfo(raw: unknown): GetInfoResult;
|
|
30
|
+
/** Blockchain-family reads (T1 surface grows in later Etappen). */
|
|
31
|
+
export declare class ChainApi {
|
|
32
|
+
private readonly transport;
|
|
33
|
+
constructor(transport: RpcTransport);
|
|
34
|
+
/** Daemon/chain state. `VRSCversion` is the runtime daemon-version check. */
|
|
35
|
+
getInfo(): Promise<GetInfoResult>;
|
|
36
|
+
/** Height of the longest block chain the node sees. */
|
|
37
|
+
getBlockCount(): Promise<number>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/methods/chain.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAuBtD;AAED,mEAAmE;AACnE,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,YAAY;IAEpD,6EAA6E;IACvE,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAIvC,uDAAuD;IACjD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAMvC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { expectObject, mapAmount, mapBoolean, mapFloat, mapInt, mapIntOptional, mapString, mapStringOptional, withPassthrough, } from "../mapping.js";
|
|
2
|
+
export function mapGetInfo(raw) {
|
|
3
|
+
const method = "getinfo";
|
|
4
|
+
const obj = expectObject(raw, method);
|
|
5
|
+
const ctx = (field) => ({ method, field });
|
|
6
|
+
return withPassthrough(obj, {
|
|
7
|
+
version: mapInt(obj["version"], ctx("version")),
|
|
8
|
+
protocolversion: mapInt(obj["protocolversion"], ctx("protocolversion")),
|
|
9
|
+
VRSCversion: mapString(obj["VRSCversion"], ctx("VRSCversion")),
|
|
10
|
+
chainid: mapStringOptional(obj["chainid"], ctx("chainid")),
|
|
11
|
+
name: mapStringOptional(obj["name"], ctx("name")),
|
|
12
|
+
blocks: mapInt(obj["blocks"], ctx("blocks")),
|
|
13
|
+
longestchain: mapInt(obj["longestchain"], ctx("longestchain")),
|
|
14
|
+
timeoffset: mapIntOptional(obj["timeoffset"], ctx("timeoffset")),
|
|
15
|
+
connections: mapInt(obj["connections"], ctx("connections")),
|
|
16
|
+
proxy: mapStringOptional(obj["proxy"], ctx("proxy")),
|
|
17
|
+
difficulty: mapFloat(obj["difficulty"], ctx("difficulty")),
|
|
18
|
+
testnet: mapBoolean(obj["testnet"], ctx("testnet")),
|
|
19
|
+
keypoololdest: mapIntOptional(obj["keypoololdest"], ctx("keypoololdest")),
|
|
20
|
+
keypoolsize: mapIntOptional(obj["keypoolsize"], ctx("keypoolsize")),
|
|
21
|
+
paytxfee: mapAmount(obj["paytxfee"], ctx("paytxfee")),
|
|
22
|
+
relayfee: mapAmount(obj["relayfee"], ctx("relayfee")),
|
|
23
|
+
errors: mapString(obj["errors"], ctx("errors")),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** Blockchain-family reads (T1 surface grows in later Etappen). */
|
|
27
|
+
export class ChainApi {
|
|
28
|
+
transport;
|
|
29
|
+
constructor(transport) {
|
|
30
|
+
this.transport = transport;
|
|
31
|
+
}
|
|
32
|
+
/** Daemon/chain state. `VRSCversion` is the runtime daemon-version check. */
|
|
33
|
+
async getInfo() {
|
|
34
|
+
return mapGetInfo(await this.transport.request("getinfo", []));
|
|
35
|
+
}
|
|
36
|
+
/** Height of the longest block chain the node sees. */
|
|
37
|
+
async getBlockCount() {
|
|
38
|
+
return mapInt(await this.transport.request("getblockcount", []), {
|
|
39
|
+
method: "getblockcount",
|
|
40
|
+
field: "(result)",
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/methods/chain.ts"],"names":[],"mappings":"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"}
|