@thru/thru-sdk 0.1.29 → 0.1.33
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/README.md +27 -0
- package/dist/{VersionInfo-BLq6Evyp.d.ts → VersionInfo-BGciKJJA.d.ts} +128 -94
- package/dist/{chunk-QJACP7VX.js → chunk-ZLV6WP54.js} +543 -484
- package/dist/chunk-ZLV6WP54.js.map +1 -0
- package/dist/client.d.ts +3 -13
- package/dist/client.js +3 -13
- package/dist/client.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/sdk.d.ts +24 -4
- package/dist/sdk.js +18 -18
- package/dist/sdk.js.map +1 -1
- package/package.json +6 -5
- package/dist/chunk-QJACP7VX.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { messageDesc, fileDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2';
|
|
2
2
|
import { file_google_protobuf_timestamp, file_google_protobuf_descriptor, file_google_protobuf_duration } from '@bufbuild/protobuf/wkt';
|
|
3
|
+
import { utils, etc, Point, CURVE, getPublicKeyAsync } from '@noble/ed25519';
|
|
3
4
|
import { create } from '@bufbuild/protobuf';
|
|
4
|
-
import {
|
|
5
|
-
import { decodeAddress, isHexString, decodeSignature, ensureBytes, encodeAddress, hexToBytes, encodeSignature, decodeBase64 } from '@thru/helpers';
|
|
5
|
+
import { encodeAddress, decodeAddress, isHexString, hexToBytes, encodeSignature, decodeSignature, ensureBytes } from '@thru/helpers';
|
|
6
6
|
import { createClient } from '@connectrpc/connect';
|
|
7
7
|
import { createGrpcWebTransport } from '@connectrpc/connect-web';
|
|
8
8
|
import { sha256 } from '@noble/hashes/sha2';
|
|
@@ -28,6 +28,109 @@ var ConsensusStatus = /* @__PURE__ */ ((ConsensusStatus2) => {
|
|
|
28
28
|
ConsensusStatus2[ConsensusStatus2["CLUSTER_EXECUTED"] = 5] = "CLUSTER_EXECUTED";
|
|
29
29
|
return ConsensusStatus2;
|
|
30
30
|
})(ConsensusStatus || {});
|
|
31
|
+
var SignatureDomain = /* @__PURE__ */ ((SignatureDomain2) => {
|
|
32
|
+
SignatureDomain2[SignatureDomain2["TXN"] = 0] = "TXN";
|
|
33
|
+
SignatureDomain2[SignatureDomain2["BLOCK_HEADER"] = 1] = "BLOCK_HEADER";
|
|
34
|
+
SignatureDomain2[SignatureDomain2["BLOCK"] = 2] = "BLOCK";
|
|
35
|
+
SignatureDomain2[SignatureDomain2["GOSSIP"] = 3] = "GOSSIP";
|
|
36
|
+
return SignatureDomain2;
|
|
37
|
+
})(SignatureDomain || {});
|
|
38
|
+
var DOMAIN_TAGS = {
|
|
39
|
+
[0 /* TXN */]: 1n,
|
|
40
|
+
[1 /* BLOCK_HEADER */]: 2n,
|
|
41
|
+
[2 /* BLOCK */]: 3n,
|
|
42
|
+
[3 /* GOSSIP */]: 4n
|
|
43
|
+
};
|
|
44
|
+
var DOMAIN_BLOCK_SIZE = 128;
|
|
45
|
+
var SIGNATURE_SIZE = 64;
|
|
46
|
+
var PUBKEY_SIZE = 32;
|
|
47
|
+
function createDomainBlock(domain) {
|
|
48
|
+
const block = new Uint8Array(DOMAIN_BLOCK_SIZE);
|
|
49
|
+
block.fill(0);
|
|
50
|
+
const tag = DOMAIN_TAGS[domain];
|
|
51
|
+
if (tag === void 0) {
|
|
52
|
+
throw new Error(`Invalid signature domain: ${domain}`);
|
|
53
|
+
}
|
|
54
|
+
const view = new DataView(block.buffer, block.byteOffset, block.byteLength);
|
|
55
|
+
view.setBigUint64(0, tag, false);
|
|
56
|
+
return block;
|
|
57
|
+
}
|
|
58
|
+
function copyBytes(bytes) {
|
|
59
|
+
const out = new Uint8Array(bytes.length);
|
|
60
|
+
out.set(bytes);
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
function concatBytes(...arrays) {
|
|
64
|
+
return etc.concatBytes(...arrays);
|
|
65
|
+
}
|
|
66
|
+
function bytesToNumberLE(bytes) {
|
|
67
|
+
let value = 0n;
|
|
68
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
69
|
+
value += BigInt(bytes[i]) << 8n * BigInt(i);
|
|
70
|
+
}
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
function modOrder(value) {
|
|
74
|
+
const modulus = CURVE.n;
|
|
75
|
+
const result = value % modulus;
|
|
76
|
+
return result >= 0n ? result : result + modulus;
|
|
77
|
+
}
|
|
78
|
+
function numberToBytesLE(value, length) {
|
|
79
|
+
const out = new Uint8Array(length);
|
|
80
|
+
let current = value;
|
|
81
|
+
for (let i = 0; i < length; i++) {
|
|
82
|
+
out[i] = Number(current & 0xffn);
|
|
83
|
+
current >>= 8n;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
async function signWithDomain(message, privateKey, publicKey, domain = 0 /* TXN */) {
|
|
88
|
+
if (privateKey.length !== PUBKEY_SIZE) {
|
|
89
|
+
throw new Error("Private key must contain 32 bytes");
|
|
90
|
+
}
|
|
91
|
+
const domainBlock = createDomainBlock(domain);
|
|
92
|
+
const messageBytes = copyBytes(message);
|
|
93
|
+
const extended = await utils.getExtendedPublicKeyAsync(privateKey);
|
|
94
|
+
const publicKeyBytes = publicKey ? copyBytes(publicKey) : extended.pointBytes;
|
|
95
|
+
if (publicKeyBytes.length !== PUBKEY_SIZE) {
|
|
96
|
+
throw new Error("Public key must contain 32 bytes");
|
|
97
|
+
}
|
|
98
|
+
const rInput = concatBytes(domainBlock, extended.prefix, messageBytes);
|
|
99
|
+
const r = modOrder(bytesToNumberLE(await etc.sha512Async(rInput)));
|
|
100
|
+
const R = Point.BASE.multiply(r).toBytes();
|
|
101
|
+
const kInput = concatBytes(domainBlock, R, publicKeyBytes, messageBytes);
|
|
102
|
+
const k = modOrder(bytesToNumberLE(await etc.sha512Async(kInput)));
|
|
103
|
+
const s = modOrder(r + k * extended.scalar);
|
|
104
|
+
const signature = new Uint8Array(SIGNATURE_SIZE);
|
|
105
|
+
signature.set(R, 0);
|
|
106
|
+
signature.set(numberToBytesLE(s, PUBKEY_SIZE), PUBKEY_SIZE);
|
|
107
|
+
return signature;
|
|
108
|
+
}
|
|
109
|
+
async function verifyWithDomain(signature, message, publicKey, domain = 0 /* TXN */) {
|
|
110
|
+
if (signature.length !== SIGNATURE_SIZE || publicKey.length !== PUBKEY_SIZE) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const domainBlock = createDomainBlock(domain);
|
|
114
|
+
const messageBytes = copyBytes(message);
|
|
115
|
+
const rBytes = signature.subarray(0, PUBKEY_SIZE);
|
|
116
|
+
const s = bytesToNumberLE(signature.subarray(PUBKEY_SIZE));
|
|
117
|
+
if (s >= CURVE.n) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
let R;
|
|
121
|
+
let A;
|
|
122
|
+
try {
|
|
123
|
+
R = Point.fromHex(rBytes);
|
|
124
|
+
A = Point.fromHex(publicKey);
|
|
125
|
+
} catch {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const kInput = concatBytes(domainBlock, rBytes, publicKey, messageBytes);
|
|
129
|
+
const k = modOrder(bytesToNumberLE(await etc.sha512Async(kInput)));
|
|
130
|
+
const lhs = Point.BASE.multiply(s);
|
|
131
|
+
const rhs = R.add(A.multiply(k));
|
|
132
|
+
return lhs.add(rhs.negate()).clearCofactor().is0();
|
|
133
|
+
}
|
|
31
134
|
var file_thru_common_v1_primitives = /* @__PURE__ */ fileDesc("Ch90aHJ1L2NvbW1vbi92MS9wcmltaXRpdmVzLnByb3RvEg50aHJ1LmNvbW1vbi52MSIjCgZQdWJrZXkSGQoFdmFsdWUYASABKAxCCuBBArpIBHoCaCAiJgoJU2lnbmF0dXJlEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmhAIiYKCFRhUHVia2V5EhoKBXZhbHVlGAEgASgJQgvgQQK6SAVyA5gBLiIpCgtUc1NpZ25hdHVyZRIaCgV2YWx1ZRgBIAEoCUIL4EECukgFcgOYAVpCywEKEmNvbS50aHJ1LmNvbW1vbi52MUIPUHJpbWl0aXZlc1Byb3RvUAFaRGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvY29tbW9uL3YxO2NvbW1vbnYxogIDVENYqgIOVGhydS5Db21tb24uVjG6AgNUSFXKAg5UaHJ1XENvbW1vblxWMeICGlRocnVcQ29tbW9uXFYxXEdQQk1ldGFkYXRh6gIQVGhydTo6Q29tbW9uOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_field_behavior]);
|
|
32
135
|
var PubkeySchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives, 0);
|
|
33
136
|
var SignatureSchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives, 1);
|
|
@@ -35,13 +138,11 @@ var TaPubkeySchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives,
|
|
|
35
138
|
var TsSignatureSchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives, 3);
|
|
36
139
|
|
|
37
140
|
// thru-ts-client-sdk/proto/thru/core/v1/types_pb.ts
|
|
38
|
-
var file_thru_core_v1_types = /* @__PURE__ */ fileDesc("
|
|
141
|
+
var file_thru_core_v1_types = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvdHlwZXMucHJvdG8SDHRocnUuY29yZS52MSIhCgRIYXNoEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmggIiYKCUJsb2NrSGFzaBIZCgV2YWx1ZRgBIAEoDEIK4EECukgEegJoIEK5AQoQY29tLnRocnUuY29yZS52MUIKVHlwZXNQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives]);
|
|
39
142
|
var BlockHashSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_types, 1);
|
|
40
143
|
|
|
41
144
|
// thru-ts-client-sdk/proto/thru/core/v1/transaction_pb.ts
|
|
42
145
|
var file_thru_core_v1_transaction = /* @__PURE__ */ fileDesc("Ch50aHJ1L2NvcmUvdjEvdHJhbnNhY3Rpb24ucHJvdG8SDHRocnUuY29yZS52MSKgBAoRVHJhbnNhY3Rpb25IZWFkZXISOwoTZmVlX3BheWVyX3NpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEhQKB3ZlcnNpb24YAiABKA1CA+BBAhISCgVmbGFncxgDIAEoDUID4EECEiUKGHJlYWR3cml0ZV9hY2NvdW50c19jb3VudBgEIAEoDUID4EECEiQKF3JlYWRvbmx5X2FjY291bnRzX2NvdW50GAUgASgNQgPgQQISIgoVaW5zdHJ1Y3Rpb25fZGF0YV9zaXplGAYgASgNQgPgQQISJAoXcmVxdWVzdGVkX2NvbXB1dGVfdW5pdHMYByABKA1CA+BBAhIiChVyZXF1ZXN0ZWRfc3RhdGVfdW5pdHMYCCABKA1CA+BBAhIjChZyZXF1ZXN0ZWRfbWVtb3J5X3VuaXRzGAkgASgNQgPgQQISGQoMZXhwaXJ5X2FmdGVyGAogASgNQgPgQQISEAoDZmVlGAsgASgEQgPgQQISEgoFbm9uY2UYDCABKARCA+BBAhIXCgpzdGFydF9zbG90GA0gASgEQgPgQQISNQoQZmVlX3BheWVyX3B1YmtleRgOIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjMKDnByb2dyYW1fcHVia2V5GA8gASgLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQIi8gMKGlRyYW5zYWN0aW9uRXhlY3V0aW9uUmVzdWx0EiMKFmNvbnN1bWVkX2NvbXB1dGVfdW5pdHMYASABKA1CA+BBAhIiChVjb25zdW1lZF9tZW1vcnlfdW5pdHMYAiABKA1CA+BBAhIhChRjb25zdW1lZF9zdGF0ZV91bml0cxgDIAEoDUID4EECEhwKD3VzZXJfZXJyb3JfY29kZRgEIAEoBEID4EECEjcKCHZtX2Vycm9yGAUgASgOMiAudGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uVm1FcnJvckID4EECEh0KEGV4ZWN1dGlvbl9yZXN1bHQYBiABKARCA+BBAhIXCgpwYWdlc191c2VkGAcgASgNQgPgQQISGQoMZXZlbnRzX2NvdW50GAggASgNQgPgQQISGAoLZXZlbnRzX3NpemUYCSABKA1CA+BBAhI3ChJyZWFkd3JpdGVfYWNjb3VudHMYCiADKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBARI2ChFyZWFkb25seV9hY2NvdW50cxgLIAMoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EEBEjMKBmV2ZW50cxgMIAMoCzIeLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbkV2ZW50QgPgQQEingEKEFRyYW5zYWN0aW9uRXZlbnQSFQoIZXZlbnRfaWQYASABKAlCA+BBAhIVCghjYWxsX2lkeBgCIAEoDUID4EECEhgKC3Byb2dyYW1faWR4GAMgASgNQgPgQQISLAoHcHJvZ3JhbRgEIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEhQKB3BheWxvYWQYBSABKAxCA+BBAiLWAgoLVHJhbnNhY3Rpb24SMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISNAoGaGVhZGVyGAIgASgLMh8udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uSGVhZGVyQgPgQQISIAoEYm9keRgDIAEoDEIN4EEBukgHegUYgICACEgAiAEBEkwKEGV4ZWN1dGlvbl9yZXN1bHQYBCABKAsyKC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHRCA+BBAUgBiAEBEhYKBHNsb3QYBSABKARCA+BBAUgCiAEBEh4KDGJsb2NrX29mZnNldBgGIAEoDUID4EEBSAOIAQFCBwoFX2JvZHlCEwoRX2V4ZWN1dGlvbl9yZXN1bHRCBwoFX3Nsb3RCDwoNX2Jsb2NrX29mZnNldCJrCg5SYXdUcmFuc2FjdGlvbhIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhImCg9yYXdfdHJhbnNhY3Rpb24YAiABKAxCDeBBArpIB3oFGICAgAgquwEKD1RyYW5zYWN0aW9uVmlldxIgChxUUkFOU0FDVElPTl9WSUVXX1VOU1BFQ0lGSUVEEAASIwofVFJBTlNBQ1RJT05fVklFV19TSUdOQVRVUkVfT05MWRABEiAKHFRSQU5TQUNUSU9OX1ZJRVdfSEVBREVSX09OTFkQAhIkCiBUUkFOU0FDVElPTl9WSUVXX0hFQURFUl9BTkRfQk9EWRADEhkKFVRSQU5TQUNUSU9OX1ZJRVdfRlVMTBAEKpgMChJUcmFuc2FjdGlvblZtRXJyb3ISIgoeVFJBTlNBQ1RJT05fVk1fRVhFQ1VURV9TVUNDRVNTEAASMAojVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GT1JNQVQQgf7/////////ARIxCiRUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX1ZFUlNJT04Qgv7/////////ARIvCiJUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZMQUdTEIP+/////////wESMwomVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9TSUdOQVRVUkUQhP7/////////ARIzCiZUUkFOU0FDVElPTl9WTV9FUlJPUl9EVVBMSUNBVEVfQUNDT1VOVBCF/v////////8BEjMKJlRSQU5TQUNUSU9OX1ZNX0VSUk9SX1VOU09SVEVEX0FDQ09VTlRTEIb+/////////wESPQowVFJBTlNBQ1RJT05fVk1fRVJST1JfVU5TT1JURURfUkVBRFdSSVRFX0FDQ09VTlRTEIf+/////////wESPAovVFJBTlNBQ1RJT05fVk1fRVJST1JfVU5TT1JURURfUkVBRE9OTFlfQUNDT1VOVFMQiP7/////////ARI+CjFUUkFOU0FDVElPTl9WTV9FUlJPUl9BQ0NPVU5UX0NPVU5UX0xJTUlUX0VYQ0VFREVEEIn+/////////wESLwoiVFJBTlNBQ1RJT05fVk1fRVJST1JfTk9OQ0VfVE9PX0xPVxCB/P////////8BEjAKI1RSQU5TQUNUSU9OX1ZNX0VSUk9SX05PTkNFX1RPT19ISUdIEIL8/////////wESQAozVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5TVUZGSUNJRU5UX0ZFRV9QQVlFUl9CQUxBTkNFEIP8/////////wESQgo1VFJBTlNBQ1RJT05fVk1fRVJST1JfRkVFX1BBWUVSX0FDQ09VTlRfRE9FU19OT1RfRVhJU1QQhPz/////////ARIuCiFUUkFOU0FDVElPTl9WTV9FUlJPUl9OT1RfTElWRV9ZRVQQhfz/////////ARIpChxUUkFOU0FDVElPTl9WTV9FUlJPUl9FWFBJUkVEEIb8/////////wESPwoyVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0YQh/z/////////ARJECjdUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZFRV9QQVlFUl9TVEFURV9QUk9PRl9UWVBFEIj8/////////wESRAo3VFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0ZfU0xPVBCJ/P////////8BEkEKNFRSQU5TQUNUSU9OX1ZNX0VSUk9SX0lOVkFMSURfRkVFX1BBWUVSX0FDQ09VTlRfT1dORVIQivz/////////ARJNCkBUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZFRV9QQVlFUl9TVEFURV9QUk9PRl9BQ0NPVU5UX09XTkVSEIv8/////////wESVApHVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0ZfQUNDT1VOVF9NRVRBX0RBVEFfU1oQjPz/////////ARIrCh5UUkFOU0FDVElPTl9WTV9FUlJPUl9WTV9GQUlMRUQQgfr/////////ARI5CixUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX1BST0dSQU1fQUNDT1VOVBCC+v////////8BEisKHlRSQU5TQUNUSU9OX1ZNX0VSUk9SX1ZNX1JFVkVSVBCD+v////////8BEi4KIVRSQU5TQUNUSU9OX1ZNX0VSUk9SX0NVX0VYSEFVU1RFRBCE+v////////8BEi4KIVRSQU5TQUNUSU9OX1ZNX0VSUk9SX1NVX0VYSEFVU1RFRBCF+v////////8BQr8BChBjb20udGhydS5jb3JlLnYxQhBUcmFuc2FjdGlvblByb3RvUAFaQGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvY29yZS92MTtjb3JldjGiAgNUQ1iqAgxUaHJ1LkNvcmUuVjG6AgRUSFVDygIMVGhydVxDb3JlXFYx4gIYVGhydVxDb3JlXFYxXEdQQk1ldGFkYXRh6gIOVGhydTo6Q29yZTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_core_v1_types, file_thru_common_v1_primitives]);
|
|
43
|
-
var TransactionExecutionResultSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_transaction, 1);
|
|
44
|
-
var TransactionEventSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_transaction, 2);
|
|
45
146
|
var TransactionView = /* @__PURE__ */ ((TransactionView2) => {
|
|
46
147
|
TransactionView2[TransactionView2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
47
148
|
TransactionView2[TransactionView2["SIGNATURE_ONLY"] = 1] = "SIGNATURE_ONLY";
|
|
@@ -81,232 +182,201 @@ var TransactionVmError = /* @__PURE__ */ ((TransactionVmError2) => {
|
|
|
81
182
|
return TransactionVmError2;
|
|
82
183
|
})(TransactionVmError || {});
|
|
83
184
|
|
|
84
|
-
// thru-ts-client-sdk/
|
|
85
|
-
|
|
86
|
-
var PUBKEY_SIZE = 32;
|
|
87
|
-
var HASH_SIZE = 32;
|
|
88
|
-
var BLOCK_HEADER_SIZE = 160;
|
|
89
|
-
var BLOCK_FOOTER_SIZE = 136;
|
|
90
|
-
var BLOCK_VERSION_V1 = 1;
|
|
91
|
-
var TXN_HEADER_SIZE = 176;
|
|
92
|
-
var TXN_VERSION_V1 = 1;
|
|
93
|
-
var TXN_MAX_ACCOUNTS = 1024;
|
|
94
|
-
var STATE_PROOF_HEADER_SIZE = 40;
|
|
95
|
-
var ACCOUNT_META_FOOTPRINT = 64;
|
|
96
|
-
var TXN_FLAG_HAS_FEE_PAYER_PROOF = 1 << 0;
|
|
97
|
-
var STATE_PROOF_TYPE_EXISTING = 0;
|
|
98
|
-
var STATE_PROOF_TYPE_UPDATING = 1;
|
|
99
|
-
var STATE_PROOF_TYPE_CREATION = 2;
|
|
100
|
-
var PUBKEY_LENGTH = 32;
|
|
101
|
-
var SIGNATURE_LENGTH = 64;
|
|
102
|
-
var TA_ADDRESS_LENGTH = 46;
|
|
103
|
-
var TS_SIGNATURE_LENGTH = 90;
|
|
104
|
-
function copyBytes(source) {
|
|
185
|
+
// thru-ts-client-sdk/domain/primitives/byte-utils.ts
|
|
186
|
+
function copyBytes2(source) {
|
|
105
187
|
const bytes = new Uint8Array(source.length);
|
|
106
188
|
bytes.set(source);
|
|
107
189
|
return bytes;
|
|
108
190
|
}
|
|
109
|
-
function
|
|
110
|
-
return value.startsWith("ta") && value.length === TA_ADDRESS_LENGTH;
|
|
111
|
-
}
|
|
112
|
-
function isTsSignature(value) {
|
|
113
|
-
return value.startsWith("ts") && value.length === TS_SIGNATURE_LENGTH;
|
|
114
|
-
}
|
|
115
|
-
function ensureExactLength(bytes, expected, field) {
|
|
191
|
+
function ensureExactLength(bytes, expected) {
|
|
116
192
|
if (bytes.length !== expected) {
|
|
117
|
-
throw new Error(
|
|
193
|
+
throw new Error(`Must contain ${expected} bytes`);
|
|
118
194
|
}
|
|
119
|
-
return
|
|
195
|
+
return copyBytes2(bytes);
|
|
120
196
|
}
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
return
|
|
124
|
-
} catch {
|
|
125
|
-
throw new Error(message);
|
|
197
|
+
function bytesEqual(a, b) {
|
|
198
|
+
if (a.length !== b.length) {
|
|
199
|
+
return false;
|
|
126
200
|
}
|
|
201
|
+
for (let i = 0; i < a.length; i++) {
|
|
202
|
+
if (a[i] !== b[i]) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
127
207
|
}
|
|
128
|
-
function
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
throw new Error(message);
|
|
208
|
+
function bytesToHex(bytes) {
|
|
209
|
+
const hex = new Array(bytes.length);
|
|
210
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
211
|
+
hex[i] = bytes[i].toString(16).padStart(2, "0");
|
|
133
212
|
}
|
|
213
|
+
return hex.join("");
|
|
134
214
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
215
|
+
|
|
216
|
+
// thru-ts-client-sdk/domain/primitives/constants.ts
|
|
217
|
+
var PUBKEY_LENGTH = 32;
|
|
218
|
+
var SIGNATURE_LENGTH = 64;
|
|
219
|
+
var TA_ADDRESS_LENGTH = 46;
|
|
220
|
+
var TS_SIGNATURE_LENGTH = 90;
|
|
221
|
+
|
|
222
|
+
// thru-ts-client-sdk/domain/primitives/Pubkey.ts
|
|
223
|
+
var Pubkey = class _Pubkey {
|
|
224
|
+
constructor(bytes) {
|
|
225
|
+
this.bytes = bytes;
|
|
138
226
|
}
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
return
|
|
227
|
+
static from(value) {
|
|
228
|
+
if (value instanceof _Pubkey) {
|
|
229
|
+
return value;
|
|
142
230
|
}
|
|
143
|
-
if (
|
|
144
|
-
return ensureExactLength(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
);
|
|
231
|
+
if (value instanceof Uint8Array) {
|
|
232
|
+
return new _Pubkey(ensureExactLength(value, PUBKEY_LENGTH));
|
|
233
|
+
}
|
|
234
|
+
if (typeof value === "string") {
|
|
235
|
+
return new _Pubkey(_Pubkey.bytesFromString(value));
|
|
149
236
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
PUBKEY_LENGTH,
|
|
153
|
-
field
|
|
237
|
+
throw new Error(
|
|
238
|
+
`Must be provided as Uint8Array, hex string, or ta-address`
|
|
154
239
|
);
|
|
155
240
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
function signatureBytesFromInput(value, field = "signature") {
|
|
159
|
-
if (value instanceof Uint8Array) {
|
|
160
|
-
return ensureExactLength(value, SIGNATURE_LENGTH, field);
|
|
241
|
+
static isThruFmt(value) {
|
|
242
|
+
return value.startsWith("ta") && value.length === TA_ADDRESS_LENGTH;
|
|
161
243
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
244
|
+
toBytes() {
|
|
245
|
+
return copyBytes2(this.bytes);
|
|
246
|
+
}
|
|
247
|
+
toBytesUnsafe() {
|
|
248
|
+
return this.bytes;
|
|
249
|
+
}
|
|
250
|
+
toThruFmt() {
|
|
251
|
+
return encodeAddress(this.bytes);
|
|
252
|
+
}
|
|
253
|
+
toHex() {
|
|
254
|
+
return bytesToHex(this.bytes);
|
|
255
|
+
}
|
|
256
|
+
equals(other) {
|
|
257
|
+
const candidate = _Pubkey.from(other);
|
|
258
|
+
return bytesEqual(this.bytes, candidate.bytes);
|
|
259
|
+
}
|
|
260
|
+
toProtoPubkey() {
|
|
261
|
+
return create(PubkeySchema, { value: this.toBytes() });
|
|
262
|
+
}
|
|
263
|
+
toProtoTaPubkey() {
|
|
264
|
+
return create(TaPubkeySchema, { value: this.toThruFmt() });
|
|
265
|
+
}
|
|
266
|
+
static fromProtoPubkey(proto) {
|
|
267
|
+
if (!proto?.value) {
|
|
268
|
+
throw new Error(`Proto is missing value`);
|
|
165
269
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
);
|
|
270
|
+
return new _Pubkey(ensureExactLength(proto.value, PUBKEY_LENGTH));
|
|
271
|
+
}
|
|
272
|
+
static fromProtoTaPubkey(proto) {
|
|
273
|
+
if (!proto?.value) {
|
|
274
|
+
throw new Error(`Proto is missing value`);
|
|
172
275
|
}
|
|
173
|
-
return ensureExactLength(
|
|
174
|
-
decodeBase64String(
|
|
175
|
-
value,
|
|
176
|
-
`${field} must be provided as Uint8Array, ts-encoded string, hex string, or base64 string`
|
|
177
|
-
),
|
|
178
|
-
SIGNATURE_LENGTH,
|
|
179
|
-
field
|
|
180
|
-
);
|
|
276
|
+
return new _Pubkey(ensureExactLength(decodeAddress(proto.value), PUBKEY_LENGTH));
|
|
181
277
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
if (typeof value === "string") {
|
|
186
|
-
if (!isTaAddress(value)) {
|
|
187
|
-
throw new Error(`${field} must be a ta-encoded address`);
|
|
278
|
+
static bytesFromString(value) {
|
|
279
|
+
if (_Pubkey.isThruFmt(value)) {
|
|
280
|
+
return ensureExactLength(decodeAddress(value), PUBKEY_LENGTH);
|
|
188
281
|
}
|
|
189
|
-
|
|
282
|
+
if (isHexString(value)) {
|
|
283
|
+
return ensureExactLength(hexToBytes(value), PUBKEY_LENGTH);
|
|
284
|
+
}
|
|
285
|
+
throw new Error(`Must be provided as hex string or ta-address`);
|
|
190
286
|
}
|
|
191
|
-
|
|
192
|
-
|
|
287
|
+
};
|
|
288
|
+
var Signature = class _Signature {
|
|
289
|
+
constructor(bytes) {
|
|
290
|
+
this.bytes = bytes;
|
|
193
291
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (typeof value === "string") {
|
|
198
|
-
if (!isTsSignature(value)) {
|
|
199
|
-
throw new Error(`${field} must be a ts-encoded signature`);
|
|
292
|
+
static from(value) {
|
|
293
|
+
if (value instanceof _Signature) {
|
|
294
|
+
return value;
|
|
200
295
|
}
|
|
201
|
-
|
|
296
|
+
if (value instanceof Uint8Array) {
|
|
297
|
+
return new _Signature(ensureExactLength(value, SIGNATURE_LENGTH));
|
|
298
|
+
}
|
|
299
|
+
if (typeof value === "string") {
|
|
300
|
+
return new _Signature(_Signature.bytesFromString(value));
|
|
301
|
+
}
|
|
302
|
+
throw new Error(
|
|
303
|
+
`Must be provided as Uint8Array, ts-encoded string, hex string, or base64 string`
|
|
304
|
+
);
|
|
202
305
|
}
|
|
203
|
-
|
|
204
|
-
|
|
306
|
+
static fromProto(proto) {
|
|
307
|
+
if (!proto?.value) {
|
|
308
|
+
throw new Error(`Proto is missing value`);
|
|
309
|
+
}
|
|
310
|
+
return new _Signature(ensureExactLength(proto.value, SIGNATURE_LENGTH));
|
|
205
311
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
function toPubkeyProto(value, field = "pubkey") {
|
|
209
|
-
return create(PubkeySchema, { value: pubkeyBytesFromInput(value, field) });
|
|
210
|
-
}
|
|
211
|
-
function toSignatureProto(value, field = "signature") {
|
|
212
|
-
return create(SignatureSchema, { value: signatureBytesFromInput(value, field) });
|
|
213
|
-
}
|
|
214
|
-
function toTaPubkeyProto(value, field = "taPubkey") {
|
|
215
|
-
return create(TaPubkeySchema, { value: taAddressStringFromInput(value, field) });
|
|
216
|
-
}
|
|
217
|
-
function toTsSignatureProto(value, field = "tsSignature") {
|
|
218
|
-
return create(TsSignatureSchema, { value: tsSignatureStringFromInput(value, field) });
|
|
219
|
-
}
|
|
220
|
-
function protoPubkeyToBytes(pubkey) {
|
|
221
|
-
if (!pubkey?.value || pubkey.value.length !== PUBKEY_LENGTH) {
|
|
222
|
-
return new Uint8Array(PUBKEY_LENGTH);
|
|
312
|
+
static isThruFmt(value) {
|
|
313
|
+
return value.startsWith("ts") && value.length === TS_SIGNATURE_LENGTH;
|
|
223
314
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
function protoSignatureToBytes(signature) {
|
|
227
|
-
if (!signature?.value || signature.value.length !== SIGNATURE_LENGTH) {
|
|
228
|
-
return void 0;
|
|
315
|
+
toBytes() {
|
|
316
|
+
return copyBytes2(this.bytes);
|
|
229
317
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
function protoTaPubkeyToString(value) {
|
|
233
|
-
return value?.value;
|
|
234
|
-
}
|
|
235
|
-
function protoTsSignatureToString(value) {
|
|
236
|
-
return value?.value;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// thru-ts-client-sdk/domain/transactions/utils.ts
|
|
240
|
-
var ACCOUNT_LIMIT = 1024;
|
|
241
|
-
function normalizeAccountList(accounts) {
|
|
242
|
-
if (accounts.length === 0) {
|
|
243
|
-
return [];
|
|
318
|
+
toBytesUnsafe() {
|
|
319
|
+
return this.bytes;
|
|
244
320
|
}
|
|
245
|
-
|
|
246
|
-
|
|
321
|
+
toThruFmt() {
|
|
322
|
+
return encodeSignature(this.bytes);
|
|
247
323
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
function dedupeAccountList(accounts) {
|
|
252
|
-
const seen = /* @__PURE__ */ new Map();
|
|
253
|
-
for (const account of accounts) {
|
|
254
|
-
if (account.length !== 32) {
|
|
255
|
-
throw new Error("Account addresses must contain 32 bytes");
|
|
256
|
-
}
|
|
257
|
-
const key = toHex(account);
|
|
258
|
-
if (!seen.has(key)) {
|
|
259
|
-
seen.set(key, new Uint8Array(account));
|
|
260
|
-
}
|
|
324
|
+
toHex() {
|
|
325
|
+
return bytesToHex(this.bytes);
|
|
261
326
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
for (let i = 0; i < 32; i++) {
|
|
266
|
-
if (a[i] !== b[i]) {
|
|
267
|
-
return a[i] - b[i];
|
|
268
|
-
}
|
|
327
|
+
equals(other) {
|
|
328
|
+
const candidate = _Signature.from(other);
|
|
329
|
+
return bytesEqual(this.bytes, candidate.bytes);
|
|
269
330
|
}
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
function toHex(bytes) {
|
|
273
|
-
let result = "";
|
|
274
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
275
|
-
const hex = bytes[i].toString(16).padStart(2, "0");
|
|
276
|
-
result += hex;
|
|
331
|
+
toProtoSignature() {
|
|
332
|
+
return create(SignatureSchema, { value: this.toBytes() });
|
|
277
333
|
}
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
function resolveProgramIdentifier(identifier) {
|
|
281
|
-
return pubkeyBytesFromInput(identifier, "program");
|
|
282
|
-
}
|
|
283
|
-
function parseAccountIdentifier(value, field) {
|
|
284
|
-
return pubkeyBytesFromInput(value, field);
|
|
285
|
-
}
|
|
286
|
-
function parseInstructionData(value) {
|
|
287
|
-
if (value === void 0) {
|
|
288
|
-
return void 0;
|
|
334
|
+
toProtoTsSignature() {
|
|
335
|
+
return create(TsSignatureSchema, { value: this.toThruFmt() });
|
|
289
336
|
}
|
|
290
|
-
|
|
291
|
-
|
|
337
|
+
static fromProtoTsSignature(proto) {
|
|
338
|
+
if (!proto?.value) {
|
|
339
|
+
throw new Error(`Proto is missing value`);
|
|
340
|
+
}
|
|
341
|
+
return new _Signature(ensureExactLength(decodeSignature(proto.value), SIGNATURE_LENGTH));
|
|
292
342
|
}
|
|
293
|
-
|
|
294
|
-
if (value
|
|
295
|
-
|
|
343
|
+
static fromProtoSignature(proto) {
|
|
344
|
+
if (!proto?.value) {
|
|
345
|
+
throw new Error(`Proto is missing value`);
|
|
346
|
+
}
|
|
347
|
+
return new _Signature(ensureExactLength(proto.value, SIGNATURE_LENGTH));
|
|
348
|
+
}
|
|
349
|
+
static bytesFromString(value) {
|
|
350
|
+
if (_Signature.isThruFmt(value)) {
|
|
351
|
+
return ensureExactLength(decodeSignature(value), SIGNATURE_LENGTH);
|
|
296
352
|
}
|
|
297
353
|
if (isHexString(value)) {
|
|
298
|
-
return hexToBytes(value);
|
|
354
|
+
return ensureExactLength(hexToBytes(value), SIGNATURE_LENGTH);
|
|
299
355
|
}
|
|
356
|
+
throw new Error(`Must be provided as ts-encoded string or hex string`);
|
|
300
357
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
// thru-ts-client-sdk/wire-format.ts
|
|
361
|
+
var SIGNATURE_SIZE2 = 64;
|
|
362
|
+
var PUBKEY_SIZE2 = 32;
|
|
363
|
+
var HASH_SIZE = 32;
|
|
364
|
+
var BLOCK_HEADER_SIZE = 168;
|
|
365
|
+
var BLOCK_FOOTER_SIZE = 104;
|
|
366
|
+
var BLOCK_VERSION_V1 = 1;
|
|
367
|
+
var TXN_HEADER_SIZE = 176;
|
|
368
|
+
var TXN_VERSION_V1 = 1;
|
|
369
|
+
var TXN_MAX_ACCOUNTS = 1024;
|
|
370
|
+
var STATE_PROOF_HEADER_SIZE = 40;
|
|
371
|
+
var ACCOUNT_META_FOOTPRINT = 64;
|
|
372
|
+
var TXN_FLAG_HAS_FEE_PAYER_PROOF = 1 << 0;
|
|
373
|
+
var STATE_PROOF_TYPE_EXISTING = 0;
|
|
374
|
+
var STATE_PROOF_TYPE_UPDATING = 1;
|
|
375
|
+
var STATE_PROOF_TYPE_CREATION = 2;
|
|
306
376
|
|
|
307
377
|
// thru-ts-client-sdk/domain/transactions/Transaction.ts
|
|
308
378
|
var DEFAULT_FLAGS = 0;
|
|
309
|
-
var SIGNATURE_PREFIX_SIZE =
|
|
379
|
+
var SIGNATURE_PREFIX_SIZE = SIGNATURE_SIZE2;
|
|
310
380
|
var MAX_INSTRUCTION_DATA_LENGTH = 65535;
|
|
311
381
|
var BYTE_POPCOUNT = new Uint8Array(256).map((_value, index) => {
|
|
312
382
|
let v = index;
|
|
@@ -320,8 +390,8 @@ var BYTE_POPCOUNT = new Uint8Array(256).map((_value, index) => {
|
|
|
320
390
|
var Transaction = class _Transaction {
|
|
321
391
|
constructor(params) {
|
|
322
392
|
this.version = params.version ?? TXN_VERSION_V1;
|
|
323
|
-
this.feePayer =
|
|
324
|
-
this.program =
|
|
393
|
+
this.feePayer = Pubkey.from(params.feePayer);
|
|
394
|
+
this.program = Pubkey.from(params.program);
|
|
325
395
|
this.fee = params.header.fee;
|
|
326
396
|
this.nonce = params.header.nonce;
|
|
327
397
|
this.startSlot = params.header.startSlot;
|
|
@@ -330,8 +400,8 @@ var Transaction = class _Transaction {
|
|
|
330
400
|
this.requestedStateUnits = params.header.stateUnits ?? 0;
|
|
331
401
|
this.requestedMemoryUnits = params.header.memoryUnits ?? 0;
|
|
332
402
|
this.flags = params.header.flags ?? DEFAULT_FLAGS;
|
|
333
|
-
this.readWriteAccounts = params.accounts?.readWriteAccounts ? params.accounts.readWriteAccounts.map(
|
|
334
|
-
this.readOnlyAccounts = params.accounts?.readOnlyAccounts ? params.accounts.readOnlyAccounts.map(
|
|
403
|
+
this.readWriteAccounts = params.accounts?.readWriteAccounts ? params.accounts.readWriteAccounts.map(Pubkey.from) : [];
|
|
404
|
+
this.readOnlyAccounts = params.accounts?.readOnlyAccounts ? params.accounts.readOnlyAccounts.map(Pubkey.from) : [];
|
|
335
405
|
this.instructionData = params.instructionData ? new Uint8Array(params.instructionData) : void 0;
|
|
336
406
|
if (this.instructionData && this.instructionData.length > MAX_INSTRUCTION_DATA_LENGTH) {
|
|
337
407
|
throw new Error(`Instruction data exceeds maximum length (${MAX_INSTRUCTION_DATA_LENGTH} bytes)`);
|
|
@@ -356,9 +426,9 @@ var Transaction = class _Transaction {
|
|
|
356
426
|
const strict = options.strict ?? false;
|
|
357
427
|
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
358
428
|
let offset = 0;
|
|
359
|
-
const signatureBytes = data.slice(offset, offset +
|
|
429
|
+
const signatureBytes = data.slice(offset, offset + SIGNATURE_SIZE2);
|
|
360
430
|
const hasSignature = hasNonZeroBytes(signatureBytes);
|
|
361
|
-
offset +=
|
|
431
|
+
offset += SIGNATURE_SIZE2;
|
|
362
432
|
const version = view.getUint8(offset);
|
|
363
433
|
offset += 1;
|
|
364
434
|
if (strict && version !== TXN_VERSION_V1) {
|
|
@@ -391,12 +461,12 @@ var Transaction = class _Transaction {
|
|
|
391
461
|
const expiryAfter = view.getUint32(offset, true);
|
|
392
462
|
offset += 4;
|
|
393
463
|
offset += 4;
|
|
394
|
-
_Transaction.ensureAvailable(data.length, offset,
|
|
395
|
-
const feePayer = data.slice(offset, offset +
|
|
396
|
-
offset +=
|
|
397
|
-
_Transaction.ensureAvailable(data.length, offset,
|
|
398
|
-
const program = data.slice(offset, offset +
|
|
399
|
-
offset +=
|
|
464
|
+
_Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "fee payer account");
|
|
465
|
+
const feePayer = data.slice(offset, offset + PUBKEY_SIZE2);
|
|
466
|
+
offset += PUBKEY_SIZE2;
|
|
467
|
+
_Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "program account");
|
|
468
|
+
const program = data.slice(offset, offset + PUBKEY_SIZE2);
|
|
469
|
+
offset += PUBKEY_SIZE2;
|
|
400
470
|
if (offset !== TXN_HEADER_SIZE) {
|
|
401
471
|
throw new Error(`Transaction header parsing mismatch (expected offset ${TXN_HEADER_SIZE}, got ${offset})`);
|
|
402
472
|
}
|
|
@@ -408,15 +478,15 @@ var Transaction = class _Transaction {
|
|
|
408
478
|
}
|
|
409
479
|
const readWriteAccounts = [];
|
|
410
480
|
for (let i = 0; i < readwriteAccountsCount; i++) {
|
|
411
|
-
_Transaction.ensureAvailable(data.length, offset,
|
|
412
|
-
readWriteAccounts.push(data.slice(offset, offset +
|
|
413
|
-
offset +=
|
|
481
|
+
_Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "read-write accounts");
|
|
482
|
+
readWriteAccounts.push(data.slice(offset, offset + PUBKEY_SIZE2));
|
|
483
|
+
offset += PUBKEY_SIZE2;
|
|
414
484
|
}
|
|
415
485
|
const readOnlyAccounts = [];
|
|
416
486
|
for (let i = 0; i < readonlyAccountsCount; i++) {
|
|
417
|
-
_Transaction.ensureAvailable(data.length, offset,
|
|
418
|
-
readOnlyAccounts.push(data.slice(offset, offset +
|
|
419
|
-
offset +=
|
|
487
|
+
_Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "read-only accounts");
|
|
488
|
+
readOnlyAccounts.push(data.slice(offset, offset + PUBKEY_SIZE2));
|
|
489
|
+
offset += PUBKEY_SIZE2;
|
|
420
490
|
}
|
|
421
491
|
let instructionData;
|
|
422
492
|
if (instructionDataSize > 0) {
|
|
@@ -438,8 +508,8 @@ var Transaction = class _Transaction {
|
|
|
438
508
|
}
|
|
439
509
|
const transaction = new _Transaction({
|
|
440
510
|
version,
|
|
441
|
-
feePayer,
|
|
442
|
-
program,
|
|
511
|
+
feePayer: Pubkey.from(feePayer),
|
|
512
|
+
program: Pubkey.from(program),
|
|
443
513
|
header: {
|
|
444
514
|
fee,
|
|
445
515
|
nonce,
|
|
@@ -462,7 +532,7 @@ var Transaction = class _Transaction {
|
|
|
462
532
|
} : void 0
|
|
463
533
|
});
|
|
464
534
|
if (hasSignature) {
|
|
465
|
-
transaction.setSignature(signatureBytes);
|
|
535
|
+
transaction.setSignature(Signature.from(signatureBytes));
|
|
466
536
|
}
|
|
467
537
|
return { transaction, size: offset };
|
|
468
538
|
}
|
|
@@ -517,8 +587,8 @@ var Transaction = class _Transaction {
|
|
|
517
587
|
}
|
|
518
588
|
transaction = new _Transaction({
|
|
519
589
|
version: header.version ?? TXN_VERSION_V1,
|
|
520
|
-
feePayer:
|
|
521
|
-
program:
|
|
590
|
+
feePayer: Pubkey.fromProtoPubkey(header.feePayerPubkey),
|
|
591
|
+
program: Pubkey.fromProtoPubkey(header.programPubkey),
|
|
522
592
|
header: {
|
|
523
593
|
fee: header.fee ?? 0n,
|
|
524
594
|
nonce: header.nonce ?? 0n,
|
|
@@ -542,8 +612,8 @@ var Transaction = class _Transaction {
|
|
|
542
612
|
});
|
|
543
613
|
}
|
|
544
614
|
const signatureBytes = proto.signature?.value ?? header.feePayerSignature?.value ?? void 0;
|
|
545
|
-
if (signatureBytes && signatureBytes.length ===
|
|
546
|
-
transaction.setSignature(signatureBytes);
|
|
615
|
+
if (signatureBytes && signatureBytes.length === SIGNATURE_SIZE2 && hasNonZeroBytes(signatureBytes)) {
|
|
616
|
+
transaction.setSignature(Signature.from(signatureBytes));
|
|
547
617
|
}
|
|
548
618
|
if (proto.executionResult) {
|
|
549
619
|
transaction.executionResult = _Transaction.executionResultFromProto(proto.executionResult);
|
|
@@ -557,25 +627,28 @@ var Transaction = class _Transaction {
|
|
|
557
627
|
return transaction;
|
|
558
628
|
}
|
|
559
629
|
getSignature() {
|
|
560
|
-
return this.signature
|
|
630
|
+
return this.signature;
|
|
561
631
|
}
|
|
562
632
|
setSignature(signature) {
|
|
563
|
-
|
|
564
|
-
throw new Error(`Signature must contain ${SIGNATURE_SIZE} bytes`);
|
|
565
|
-
}
|
|
566
|
-
this.signature = new Uint8Array(signature);
|
|
633
|
+
this.signature = signature;
|
|
567
634
|
}
|
|
568
635
|
async sign(privateKey) {
|
|
569
636
|
if (privateKey.length !== 32) {
|
|
570
637
|
throw new Error("Fee payer private key must contain 32 bytes");
|
|
571
638
|
}
|
|
572
639
|
const payload = this.toWireForSigning();
|
|
573
|
-
const
|
|
574
|
-
|
|
640
|
+
const publicKey = this.feePayer.toBytes();
|
|
641
|
+
const signature = await signWithDomain(
|
|
642
|
+
payload,
|
|
643
|
+
privateKey,
|
|
644
|
+
publicKey,
|
|
645
|
+
0 /* TXN */
|
|
646
|
+
);
|
|
647
|
+
if (signature.length !== SIGNATURE_SIZE2) {
|
|
575
648
|
throw new Error("ed25519 signing produced an invalid signature");
|
|
576
649
|
}
|
|
577
|
-
this.signature = signature;
|
|
578
|
-
return
|
|
650
|
+
this.signature = Signature.from(signature);
|
|
651
|
+
return this.signature;
|
|
579
652
|
}
|
|
580
653
|
toWireForSigning() {
|
|
581
654
|
const header = this.createHeader(void 0);
|
|
@@ -583,7 +656,7 @@ var Transaction = class _Transaction {
|
|
|
583
656
|
return this.buildWirePayload(view.subarray(SIGNATURE_PREFIX_SIZE));
|
|
584
657
|
}
|
|
585
658
|
toWire() {
|
|
586
|
-
const header = this.createHeader(this.signature);
|
|
659
|
+
const header = this.createHeader(this.signature?.toBytes());
|
|
587
660
|
return this.buildWirePayload(new Uint8Array(header));
|
|
588
661
|
}
|
|
589
662
|
createHeader(signature) {
|
|
@@ -591,12 +664,12 @@ var Transaction = class _Transaction {
|
|
|
591
664
|
const headerBytes = new Uint8Array(buffer);
|
|
592
665
|
const view = new DataView(buffer);
|
|
593
666
|
if (signature) {
|
|
594
|
-
if (signature.length !==
|
|
595
|
-
throw new Error(`Signature must contain ${
|
|
667
|
+
if (signature.length !== SIGNATURE_SIZE2) {
|
|
668
|
+
throw new Error(`Signature must contain ${SIGNATURE_SIZE2} bytes`);
|
|
596
669
|
}
|
|
597
670
|
headerBytes.set(signature, 0);
|
|
598
671
|
} else {
|
|
599
|
-
headerBytes.fill(0, 0,
|
|
672
|
+
headerBytes.fill(0, 0, SIGNATURE_SIZE2);
|
|
600
673
|
}
|
|
601
674
|
let offset = SIGNATURE_PREFIX_SIZE;
|
|
602
675
|
view.setUint8(offset, this.version & 255);
|
|
@@ -628,18 +701,18 @@ var Transaction = class _Transaction {
|
|
|
628
701
|
view.setUint32(offset, ensureUint32(this.expiryAfter), true);
|
|
629
702
|
offset += 4;
|
|
630
703
|
offset += 4;
|
|
631
|
-
headerBytes.set(this.feePayer, offset);
|
|
632
|
-
offset +=
|
|
633
|
-
headerBytes.set(this.program, offset);
|
|
704
|
+
headerBytes.set(this.feePayer.toBytes(), offset);
|
|
705
|
+
offset += PUBKEY_SIZE2;
|
|
706
|
+
headerBytes.set(this.program.toBytes(), offset);
|
|
634
707
|
return buffer;
|
|
635
708
|
}
|
|
636
709
|
buildWirePayload(headerPrefix) {
|
|
637
|
-
const dynamicLength = this.readWriteAccounts.length *
|
|
710
|
+
const dynamicLength = this.readWriteAccounts.length * PUBKEY_SIZE2 + this.readOnlyAccounts.length * PUBKEY_SIZE2 + (this.instructionData?.length ?? 0) + (this.feePayerStateProof?.length ?? 0) + (this.feePayerAccountMetaRaw?.length ?? 0);
|
|
638
711
|
const result = new Uint8Array(headerPrefix.length + dynamicLength);
|
|
639
712
|
result.set(headerPrefix, 0);
|
|
640
713
|
let offset = headerPrefix.length;
|
|
641
|
-
offset = appendAccountList(result, offset, this.readWriteAccounts);
|
|
642
|
-
offset = appendAccountList(result, offset, this.readOnlyAccounts);
|
|
714
|
+
offset = appendAccountList(result, offset, this.readWriteAccounts.map((account) => account.toBytes()));
|
|
715
|
+
offset = appendAccountList(result, offset, this.readOnlyAccounts.map((account) => account.toBytes()));
|
|
643
716
|
if (this.instructionData) {
|
|
644
717
|
result.set(this.instructionData, offset);
|
|
645
718
|
offset += this.instructionData.length;
|
|
@@ -658,15 +731,15 @@ var Transaction = class _Transaction {
|
|
|
658
731
|
let offset = 0;
|
|
659
732
|
const readWriteAccounts = [];
|
|
660
733
|
for (let i = 0; i < readwriteCount; i++) {
|
|
661
|
-
this.ensureAvailable(body.length, offset,
|
|
662
|
-
readWriteAccounts.push(body.slice(offset, offset +
|
|
663
|
-
offset +=
|
|
734
|
+
this.ensureAvailable(body.length, offset, PUBKEY_SIZE2, "read-write accounts");
|
|
735
|
+
readWriteAccounts.push(body.slice(offset, offset + PUBKEY_SIZE2));
|
|
736
|
+
offset += PUBKEY_SIZE2;
|
|
664
737
|
}
|
|
665
738
|
const readOnlyAccounts = [];
|
|
666
739
|
for (let i = 0; i < readonlyCount; i++) {
|
|
667
|
-
this.ensureAvailable(body.length, offset,
|
|
668
|
-
readOnlyAccounts.push(body.slice(offset, offset +
|
|
669
|
-
offset +=
|
|
740
|
+
this.ensureAvailable(body.length, offset, PUBKEY_SIZE2, "read-only accounts");
|
|
741
|
+
readOnlyAccounts.push(body.slice(offset, offset + PUBKEY_SIZE2));
|
|
742
|
+
offset += PUBKEY_SIZE2;
|
|
670
743
|
}
|
|
671
744
|
let instructionData;
|
|
672
745
|
if (instructionDataSize > 0) {
|
|
@@ -744,51 +817,23 @@ var Transaction = class _Transaction {
|
|
|
744
817
|
pagesUsed: proto.pagesUsed ?? 0,
|
|
745
818
|
eventsCount: proto.eventsCount ?? 0,
|
|
746
819
|
eventsSize: proto.eventsSize ?? 0,
|
|
747
|
-
readwriteAccounts: proto.readwriteAccounts.map((account) =>
|
|
748
|
-
readonlyAccounts: proto.readonlyAccounts.map((account) =>
|
|
820
|
+
readwriteAccounts: proto.readwriteAccounts.map((account) => Pubkey.fromProtoPubkey(account)),
|
|
821
|
+
readonlyAccounts: proto.readonlyAccounts.map((account) => Pubkey.fromProtoPubkey(account)),
|
|
749
822
|
events: proto.events.length ? proto.events.map((event) => ({
|
|
750
823
|
eventId: event.eventId,
|
|
751
824
|
callIdx: event.callIdx,
|
|
752
825
|
programIdx: event.programIdx,
|
|
753
|
-
program: event.program ?
|
|
826
|
+
program: event.program ? Pubkey.fromProtoPubkey(event.program) : void 0,
|
|
754
827
|
payload: new Uint8Array(event.payload ?? new Uint8Array(0))
|
|
755
828
|
})) : void 0
|
|
756
829
|
};
|
|
757
830
|
}
|
|
758
|
-
static convertExecutionResultToProto(result) {
|
|
759
|
-
return create(TransactionExecutionResultSchema, {
|
|
760
|
-
consumedComputeUnits: result.consumedComputeUnits,
|
|
761
|
-
consumedMemoryUnits: result.consumedMemoryUnits,
|
|
762
|
-
consumedStateUnits: result.consumedStateUnits,
|
|
763
|
-
userErrorCode: result.userErrorCode,
|
|
764
|
-
vmError: result.vmError,
|
|
765
|
-
executionResult: result.executionResult,
|
|
766
|
-
pagesUsed: result.pagesUsed,
|
|
767
|
-
eventsCount: result.eventsCount,
|
|
768
|
-
eventsSize: result.eventsSize,
|
|
769
|
-
readwriteAccounts: result.readwriteAccounts.map(
|
|
770
|
-
(account) => create(PubkeySchema, { value: new Uint8Array(account) })
|
|
771
|
-
),
|
|
772
|
-
readonlyAccounts: result.readonlyAccounts.map(
|
|
773
|
-
(account) => create(PubkeySchema, { value: new Uint8Array(account) })
|
|
774
|
-
),
|
|
775
|
-
events: result.events?.map(
|
|
776
|
-
(event) => create(TransactionEventSchema, {
|
|
777
|
-
eventId: event.eventId,
|
|
778
|
-
callIdx: event.callIdx,
|
|
779
|
-
programIdx: event.programIdx,
|
|
780
|
-
program: event.program ? create(PubkeySchema, { value: new Uint8Array(event.program) }) : void 0,
|
|
781
|
-
payload: new Uint8Array(event.payload)
|
|
782
|
-
})
|
|
783
|
-
) ?? []
|
|
784
|
-
});
|
|
785
|
-
}
|
|
786
831
|
};
|
|
787
832
|
function appendAccountList(target, start, accounts) {
|
|
788
833
|
let offset = start;
|
|
789
834
|
for (const account of accounts) {
|
|
790
835
|
target.set(account, offset);
|
|
791
|
-
offset +=
|
|
836
|
+
offset += PUBKEY_SIZE2;
|
|
792
837
|
}
|
|
793
838
|
return offset;
|
|
794
839
|
}
|
|
@@ -810,12 +855,6 @@ function ensureBigUint64(value) {
|
|
|
810
855
|
}
|
|
811
856
|
return value;
|
|
812
857
|
}
|
|
813
|
-
function copyKey(source) {
|
|
814
|
-
if (source.length !== PUBKEY_SIZE) {
|
|
815
|
-
throw new Error("Public keys must contain 32 bytes");
|
|
816
|
-
}
|
|
817
|
-
return new Uint8Array(source);
|
|
818
|
-
}
|
|
819
858
|
function countSetBits(bytes) {
|
|
820
859
|
let total = 0;
|
|
821
860
|
for (let i = 0; i < bytes.length; i++) {
|
|
@@ -831,19 +870,76 @@ function hasNonZeroBytes(value) {
|
|
|
831
870
|
}
|
|
832
871
|
return false;
|
|
833
872
|
}
|
|
873
|
+
var ACCOUNT_LIMIT = 1024;
|
|
874
|
+
function normalizeAccountList(accounts) {
|
|
875
|
+
if (accounts.length === 0) {
|
|
876
|
+
return [];
|
|
877
|
+
}
|
|
878
|
+
if (accounts.length > ACCOUNT_LIMIT) {
|
|
879
|
+
throw new Error(`Too many accounts provided: ${accounts.length} (max ${ACCOUNT_LIMIT})`);
|
|
880
|
+
}
|
|
881
|
+
const deduped = dedupeAccountList(accounts);
|
|
882
|
+
return deduped;
|
|
883
|
+
}
|
|
884
|
+
function dedupeAccountList(accounts) {
|
|
885
|
+
const pubkeys = accounts.map(Pubkey.from).map((pubkey) => pubkey.toBytes());
|
|
886
|
+
const seen = /* @__PURE__ */ new Map();
|
|
887
|
+
for (const pubkey of pubkeys) {
|
|
888
|
+
if (pubkey.length !== 32) {
|
|
889
|
+
throw new Error("Account addresses must contain 32 bytes");
|
|
890
|
+
}
|
|
891
|
+
const key = toHex(pubkey);
|
|
892
|
+
if (!seen.has(key)) {
|
|
893
|
+
seen.set(key, pubkey);
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
return Array.from(seen.values()).sort(compareAccounts);
|
|
897
|
+
}
|
|
898
|
+
function compareAccounts(a, b) {
|
|
899
|
+
for (let i = 0; i < 32; i++) {
|
|
900
|
+
if (a[i] !== b[i]) {
|
|
901
|
+
return a[i] - b[i];
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
return 0;
|
|
905
|
+
}
|
|
906
|
+
function toHex(bytes) {
|
|
907
|
+
let result = "";
|
|
908
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
909
|
+
const hex = bytes[i].toString(16).padStart(2, "0");
|
|
910
|
+
result += hex;
|
|
911
|
+
}
|
|
912
|
+
return result;
|
|
913
|
+
}
|
|
914
|
+
function parseInstructionData(value) {
|
|
915
|
+
if (value === void 0) {
|
|
916
|
+
return void 0;
|
|
917
|
+
}
|
|
918
|
+
if (value instanceof Uint8Array) {
|
|
919
|
+
return new Uint8Array(value);
|
|
920
|
+
}
|
|
921
|
+
if (typeof value === "string") {
|
|
922
|
+
if (value.length === 0) {
|
|
923
|
+
return new Uint8Array();
|
|
924
|
+
}
|
|
925
|
+
if (isHexString(value)) {
|
|
926
|
+
return hexToBytes(value);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
throw new Error("Instruction data must be provided as hex string or Uint8Array");
|
|
930
|
+
}
|
|
834
931
|
|
|
835
932
|
// thru-ts-client-sdk/domain/transactions/TransactionBuilder.ts
|
|
836
933
|
var FLAG_HAS_FEE_PAYER_PROOF = 1 << 0;
|
|
837
934
|
var TransactionBuilder = class {
|
|
838
935
|
build(params) {
|
|
839
|
-
const program = resolveProgramIdentifier(params.program);
|
|
840
936
|
const accounts = this.normalizeAccounts(params.accounts);
|
|
841
937
|
const baseFlags = params.header.flags ?? 0;
|
|
842
938
|
const flags = params.proofs?.feePayerStateProof ? baseFlags | FLAG_HAS_FEE_PAYER_PROOF : baseFlags;
|
|
843
939
|
const instructionData = parseInstructionData(params.instructionData);
|
|
844
940
|
return new Transaction({
|
|
845
|
-
feePayer: params.feePayer.publicKey,
|
|
846
|
-
program,
|
|
941
|
+
feePayer: Pubkey.from(params.feePayer.publicKey),
|
|
942
|
+
program: Pubkey.from(params.program),
|
|
847
943
|
header: {
|
|
848
944
|
...params.header,
|
|
849
945
|
flags
|
|
@@ -910,7 +1006,7 @@ function consensusStatusToString(status) {
|
|
|
910
1006
|
// thru-ts-client-sdk/domain/transactions/TransactionStatusSnapshot.ts
|
|
911
1007
|
var TransactionStatusSnapshot = class _TransactionStatusSnapshot {
|
|
912
1008
|
constructor(params) {
|
|
913
|
-
this.signature =
|
|
1009
|
+
this.signature = copyBytes3(params.signature);
|
|
914
1010
|
this.statusCode = params.consensusStatus;
|
|
915
1011
|
this.status = params.consensusStatus != null ? consensusStatusToString(params.consensusStatus) : void 0;
|
|
916
1012
|
this.executionResult = params.executionResult;
|
|
@@ -926,7 +1022,7 @@ var TransactionStatusSnapshot = class _TransactionStatusSnapshot {
|
|
|
926
1022
|
});
|
|
927
1023
|
}
|
|
928
1024
|
};
|
|
929
|
-
function
|
|
1025
|
+
function copyBytes3(bytes) {
|
|
930
1026
|
const copy = new Uint8Array(bytes.length);
|
|
931
1027
|
copy.set(bytes);
|
|
932
1028
|
return copy;
|
|
@@ -940,7 +1036,7 @@ var AccountView = /* @__PURE__ */ ((AccountView2) => {
|
|
|
940
1036
|
AccountView2[AccountView2["FULL"] = 4] = "FULL";
|
|
941
1037
|
return AccountView2;
|
|
942
1038
|
})(AccountView || {});
|
|
943
|
-
var file_thru_core_v1_block = /* @__PURE__ */ fileDesc("
|
|
1039
|
+
var file_thru_core_v1_block = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvYmxvY2sucHJvdG8SDHRocnUuY29yZS52MSLyAwoLQmxvY2tIZWFkZXISEQoEc2xvdBgBIAEoBEID4EECEjAKCmJsb2NrX2hhc2gYAiABKAsyFy50aHJ1LmNvcmUudjEuQmxvY2tIYXNoQgPgQQISOAoQaGVhZGVyX3NpZ25hdHVyZRgDIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEhQKB3ZlcnNpb24YBCABKA1CA+BBAhItCghwcm9kdWNlchgFIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjkKEGV4cGlyeV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQISFwoKc3RhcnRfc2xvdBgHIAEoBEID4EECEhkKDGV4cGlyeV9hZnRlchgIIAEoDUID4EECEhsKDm1heF9ibG9ja19zaXplGAkgASgNQgPgQQISHgoRbWF4X2NvbXB1dGVfdW5pdHMYCiABKARCA+BBAhIcCg9tYXhfc3RhdGVfdW5pdHMYCyABKA1CA+BBAhIgChNib25kX2Ftb3VudF9sb2NrX3VwGAwgASgEQgPgQQISMwoKYmxvY2tfdGltZRgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAiLbAQoLQmxvY2tGb290ZXISMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISMgoGc3RhdHVzGAIgASgOMh0udGhydS5jb3JlLnYxLkV4ZWN1dGlvblN0YXR1c0ID4EECEiMKFmNvbnN1bWVkX2NvbXB1dGVfdW5pdHMYAyABKARCA+BBAhIhChRjb25zdW1lZF9zdGF0ZV91bml0cxgEIAEoDUID4EECEh0KEGF0dGVzdG9yX3BheW1lbnQYBSABKARCA+BBAiL8AQoFQmxvY2sSLgoGaGVhZGVyGAEgASgLMhkudGhydS5jb3JlLnYxLkJsb2NrSGVhZGVyQgPgQQISMwoGZm9vdGVyGAIgASgLMhkudGhydS5jb3JlLnYxLkJsb2NrRm9vdGVyQgPgQQFIAIgBARIgCgRib2R5GAMgASgMQg3gQQG6SAd6BRiAgIAQSAGIAQESQwoQY29uc2Vuc3VzX3N0YXR1cxgEIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAKIAQFCCQoHX2Zvb3RlckIHCgVfYm9keUITChFfY29uc2Vuc3VzX3N0YXR1cyI/CghSYXdCbG9jaxIRCgRzbG90GAEgASgEQgPgQQISIAoJcmF3X2Jsb2NrGAIgASgMQg3gQQK6SAd6BRiAgIAQKpQBCglCbG9ja1ZpZXcSGgoWQkxPQ0tfVklFV19VTlNQRUNJRklFRBAAEhoKFkJMT0NLX1ZJRVdfSEVBREVSX09OTFkQARIgChxCTE9DS19WSUVXX0hFQURFUl9BTkRfRk9PVEVSEAISGAoUQkxPQ0tfVklFV19CT0RZX09OTFkQAxITCg9CTE9DS19WSUVXX0ZVTEwQBCqNAQoPRXhlY3V0aW9uU3RhdHVzEiAKHEVYRUNVVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhFWEVDVVRJT05fU1RBVFVTX1BFTkRJTkcQARIdChlFWEVDVVRJT05fU1RBVFVTX0VYRUNVVEVEEAISGwoXRVhFQ1VUSU9OX1NUQVRVU19GQUlMRUQQA0K5AQoQY29tLnRocnUuY29yZS52MUIKQmxvY2tQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_primitives, file_thru_common_v1_consensus, file_thru_core_v1_types]);
|
|
944
1040
|
var BlockView = /* @__PURE__ */ ((BlockView2) => {
|
|
945
1041
|
BlockView2[BlockView2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
946
1042
|
BlockView2[BlockView2["HEADER_ONLY"] = 1] = "HEADER_ONLY";
|
|
@@ -990,7 +1086,7 @@ var file_thru_core_v1_state = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvc3Rh
|
|
|
990
1086
|
var StateProofRequestSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_state, 0);
|
|
991
1087
|
|
|
992
1088
|
// thru-ts-client-sdk/proto/thru/services/v1/query_service_pb.ts
|
|
993
|
-
var file_thru_services_v1_query_service = /* @__PURE__ */ fileDesc("CiR0aHJ1L3NlcnZpY2VzL3YxL3F1ZXJ5X3NlcnZpY2UucHJvdG8SEHRocnUuc2VydmljZXMudjEi1QIKEUdldEFjY291bnRSZXF1ZXN0EiwKB2FkZHJlc3MYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAhIxCgR2aWV3GAIgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARI8Cg92ZXJzaW9uX2NvbnRleHQYAyABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EECEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgBiAEBEjUKCmRhdGFfc2xpY2UYBSABKAsyFy50aHJ1LmNvcmUudjEuRGF0YVNsaWNlQgPgQQFIAogBAUIHCgVfdmlld0IQCg5fbWluX2NvbnNlbnN1c0INCgtfZGF0YV9zbGljZSKSAgoUR2V0UmF3QWNjb3VudFJlcXVlc3QSLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjEKBHZpZXcYAiABKA4yGS50aHJ1LmNvcmUudjEuQWNjb3VudFZpZXdCA+BBAUgAiAEBEjwKD3ZlcnNpb25fY29udGV4dBgDIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQISQAoNbWluX2NvbnNlbnN1cxgEIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQFCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMinAIKFUdldFRyYW5zYWN0aW9uUmVxdWVzdBIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhI1CgR2aWV3GAIgASgOMh0udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uVmlld0ID4EEBSACIAQESPAoPdmVyc2lvbl9jb250ZXh0GAMgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAhJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAYgBAUIHCgVfdmlld0IQCg5fbWluX2NvbnNlbnN1cyLfAQoYR2V0UmF3VHJhbnNhY3Rpb25SZXF1ZXN0EjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjwKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQISQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSACIAQFCEAoOX21pbl9jb25zZW5zdXMiUgoZR2VuZXJhdGVTdGF0ZVByb29mUmVxdWVzdBI1CgdyZXF1ZXN0GAEgASgLMh8udGhydS5jb3JlLnYxLlN0YXRlUHJvb2ZSZXF1ZXN0QgPgQQIiSgoaR2VuZXJhdGVTdGF0ZVByb29mUmVzcG9uc2USLAoFcHJvb2YYASABKAsyGC50aHJ1LmNvcmUudjEuU3RhdGVQcm9vZkID4EECIt4CCg9HZXRCbG9ja1JlcXVlc3QSEwoEc2xvdBgBIAEoBEID4EEBSAASMgoKYmxvY2tfaGFzaBgCIAEoCzIXLnRocnUuY29yZS52MS5CbG9ja0hhc2hCA+BBAUgAEi8KBHZpZXcYAyABKA4yFy50aHJ1LmNvcmUudjEuQmxvY2tWaWV3QgPgQQFIAYgBARJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAogBATpoukhlGmMKEmJsb2NrX3NlbGVjdG9yX3NldBIlZWl0aGVyIHNsb3Qgb3IgYmxvY2tfaGFzaCBtdXN0IGJlIHNldBomaGFzKHRoaXMuc2xvdCkgfHwgaGFzKHRoaXMuYmxvY2tfaGFzaClCCgoIc2VsZWN0b3JCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMiqwIKEkdldFJhd0Jsb2NrUmVxdWVzdBITCgRzbG90GAEgASgEQgPgQQFIABIyCgpibG9ja19oYXNoGAIgASgLMhcudGhydS5jb3JlLnYxLkJsb2NrSGFzaEID4EEBSAASQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQE6bLpIaRpnChZyYXdfYmxvY2tfc2VsZWN0b3Jfc2V0EiVlaXRoZXIgc2xvdCBvciBibG9ja19oYXNoIG11c3QgYmUgc2V0GiZoYXModGhpcy5zbG90KSB8fCBoYXModGhpcy5ibG9ja19oYXNoKUIKCghzZWxlY3RvckIQCg5fbWluX2NvbnNlbnN1cyL3AgoTTGlzdEFjY291bnRzUmVxdWVzdBIxCgR2aWV3GAEgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARJBCg92ZXJzaW9uX2NvbnRleHQYAiABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSAGIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAogBARIzCgRwYWdlGAQgASgLMhsudGhydS5jb21tb24udjEuUGFnZVJlcXVlc3RCA+BBAUgDiAEBEkAKDW1pbl9jb25zZW5zdXMYBSABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgEiAEBQgcKBV92aWV3QhIKEF92ZXJzaW9uX2NvbnRleHRCCQoHX2ZpbHRlckIHCgVfcGFnZUIQCg5fbWluX2NvbnNlbnN1cyKDAQoUTGlzdEFjY291bnRzUmVzcG9uc2USLAoIYWNjb3VudHMYASADKAsyFS50aHJ1LmNvcmUudjEuQWNjb3VudEID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIpwCChFMaXN0QmxvY2tzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESLwoEdmlldxgDIAEoDjIXLnRocnUuY29yZS52MS5CbG9ja1ZpZXdCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMifQoSTGlzdEJsb2Nrc1Jlc3BvbnNlEigKBmJsb2NrcxgBIAMoCzITLnRocnUuY29yZS52MS5CbG9ja0ID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIswBCiFMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlcXVlc3QSLAoHYWNjb3VudBgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSACIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAYgBAUIHCgVfcGFnZUIJCgdfZmlsdGVyIs0BCiJMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlc3BvbnNlEjIKCnNpZ25hdHVyZXMYASADKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBARI0CgRwYWdlGAIgASgLMhwudGhydS5jb21tb24udjEuUGFnZVJlc3BvbnNlQgPgQQFIAIgBARI0Cgx0cmFuc2FjdGlvbnMYAyADKAsyGS50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25CA+BBAUIHCgVfcGFnZSITChFHZXRWZXJzaW9uUmVxdWVzdCKQAQoSR2V0VmVyc2lvblJlc3BvbnNlEkkKCHZlcnNpb25zGAEgAygLMjIudGhydS5zZXJ2aWNlcy52MS5HZXRWZXJzaW9uUmVzcG9uc2UuVmVyc2lvbnNFbnRyeUID4EECGi8KDVZlcnNpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKHAQoPR2V0RXZlbnRSZXF1ZXN0Eh0KCGV2ZW50X2lkGAEgASgJQgvgQQK6SAVyAxiAARJBCg92ZXJzaW9uX2NvbnRleHQYAiABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSACIAQFCEgoQX3ZlcnNpb25fY29udGV4dCLlAwoFRXZlbnQSFQoIZXZlbnRfaWQYASABKAlCA+BBAhI9ChV0cmFuc2FjdGlvbl9zaWduYXR1cmUYAiABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhIxCgdwcm9ncmFtGAMgASgLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQFIAIgBARIZCgdwYXlsb2FkGAQgASgMQgPgQQFIAYgBARIWCgRzbG90GAUgASgEQgPgQQFIAogBARIaCghjYWxsX2lkeBgGIAEoDUID4EEBSAOIAQESHQoLcHJvZ3JhbV9pZHgYByABKA1CA+BBAUgEiAEBEh4KDHBheWxvYWRfc2l6ZRgIIAEoDUID4EEBSAWIAQESHgoMYmxvY2tfb2Zmc2V0GAkgASgNQgPgQQFIBogBARI3Cgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQFIB4gBAUIKCghfcHJvZ3JhbUIKCghfcGF5bG9hZEIHCgVfc2xvdEILCglfY2FsbF9pZHhCDgoMX3Byb2dyYW1faWR4Qg8KDV9wYXlsb2FkX3NpemVCDwoNX2Jsb2NrX29mZnNldEIMCgpfdGltZXN0YW1wIrkCChFMaXN0RXZlbnRzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESQQoPdmVyc2lvbl9jb250ZXh0GAMgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCEgoQX3ZlcnNpb25fY29udGV4dEIQCg5fbWluX2NvbnNlbnN1cyKBAQoSTGlzdEV2ZW50c1Jlc3BvbnNlEiwKBmV2ZW50cxgBIAMoCzIXLnRocnUuc2VydmljZXMudjEuRXZlbnRCA+BBARI0CgRwYWdlGAIgASgLMhwudGhydS5jb21tb24udjEuUGFnZVJlc3BvbnNlQgPgQQFIAIgBAUIHCgVfcGFnZSLyAgoXTGlzdFRyYW5zYWN0aW9uc1JlcXVlc3QSMAoGZmlsdGVyGAEgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAIgBARIzCgRwYWdlGAIgASgLMhsudGhydS5jb21tb24udjEuUGFnZVJlcXVlc3RCA+BBAUgBiAEBEh8KDXJldHVybl9ldmVudHMYAyABKAhCA+BBAUgCiAEBEkEKD3ZlcnNpb25fY29udGV4dBgEIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQFIA4gBARJACg1taW5fY29uc2Vuc3VzGAUgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIBIgBAUIJCgdfZmlsdGVyQgcKBV9wYWdlQhAKDl9yZXR1cm5fZXZlbnRzQhIKEF92ZXJzaW9uX2NvbnRleHRCEAoOX21pbl9jb25zZW5zdXMijwEKGExpc3RUcmFuc2FjdGlvbnNSZXNwb25zZRI0Cgx0cmFuc2FjdGlvbnMYASADKAsyGS50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25CA+BBARI0CgRwYWdlGAIgASgLMhwudGhydS5jb21tb24udjEuUGFnZVJlc3BvbnNlQgPgQQFIAIgBAUIHCgVfcGFnZSJQChtHZXRUcmFuc2FjdGlvblN0YXR1c1JlcXVlc3QSMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQIigwIKEVRyYW5zYWN0aW9uU3RhdHVzEjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEkMKEGNvbnNlbnN1c19zdGF0dXMYAiABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgAiAEBEkwKEGV4ZWN1dGlvbl9yZXN1bHQYAyABKAsyKC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHRCA+BBAUgBiAEBQhMKEV9jb25zZW5zdXNfc3RhdHVzQhMKEV9leGVjdXRpb25fcmVzdWx0IhIKEEdldEhlaWdodFJlcXVlc3QiaQoRR2V0SGVpZ2h0UmVzcG9uc2USFgoJZmluYWxpemVkGAEgASgEQgPgQQISHQoQbG9jYWxseV9leGVjdXRlZBgCIAEoBEID4EECEh0KEGNsdXN0ZXJfZXhlY3V0ZWQYAyABKARCA+BBAjKcEQoMUXVlcnlTZXJ2aWNlEmgKCUdldEhlaWdodBIiLnRocnUuc2VydmljZXMudjEuR2V0SGVpZ2h0UmVxdWVzdBojLnRocnUuc2VydmljZXMudjEuR2V0SGVpZ2h0UmVzcG9uc2UiEoLT5JMCDBIKL3YxL2hlaWdodBJ4CgpHZXRBY2NvdW50EiMudGhydS5zZXJ2aWNlcy52MS5HZXRBY2NvdW50UmVxdWVzdBoVLnRocnUuY29yZS52MS5BY2NvdW50Ii7aQQdhZGRyZXNzgtPkkwIeEhwvdjEvYWNjb3VudHMve2FkZHJlc3MudmFsdWV9EoUBCg1HZXRSYXdBY2NvdW50EiYudGhydS5zZXJ2aWNlcy52MS5HZXRSYXdBY2NvdW50UmVxdWVzdBoYLnRocnUuY29yZS52MS5SYXdBY2NvdW50IjLaQQdhZGRyZXNzgtPkkwIiEiAvdjEvYWNjb3VudHMve2FkZHJlc3MudmFsdWV9OnJhdxKMAQoOR2V0VHJhbnNhY3Rpb24SJy50aHJ1LnNlcnZpY2VzLnYxLkdldFRyYW5zYWN0aW9uUmVxdWVzdBoZLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbiI22kEJc2lnbmF0dXJlgtPkkwIkEiIvdjEvdHJhbnNhY3Rpb25zL3tzaWduYXR1cmUudmFsdWV9EpkBChFHZXRSYXdUcmFuc2FjdGlvbhIqLnRocnUuc2VydmljZXMudjEuR2V0UmF3VHJhbnNhY3Rpb25SZXF1ZXN0GhwudGhydS5jb3JlLnYxLlJhd1RyYW5zYWN0aW9uIjraQQlzaWduYXR1cmWC0+STAigSJi92MS90cmFuc2FjdGlvbnMve3NpZ25hdHVyZS52YWx1ZX06cmF3EoYBCghHZXRCbG9jaxIhLnRocnUuc2VydmljZXMudjEuR2V0QmxvY2tSZXF1ZXN0GhMudGhydS5jb3JlLnYxLkJsb2NrIkKC0+STAjxaJxIlL3YxL2Jsb2Nrcy9ieS1oYXNoL3tibG9ja19oYXNoLnZhbHVlfRIRL3YxL2Jsb2Nrcy97c2xvdH0SlwEKC0dldFJhd0Jsb2NrEiQudGhydS5zZXJ2aWNlcy52MS5HZXRSYXdCbG9ja1JlcXVlc3QaFi50aHJ1LmNvcmUudjEuUmF3QmxvY2siSoLT5JMCRForEikvdjEvYmxvY2tzL2J5LWhhc2gve2Jsb2NrX2hhc2gudmFsdWV9OnJhdxIVL3YxL2Jsb2Nrcy97c2xvdH06cmF3EnMKDExpc3RBY2NvdW50cxIlLnRocnUuc2VydmljZXMudjEuTGlzdEFjY291bnRzUmVxdWVzdBomLnRocnUuc2VydmljZXMudjEuTGlzdEFjY291bnRzUmVzcG9uc2UiFILT5JMCDhIML3YxL2FjY291bnRzEmsKCkxpc3RCbG9ja3MSIy50aHJ1LnNlcnZpY2VzLnYxLkxpc3RCbG9ja3NSZXF1ZXN0GiQudGhydS5zZXJ2aWNlcy52MS5MaXN0QmxvY2tzUmVzcG9uc2UiEoLT5JMCDBIKL3YxL2Jsb2NrcxLEAQoaTGlzdFRyYW5zYWN0aW9uc0ZvckFjY291bnQSMy50aHJ1LnNlcnZpY2VzLnYxLkxpc3RUcmFuc2FjdGlvbnNGb3JBY2NvdW50UmVxdWVzdBo0LnRocnUuc2VydmljZXMudjEuTGlzdFRyYW5zYWN0aW9uc0ZvckFjY291bnRSZXNwb25zZSI72kEHYWNjb3VudILT5JMCKxIpL3YxL2FjY291bnRzL3thY2NvdW50LnZhbHVlfS90cmFuc2FjdGlvbnMScAoIR2V0RXZlbnQSIS50aHJ1LnNlcnZpY2VzLnYxLkdldEV2ZW50UmVxdWVzdBoXLnRocnUuc2VydmljZXMudjEuRXZlbnQiKNpBCGV2ZW50X2lkgtPkkwIXEhUvdjEvZXZlbnRzL3tldmVudF9pZH0SawoKTGlzdEV2ZW50cxIjLnRocnUuc2VydmljZXMudjEuTGlzdEV2ZW50c1JlcXVlc3QaJC50aHJ1LnNlcnZpY2VzLnYxLkxpc3RFdmVudHNSZXNwb25zZSISgtPkkwIMEgovdjEvZXZlbnRzEoMBChBMaXN0VHJhbnNhY3Rpb25zEikudGhydS5zZXJ2aWNlcy52MS5MaXN0VHJhbnNhY3Rpb25zUmVxdWVzdBoqLnRocnUuc2VydmljZXMudjEuTGlzdFRyYW5zYWN0aW9uc1Jlc3BvbnNlIhiC0+STAhISEC92MS90cmFuc2FjdGlvbnMSqQEKFEdldFRyYW5zYWN0aW9uU3RhdHVzEi0udGhydS5zZXJ2aWNlcy52MS5HZXRUcmFuc2FjdGlvblN0YXR1c1JlcXVlc3QaIy50aHJ1LnNlcnZpY2VzLnYxLlRyYW5zYWN0aW9uU3RhdHVzIj3aQQlzaWduYXR1cmWC0+STAisSKS92MS90cmFuc2FjdGlvbnMve3NpZ25hdHVyZS52YWx1ZX06c3RhdHVzEpQBChJHZW5lcmF0ZVN0YXRlUHJvb2YSKy50aHJ1LnNlcnZpY2VzLnYxLkdlbmVyYXRlU3RhdGVQcm9vZlJlcXVlc3QaLC50aHJ1LnNlcnZpY2VzLnYxLkdlbmVyYXRlU3RhdGVQcm9vZlJlc3BvbnNlIiOC0+STAh06ASoiGC92MS9zdGF0ZXByb29mczpnZW5lcmF0ZRJsCgpHZXRWZXJzaW9uEiMudGhydS5zZXJ2aWNlcy52MS5HZXRWZXJzaW9uUmVxdWVzdBokLnRocnUuc2VydmljZXMudjEuR2V0VmVyc2lvblJlc3BvbnNlIhOC0+STAg0SCy92MS92ZXJzaW9uGhPKQRBhcGkudGhydS5uZXR3b3JrQtwBChRjb20udGhydS5zZXJ2aWNlcy52MUIRUXVlcnlTZXJ2aWNlUHJvdG9QAVpIZ2l0aHViLmNvbS9VbnRvLUxhYnMvdGhydS1uZXQvZ3JwYy9wa2cvcHJvdG8vdGhydS9zZXJ2aWNlcy92MTtzZXJ2aWNlc3YxogIDVFNYqgIQVGhydS5TZXJ2aWNlcy5WMboCBFRIVVPKAhBUaHJ1XFNlcnZpY2VzXFYx4gIcVGhydVxTZXJ2aWNlc1xWMVxHUEJNZXRhZGF0YeoCElRocnU6OlNlcnZpY2VzOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_consensus, file_thru_common_v1_filters, file_thru_common_v1_pagination, file_thru_common_v1_primitives, file_thru_core_v1_account, file_thru_core_v1_block, file_thru_core_v1_state, file_thru_core_v1_transaction, file_thru_core_v1_types]);
|
|
1089
|
+
var file_thru_services_v1_query_service = /* @__PURE__ */ fileDesc("CiR0aHJ1L3NlcnZpY2VzL3YxL3F1ZXJ5X3NlcnZpY2UucHJvdG8SEHRocnUuc2VydmljZXMudjEi1QIKEUdldEFjY291bnRSZXF1ZXN0EiwKB2FkZHJlc3MYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAhIxCgR2aWV3GAIgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARI8Cg92ZXJzaW9uX2NvbnRleHQYAyABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EECEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgBiAEBEjUKCmRhdGFfc2xpY2UYBSABKAsyFy50aHJ1LmNvcmUudjEuRGF0YVNsaWNlQgPgQQFIAogBAUIHCgVfdmlld0IQCg5fbWluX2NvbnNlbnN1c0INCgtfZGF0YV9zbGljZSKSAgoUR2V0UmF3QWNjb3VudFJlcXVlc3QSLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjEKBHZpZXcYAiABKA4yGS50aHJ1LmNvcmUudjEuQWNjb3VudFZpZXdCA+BBAUgAiAEBEjwKD3ZlcnNpb25fY29udGV4dBgDIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQISQAoNbWluX2NvbnNlbnN1cxgEIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQFCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMinAIKFUdldFRyYW5zYWN0aW9uUmVxdWVzdBIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhI1CgR2aWV3GAIgASgOMh0udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uVmlld0ID4EEBSACIAQESPAoPdmVyc2lvbl9jb250ZXh0GAMgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAhJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAYgBAUIHCgVfdmlld0IQCg5fbWluX2NvbnNlbnN1cyLfAQoYR2V0UmF3VHJhbnNhY3Rpb25SZXF1ZXN0EjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjwKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQISQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSACIAQFCEAoOX21pbl9jb25zZW5zdXMiUgoZR2VuZXJhdGVTdGF0ZVByb29mUmVxdWVzdBI1CgdyZXF1ZXN0GAEgASgLMh8udGhydS5jb3JlLnYxLlN0YXRlUHJvb2ZSZXF1ZXN0QgPgQQIiSgoaR2VuZXJhdGVTdGF0ZVByb29mUmVzcG9uc2USLAoFcHJvb2YYASABKAsyGC50aHJ1LmNvcmUudjEuU3RhdGVQcm9vZkID4EECIt4CCg9HZXRCbG9ja1JlcXVlc3QSEwoEc2xvdBgBIAEoBEID4EEBSAASMgoKYmxvY2tfaGFzaBgCIAEoCzIXLnRocnUuY29yZS52MS5CbG9ja0hhc2hCA+BBAUgAEi8KBHZpZXcYAyABKA4yFy50aHJ1LmNvcmUudjEuQmxvY2tWaWV3QgPgQQFIAYgBARJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAogBATpoukhlGmMKEmJsb2NrX3NlbGVjdG9yX3NldBIlZWl0aGVyIHNsb3Qgb3IgYmxvY2tfaGFzaCBtdXN0IGJlIHNldBomaGFzKHRoaXMuc2xvdCkgfHwgaGFzKHRoaXMuYmxvY2tfaGFzaClCCgoIc2VsZWN0b3JCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMiqwIKEkdldFJhd0Jsb2NrUmVxdWVzdBITCgRzbG90GAEgASgEQgPgQQFIABIyCgpibG9ja19oYXNoGAIgASgLMhcudGhydS5jb3JlLnYxLkJsb2NrSGFzaEID4EEBSAASQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQE6bLpIaRpnChZyYXdfYmxvY2tfc2VsZWN0b3Jfc2V0EiVlaXRoZXIgc2xvdCBvciBibG9ja19oYXNoIG11c3QgYmUgc2V0GiZoYXModGhpcy5zbG90KSB8fCBoYXModGhpcy5ibG9ja19oYXNoKUIKCghzZWxlY3RvckIQCg5fbWluX2NvbnNlbnN1cyL3AgoTTGlzdEFjY291bnRzUmVxdWVzdBIxCgR2aWV3GAEgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARJBCg92ZXJzaW9uX2NvbnRleHQYAiABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSAGIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAogBARIzCgRwYWdlGAQgASgLMhsudGhydS5jb21tb24udjEuUGFnZVJlcXVlc3RCA+BBAUgDiAEBEkAKDW1pbl9jb25zZW5zdXMYBSABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgEiAEBQgcKBV92aWV3QhIKEF92ZXJzaW9uX2NvbnRleHRCCQoHX2ZpbHRlckIHCgVfcGFnZUIQCg5fbWluX2NvbnNlbnN1cyKDAQoUTGlzdEFjY291bnRzUmVzcG9uc2USLAoIYWNjb3VudHMYASADKAsyFS50aHJ1LmNvcmUudjEuQWNjb3VudEID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIpwCChFMaXN0QmxvY2tzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESLwoEdmlldxgDIAEoDjIXLnRocnUuY29yZS52MS5CbG9ja1ZpZXdCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMifQoSTGlzdEJsb2Nrc1Jlc3BvbnNlEigKBmJsb2NrcxgBIAMoCzITLnRocnUuY29yZS52MS5CbG9ja0ID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIswBCiFMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlcXVlc3QSLAoHYWNjb3VudBgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSACIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAYgBAUIHCgVfcGFnZUIJCgdfZmlsdGVyIpkBCiJMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlc3BvbnNlEjQKBHBhZ2UYASABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBEjQKDHRyYW5zYWN0aW9ucxgCIAMoCzIZLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbkID4EEBQgcKBV9wYWdlIhMKEUdldFZlcnNpb25SZXF1ZXN0IpABChJHZXRWZXJzaW9uUmVzcG9uc2USSQoIdmVyc2lvbnMYASADKAsyMi50aHJ1LnNlcnZpY2VzLnYxLkdldFZlcnNpb25SZXNwb25zZS5WZXJzaW9uc0VudHJ5QgPgQQIaLwoNVmVyc2lvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIocBCg9HZXRFdmVudFJlcXVlc3QSHQoIZXZlbnRfaWQYASABKAlCC+BBArpIBXIDGIABEkEKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQFIAIgBAUISChBfdmVyc2lvbl9jb250ZXh0IuUDCgVFdmVudBIVCghldmVudF9pZBgBIAEoCUID4EECEj0KFXRyYW5zYWN0aW9uX3NpZ25hdHVyZRgCIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjEKB3Byb2dyYW0YAyABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAUgAiAEBEhkKB3BheWxvYWQYBCABKAxCA+BBAUgBiAEBEhYKBHNsb3QYBSABKARCA+BBAUgCiAEBEhoKCGNhbGxfaWR4GAYgASgNQgPgQQFIA4gBARIdCgtwcm9ncmFtX2lkeBgHIAEoDUID4EEBSASIAQESHgoMcGF5bG9hZF9zaXplGAggASgNQgPgQQFIBYgBARIeCgxibG9ja19vZmZzZXQYCSABKA1CA+BBAUgGiAEBEjcKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAUgHiAEBQgoKCF9wcm9ncmFtQgoKCF9wYXlsb2FkQgcKBV9zbG90QgsKCV9jYWxsX2lkeEIOCgxfcHJvZ3JhbV9pZHhCDwoNX3BheWxvYWRfc2l6ZUIPCg1fYmxvY2tfb2Zmc2V0QgwKCl90aW1lc3RhbXAiuQIKEUxpc3RFdmVudHNSZXF1ZXN0EjAKBmZpbHRlchgBIAEoCzIWLnRocnUuY29tbW9uLnYxLkZpbHRlckID4EEBSACIAQESMwoEcGFnZRgCIAEoCzIbLnRocnUuY29tbW9uLnYxLlBhZ2VSZXF1ZXN0QgPgQQFIAYgBARJBCg92ZXJzaW9uX2NvbnRleHQYAyABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSAKIAQESQAoNbWluX2NvbnNlbnN1cxgEIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAOIAQFCCQoHX2ZpbHRlckIHCgVfcGFnZUISChBfdmVyc2lvbl9jb250ZXh0QhAKDl9taW5fY29uc2Vuc3VzIoEBChJMaXN0RXZlbnRzUmVzcG9uc2USLAoGZXZlbnRzGAEgAygLMhcudGhydS5zZXJ2aWNlcy52MS5FdmVudEID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIvICChdMaXN0VHJhbnNhY3Rpb25zUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESHwoNcmV0dXJuX2V2ZW50cxgDIAEoCEID4EEBSAKIAQESQQoPdmVyc2lvbl9jb250ZXh0GAQgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAUgDiAEBEkAKDW1pbl9jb25zZW5zdXMYBSABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgEiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCEAoOX3JldHVybl9ldmVudHNCEgoQX3ZlcnNpb25fY29udGV4dEIQCg5fbWluX2NvbnNlbnN1cyKPAQoYTGlzdFRyYW5zYWN0aW9uc1Jlc3BvbnNlEjQKDHRyYW5zYWN0aW9ucxgBIAMoCzIZLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbkID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIlAKG0dldFRyYW5zYWN0aW9uU3RhdHVzUmVxdWVzdBIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAiKDAgoRVHJhbnNhY3Rpb25TdGF0dXMSMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISQwoQY29uc2Vuc3VzX3N0YXR1cxgCIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSACIAQESTAoQZXhlY3V0aW9uX3Jlc3VsdBgDIAEoCzIoLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbkV4ZWN1dGlvblJlc3VsdEID4EEBSAGIAQFCEwoRX2NvbnNlbnN1c19zdGF0dXNCEwoRX2V4ZWN1dGlvbl9yZXN1bHQiEgoQR2V0SGVpZ2h0UmVxdWVzdCJpChFHZXRIZWlnaHRSZXNwb25zZRIWCglmaW5hbGl6ZWQYASABKARCA+BBAhIdChBsb2NhbGx5X2V4ZWN1dGVkGAIgASgEQgPgQQISHQoQY2x1c3Rlcl9leGVjdXRlZBgDIAEoBEID4EECMpwRCgxRdWVyeVNlcnZpY2USaAoJR2V0SGVpZ2h0EiIudGhydS5zZXJ2aWNlcy52MS5HZXRIZWlnaHRSZXF1ZXN0GiMudGhydS5zZXJ2aWNlcy52MS5HZXRIZWlnaHRSZXNwb25zZSISgtPkkwIMEgovdjEvaGVpZ2h0EngKCkdldEFjY291bnQSIy50aHJ1LnNlcnZpY2VzLnYxLkdldEFjY291bnRSZXF1ZXN0GhUudGhydS5jb3JlLnYxLkFjY291bnQiLtpBB2FkZHJlc3OC0+STAh4SHC92MS9hY2NvdW50cy97YWRkcmVzcy52YWx1ZX0ShQEKDUdldFJhd0FjY291bnQSJi50aHJ1LnNlcnZpY2VzLnYxLkdldFJhd0FjY291bnRSZXF1ZXN0GhgudGhydS5jb3JlLnYxLlJhd0FjY291bnQiMtpBB2FkZHJlc3OC0+STAiISIC92MS9hY2NvdW50cy97YWRkcmVzcy52YWx1ZX06cmF3EowBCg5HZXRUcmFuc2FjdGlvbhInLnRocnUuc2VydmljZXMudjEuR2V0VHJhbnNhY3Rpb25SZXF1ZXN0GhkudGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uIjbaQQlzaWduYXR1cmWC0+STAiQSIi92MS90cmFuc2FjdGlvbnMve3NpZ25hdHVyZS52YWx1ZX0SmQEKEUdldFJhd1RyYW5zYWN0aW9uEioudGhydS5zZXJ2aWNlcy52MS5HZXRSYXdUcmFuc2FjdGlvblJlcXVlc3QaHC50aHJ1LmNvcmUudjEuUmF3VHJhbnNhY3Rpb24iOtpBCXNpZ25hdHVyZYLT5JMCKBImL3YxL3RyYW5zYWN0aW9ucy97c2lnbmF0dXJlLnZhbHVlfTpyYXcShgEKCEdldEJsb2NrEiEudGhydS5zZXJ2aWNlcy52MS5HZXRCbG9ja1JlcXVlc3QaEy50aHJ1LmNvcmUudjEuQmxvY2siQoLT5JMCPFonEiUvdjEvYmxvY2tzL2J5LWhhc2gve2Jsb2NrX2hhc2gudmFsdWV9EhEvdjEvYmxvY2tzL3tzbG90fRKXAQoLR2V0UmF3QmxvY2sSJC50aHJ1LnNlcnZpY2VzLnYxLkdldFJhd0Jsb2NrUmVxdWVzdBoWLnRocnUuY29yZS52MS5SYXdCbG9jayJKgtPkkwJEWisSKS92MS9ibG9ja3MvYnktaGFzaC97YmxvY2tfaGFzaC52YWx1ZX06cmF3EhUvdjEvYmxvY2tzL3tzbG90fTpyYXcScwoMTGlzdEFjY291bnRzEiUudGhydS5zZXJ2aWNlcy52MS5MaXN0QWNjb3VudHNSZXF1ZXN0GiYudGhydS5zZXJ2aWNlcy52MS5MaXN0QWNjb3VudHNSZXNwb25zZSIUgtPkkwIOEgwvdjEvYWNjb3VudHMSawoKTGlzdEJsb2NrcxIjLnRocnUuc2VydmljZXMudjEuTGlzdEJsb2Nrc1JlcXVlc3QaJC50aHJ1LnNlcnZpY2VzLnYxLkxpc3RCbG9ja3NSZXNwb25zZSISgtPkkwIMEgovdjEvYmxvY2tzEsQBChpMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudBIzLnRocnUuc2VydmljZXMudjEuTGlzdFRyYW5zYWN0aW9uc0ZvckFjY291bnRSZXF1ZXN0GjQudGhydS5zZXJ2aWNlcy52MS5MaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlc3BvbnNlIjvaQQdhY2NvdW50gtPkkwIrEikvdjEvYWNjb3VudHMve2FjY291bnQudmFsdWV9L3RyYW5zYWN0aW9ucxJwCghHZXRFdmVudBIhLnRocnUuc2VydmljZXMudjEuR2V0RXZlbnRSZXF1ZXN0GhcudGhydS5zZXJ2aWNlcy52MS5FdmVudCIo2kEIZXZlbnRfaWSC0+STAhcSFS92MS9ldmVudHMve2V2ZW50X2lkfRJrCgpMaXN0RXZlbnRzEiMudGhydS5zZXJ2aWNlcy52MS5MaXN0RXZlbnRzUmVxdWVzdBokLnRocnUuc2VydmljZXMudjEuTGlzdEV2ZW50c1Jlc3BvbnNlIhKC0+STAgwSCi92MS9ldmVudHMSgwEKEExpc3RUcmFuc2FjdGlvbnMSKS50aHJ1LnNlcnZpY2VzLnYxLkxpc3RUcmFuc2FjdGlvbnNSZXF1ZXN0GioudGhydS5zZXJ2aWNlcy52MS5MaXN0VHJhbnNhY3Rpb25zUmVzcG9uc2UiGILT5JMCEhIQL3YxL3RyYW5zYWN0aW9ucxKpAQoUR2V0VHJhbnNhY3Rpb25TdGF0dXMSLS50aHJ1LnNlcnZpY2VzLnYxLkdldFRyYW5zYWN0aW9uU3RhdHVzUmVxdWVzdBojLnRocnUuc2VydmljZXMudjEuVHJhbnNhY3Rpb25TdGF0dXMiPdpBCXNpZ25hdHVyZYLT5JMCKxIpL3YxL3RyYW5zYWN0aW9ucy97c2lnbmF0dXJlLnZhbHVlfTpzdGF0dXMSlAEKEkdlbmVyYXRlU3RhdGVQcm9vZhIrLnRocnUuc2VydmljZXMudjEuR2VuZXJhdGVTdGF0ZVByb29mUmVxdWVzdBosLnRocnUuc2VydmljZXMudjEuR2VuZXJhdGVTdGF0ZVByb29mUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL3N0YXRlcHJvb2ZzOmdlbmVyYXRlEmwKCkdldFZlcnNpb24SIy50aHJ1LnNlcnZpY2VzLnYxLkdldFZlcnNpb25SZXF1ZXN0GiQudGhydS5zZXJ2aWNlcy52MS5HZXRWZXJzaW9uUmVzcG9uc2UiE4LT5JMCDRILL3YxL3ZlcnNpb24aE8pBEGFwaS50aHJ1Lm5ldHdvcmtC3AEKFGNvbS50aHJ1LnNlcnZpY2VzLnYxQhFRdWVyeVNlcnZpY2VQcm90b1ABWkhnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L3NlcnZpY2VzL3YxO3NlcnZpY2VzdjGiAgNUU1iqAhBUaHJ1LlNlcnZpY2VzLlYxugIEVEhVU8oCEFRocnVcU2VydmljZXNcVjHiAhxUaHJ1XFNlcnZpY2VzXFYxXEdQQk1ldGFkYXRh6gISVGhydTo6U2VydmljZXM6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_consensus, file_thru_common_v1_filters, file_thru_common_v1_pagination, file_thru_common_v1_primitives, file_thru_core_v1_account, file_thru_core_v1_block, file_thru_core_v1_state, file_thru_core_v1_transaction, file_thru_core_v1_types]);
|
|
994
1090
|
var GetAccountRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 0);
|
|
995
1091
|
var GetRawAccountRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 1);
|
|
996
1092
|
var GetTransactionRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 2);
|
|
@@ -1120,7 +1216,7 @@ var AccountMeta = class _AccountMeta {
|
|
|
1120
1216
|
this.flags = params.flags ?? new AccountFlags();
|
|
1121
1217
|
this.dataSize = params.dataSize;
|
|
1122
1218
|
this.seq = params.seq;
|
|
1123
|
-
this.owner = params.owner
|
|
1219
|
+
this.owner = params.owner;
|
|
1124
1220
|
this.balance = params.balance;
|
|
1125
1221
|
this.nonce = params.nonce;
|
|
1126
1222
|
}
|
|
@@ -1133,7 +1229,7 @@ var AccountMeta = class _AccountMeta {
|
|
|
1133
1229
|
flags: AccountFlags.fromProto(meta.flags),
|
|
1134
1230
|
dataSize: meta.dataSize,
|
|
1135
1231
|
seq: meta.seq ?? 0n,
|
|
1136
|
-
owner:
|
|
1232
|
+
owner: meta.owner ? Pubkey.fromProtoPubkey(meta.owner) : void 0,
|
|
1137
1233
|
balance: meta.balance ?? 0n,
|
|
1138
1234
|
nonce: meta.nonce
|
|
1139
1235
|
});
|
|
@@ -1158,7 +1254,7 @@ var AccountData = class _AccountData {
|
|
|
1158
1254
|
};
|
|
1159
1255
|
var Account = class _Account {
|
|
1160
1256
|
constructor(params) {
|
|
1161
|
-
this.address =
|
|
1257
|
+
this.address = params.address;
|
|
1162
1258
|
this.meta = params.meta;
|
|
1163
1259
|
this.data = params.data;
|
|
1164
1260
|
this.versionContext = params.versionContext;
|
|
@@ -1169,7 +1265,7 @@ var Account = class _Account {
|
|
|
1169
1265
|
throw new Error("Account proto missing address");
|
|
1170
1266
|
}
|
|
1171
1267
|
return new _Account({
|
|
1172
|
-
address:
|
|
1268
|
+
address: Pubkey.fromProtoPubkey(proto.address),
|
|
1173
1269
|
meta: AccountMeta.fromProto(proto.meta),
|
|
1174
1270
|
data: AccountData.fromProto(proto.data ?? void 0),
|
|
1175
1271
|
versionContext: convertVersionContext(proto.versionContext),
|
|
@@ -1186,11 +1282,6 @@ function convertVersionContext(meta) {
|
|
|
1186
1282
|
blockTimestampNs: timestampToNanoseconds(meta.blockTimestamp)
|
|
1187
1283
|
};
|
|
1188
1284
|
}
|
|
1189
|
-
function copyKey2(source) {
|
|
1190
|
-
const bytes = new Uint8Array(source.length);
|
|
1191
|
-
bytes.set(source);
|
|
1192
|
-
return bytes;
|
|
1193
|
-
}
|
|
1194
1285
|
|
|
1195
1286
|
// thru-ts-client-sdk/domain/accounts/streaming.ts
|
|
1196
1287
|
function toStreamAccountUpdate(response) {
|
|
@@ -1289,122 +1380,10 @@ var PageResponse = class _PageResponse {
|
|
|
1289
1380
|
}
|
|
1290
1381
|
};
|
|
1291
1382
|
|
|
1292
|
-
// thru-ts-client-sdk/domain/height/HeightSnapshot.ts
|
|
1293
|
-
var HeightSnapshot = class _HeightSnapshot {
|
|
1294
|
-
constructor(params) {
|
|
1295
|
-
this.finalized = params.finalized;
|
|
1296
|
-
this.locallyExecuted = params.locallyExecuted;
|
|
1297
|
-
this.clusterExecuted = params.clusterExecuted;
|
|
1298
|
-
}
|
|
1299
|
-
static fromProto(proto) {
|
|
1300
|
-
return new _HeightSnapshot({
|
|
1301
|
-
finalized: proto.finalized ?? 0n,
|
|
1302
|
-
locallyExecuted: proto.locallyExecuted ?? 0n,
|
|
1303
|
-
clusterExecuted: proto.clusterExecuted ?? 0n
|
|
1304
|
-
});
|
|
1305
|
-
}
|
|
1306
|
-
delta(other) {
|
|
1307
|
-
return {
|
|
1308
|
-
finalized: this.finalized - other.finalized,
|
|
1309
|
-
locallyExecuted: this.locallyExecuted - other.locallyExecuted,
|
|
1310
|
-
clusterExecuted: this.clusterExecuted - other.clusterExecuted
|
|
1311
|
-
};
|
|
1312
|
-
}
|
|
1313
|
-
};
|
|
1314
|
-
|
|
1315
|
-
// thru-ts-client-sdk/modules/height.ts
|
|
1316
|
-
var height_exports = {};
|
|
1317
|
-
__export(height_exports, {
|
|
1318
|
-
getBlockHeight: () => getBlockHeight
|
|
1319
|
-
});
|
|
1320
|
-
function getBlockHeight(ctx) {
|
|
1321
|
-
const request = create(GetHeightRequestSchema);
|
|
1322
|
-
return ctx.query.getHeight(request, withCallOptions(ctx)).then((proto) => HeightSnapshot.fromProto(proto));
|
|
1323
|
-
}
|
|
1324
|
-
function toSignature(value) {
|
|
1325
|
-
return toSignatureProto(value);
|
|
1326
|
-
}
|
|
1327
|
-
function toSignatureBytes(value) {
|
|
1328
|
-
return signatureBytesFromInput(value);
|
|
1329
|
-
}
|
|
1330
|
-
function toTsSignature(value, field = "tsSignature") {
|
|
1331
|
-
if (typeof value === "string" && value.startsWith("ts")) {
|
|
1332
|
-
return toTsSignatureProto(value, field);
|
|
1333
|
-
}
|
|
1334
|
-
return toTsSignatureProto(signatureBytesFromInput(value, field), field);
|
|
1335
|
-
}
|
|
1336
|
-
function toPubkey(value, field) {
|
|
1337
|
-
return toPubkeyProto(value, field);
|
|
1338
|
-
}
|
|
1339
|
-
function toPubkeyBytes(value, field) {
|
|
1340
|
-
return pubkeyBytesFromInput(value, field);
|
|
1341
|
-
}
|
|
1342
|
-
function toTaPubkey(value, field = "taPubkey") {
|
|
1343
|
-
if (typeof value === "string" && value.startsWith("ta")) {
|
|
1344
|
-
return toTaPubkeyProto(value, field);
|
|
1345
|
-
}
|
|
1346
|
-
return toTaPubkeyProto(pubkeyBytesFromInput(value, field), field);
|
|
1347
|
-
}
|
|
1348
|
-
function toBlockHash(value) {
|
|
1349
|
-
return create(BlockHashSchema, { value: ensureBytes(value, "blockHash") });
|
|
1350
|
-
}
|
|
1351
|
-
function deriveProgramAddress(options) {
|
|
1352
|
-
const programAddress = normalizeProgramAddress(options.programAddress);
|
|
1353
|
-
const seed = normalizeSeed(options.seed);
|
|
1354
|
-
const ephemeral = options.ephemeral === true;
|
|
1355
|
-
const derivationInput = new Uint8Array(programAddress.length + 1 + seed.length);
|
|
1356
|
-
derivationInput.set(programAddress, 0);
|
|
1357
|
-
derivationInput[programAddress.length] = ephemeral ? 1 : 0;
|
|
1358
|
-
derivationInput.set(seed, programAddress.length + 1);
|
|
1359
|
-
const hash = sha256(derivationInput);
|
|
1360
|
-
const derivedBytes = new Uint8Array(hash.slice(0, 32));
|
|
1361
|
-
return {
|
|
1362
|
-
bytes: derivedBytes,
|
|
1363
|
-
address: encodeAddress(derivedBytes)
|
|
1364
|
-
};
|
|
1365
|
-
}
|
|
1366
|
-
function normalizeProgramAddress(value) {
|
|
1367
|
-
return pubkeyBytesFromInput(value, "Program address");
|
|
1368
|
-
}
|
|
1369
|
-
function normalizeSeed(value) {
|
|
1370
|
-
if (value instanceof Uint8Array) {
|
|
1371
|
-
if (value.length === 0) {
|
|
1372
|
-
throw new Error("Seed cannot be empty");
|
|
1373
|
-
}
|
|
1374
|
-
if (value.length > 32) {
|
|
1375
|
-
throw new Error("Seed cannot exceed 32 bytes");
|
|
1376
|
-
}
|
|
1377
|
-
const seed = new Uint8Array(32);
|
|
1378
|
-
seed.set(value);
|
|
1379
|
-
return seed;
|
|
1380
|
-
}
|
|
1381
|
-
if (typeof value === "string") {
|
|
1382
|
-
if (value.length === 0) {
|
|
1383
|
-
throw new Error("Seed cannot be empty");
|
|
1384
|
-
}
|
|
1385
|
-
if (isHexString(value)) {
|
|
1386
|
-
const bytes = hexToBytes(value);
|
|
1387
|
-
if (bytes.length !== 32) {
|
|
1388
|
-
throw new Error(`Hex seed must decode to 32 bytes, got ${bytes.length}`);
|
|
1389
|
-
}
|
|
1390
|
-
return bytes;
|
|
1391
|
-
}
|
|
1392
|
-
const encoder = new TextEncoder();
|
|
1393
|
-
const utf8 = encoder.encode(value);
|
|
1394
|
-
if (utf8.length > 32) {
|
|
1395
|
-
throw new Error(`UTF-8 seed too long: ${utf8.length} bytes (max 32)`);
|
|
1396
|
-
}
|
|
1397
|
-
const seed = new Uint8Array(32);
|
|
1398
|
-
seed.set(utf8);
|
|
1399
|
-
return seed;
|
|
1400
|
-
}
|
|
1401
|
-
throw new Error("Seed must be provided as Uint8Array or string");
|
|
1402
|
-
}
|
|
1403
|
-
|
|
1404
1383
|
// thru-ts-client-sdk/domain/proofs/StateProof.ts
|
|
1405
1384
|
var StateProof = class _StateProof {
|
|
1406
1385
|
constructor(params) {
|
|
1407
|
-
this.proof =
|
|
1386
|
+
this.proof = copyBytes4(params.proof);
|
|
1408
1387
|
this.slot = params.slot;
|
|
1409
1388
|
}
|
|
1410
1389
|
static fromProto(proto) {
|
|
@@ -1414,7 +1393,7 @@ var StateProof = class _StateProof {
|
|
|
1414
1393
|
});
|
|
1415
1394
|
}
|
|
1416
1395
|
};
|
|
1417
|
-
function
|
|
1396
|
+
function copyBytes4(bytes) {
|
|
1418
1397
|
const copy = new Uint8Array(bytes.length);
|
|
1419
1398
|
copy.set(bytes);
|
|
1420
1399
|
return copy;
|
|
@@ -1426,13 +1405,9 @@ __export(proofs_exports, {
|
|
|
1426
1405
|
generateStateProof: () => generateStateProof
|
|
1427
1406
|
});
|
|
1428
1407
|
async function generateStateProof(ctx, options) {
|
|
1429
|
-
|
|
1430
|
-
if (targetSlot === void 0) {
|
|
1431
|
-
const height = await getBlockHeight(ctx);
|
|
1432
|
-
targetSlot = height.finalized;
|
|
1433
|
-
}
|
|
1408
|
+
const targetSlot = options.targetSlot ?? 0n;
|
|
1434
1409
|
const request = create(StateProofRequestSchema, {
|
|
1435
|
-
address: options.address ?
|
|
1410
|
+
address: options.address ? Pubkey.from(options.address).toProtoPubkey() : void 0,
|
|
1436
1411
|
proofType: options.proofType,
|
|
1437
1412
|
targetSlot
|
|
1438
1413
|
});
|
|
@@ -1457,7 +1432,7 @@ __export(accounts_exports, {
|
|
|
1457
1432
|
});
|
|
1458
1433
|
function getAccount(ctx, address, options = {}) {
|
|
1459
1434
|
const request = create(GetAccountRequestSchema, {
|
|
1460
|
-
address:
|
|
1435
|
+
address: Pubkey.from(address).toProtoPubkey(),
|
|
1461
1436
|
view: options.view ?? DEFAULT_ACCOUNT_VIEW,
|
|
1462
1437
|
versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,
|
|
1463
1438
|
minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,
|
|
@@ -1467,7 +1442,7 @@ function getAccount(ctx, address, options = {}) {
|
|
|
1467
1442
|
}
|
|
1468
1443
|
function getRawAccount(ctx, address, options = {}) {
|
|
1469
1444
|
const request = create(GetRawAccountRequestSchema, {
|
|
1470
|
-
address:
|
|
1445
|
+
address: Pubkey.from(address).toProtoPubkey(),
|
|
1471
1446
|
view: options.view ?? DEFAULT_ACCOUNT_VIEW,
|
|
1472
1447
|
versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,
|
|
1473
1448
|
minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS
|
|
@@ -1488,20 +1463,19 @@ function listAccounts(ctx, options) {
|
|
|
1488
1463
|
}));
|
|
1489
1464
|
}
|
|
1490
1465
|
async function createAccount(ctx, options) {
|
|
1491
|
-
const feePayer =
|
|
1492
|
-
const height = await getBlockHeight(ctx);
|
|
1493
|
-
const startSlot = height.finalized;
|
|
1466
|
+
const feePayer = Pubkey.from(options.publicKey).toBytes();
|
|
1494
1467
|
const proofResponse = await generateStateProof(ctx, {
|
|
1495
1468
|
address: options.publicKey,
|
|
1496
|
-
proofType: 1 /* CREATING
|
|
1497
|
-
targetSlot
|
|
1469
|
+
proofType: 1 /* CREATING */
|
|
1470
|
+
// targetSlot omitted - server will auto-select
|
|
1498
1471
|
});
|
|
1499
1472
|
const proofBytes = proofResponse.proof;
|
|
1500
1473
|
if (!proofBytes || proofBytes.length === 0) {
|
|
1501
1474
|
throw new Error("State proof generation returned empty proof");
|
|
1502
1475
|
}
|
|
1476
|
+
const startSlot = proofResponse.slot;
|
|
1503
1477
|
const program = new Uint8Array(32);
|
|
1504
|
-
program[31] =
|
|
1478
|
+
program[31] = 3;
|
|
1505
1479
|
const builder = new TransactionBuilder();
|
|
1506
1480
|
const headerDefaults = {
|
|
1507
1481
|
fee: 0n,
|
|
@@ -1554,21 +1528,23 @@ function toTrackTransactionUpdate(response) {
|
|
|
1554
1528
|
// thru-ts-client-sdk/domain/blocks/BlockFooter.ts
|
|
1555
1529
|
var BlockFooter = class _BlockFooter {
|
|
1556
1530
|
constructor(params) {
|
|
1557
|
-
this.signature =
|
|
1531
|
+
this.signature = copyBytes5(params.signature);
|
|
1558
1532
|
this.status = params.status;
|
|
1559
1533
|
this.consumedComputeUnits = params.consumedComputeUnits;
|
|
1560
1534
|
this.consumedStateUnits = params.consumedStateUnits;
|
|
1535
|
+
this.attestorPayment = params.attestorPayment;
|
|
1561
1536
|
}
|
|
1562
1537
|
static fromProto(proto) {
|
|
1563
1538
|
return new _BlockFooter({
|
|
1564
1539
|
signature: proto.signature?.value,
|
|
1565
1540
|
status: proto.status ?? 0 /* UNSPECIFIED */,
|
|
1566
1541
|
consumedComputeUnits: proto.consumedComputeUnits ?? 0n,
|
|
1567
|
-
consumedStateUnits: proto.consumedStateUnits ?? 0
|
|
1542
|
+
consumedStateUnits: proto.consumedStateUnits ?? 0,
|
|
1543
|
+
attestorPayment: proto.attestorPayment ?? 0n
|
|
1568
1544
|
});
|
|
1569
1545
|
}
|
|
1570
1546
|
};
|
|
1571
|
-
function
|
|
1547
|
+
function copyBytes5(bytes) {
|
|
1572
1548
|
if (!bytes) return void 0;
|
|
1573
1549
|
const out = new Uint8Array(bytes.length);
|
|
1574
1550
|
out.set(bytes);
|
|
@@ -1580,16 +1556,17 @@ var BlockHeader = class _BlockHeader {
|
|
|
1580
1556
|
constructor(params) {
|
|
1581
1557
|
this.slot = params.slot;
|
|
1582
1558
|
this.version = params.version;
|
|
1583
|
-
this.headerSignature =
|
|
1584
|
-
this.producer =
|
|
1559
|
+
this.headerSignature = copyBytes6(params.headerSignature);
|
|
1560
|
+
this.producer = copyBytes6(params.producer);
|
|
1585
1561
|
this.expiryTimestamp = params.expiryTimestamp;
|
|
1586
1562
|
this.startSlot = params.startSlot;
|
|
1587
1563
|
this.expiryAfter = params.expiryAfter;
|
|
1588
1564
|
this.maxBlockSize = params.maxBlockSize;
|
|
1589
1565
|
this.maxComputeUnits = params.maxComputeUnits;
|
|
1590
1566
|
this.maxStateUnits = params.maxStateUnits;
|
|
1591
|
-
this.
|
|
1592
|
-
this.
|
|
1567
|
+
this.bondAmountLockUp = params.bondAmountLockUp;
|
|
1568
|
+
this.weightSlot = params.weightSlot;
|
|
1569
|
+
this.blockHash = copyBytes6(params.blockHash);
|
|
1593
1570
|
}
|
|
1594
1571
|
static fromProto(proto) {
|
|
1595
1572
|
return new _BlockHeader({
|
|
@@ -1603,7 +1580,8 @@ var BlockHeader = class _BlockHeader {
|
|
|
1603
1580
|
maxBlockSize: proto.maxBlockSize,
|
|
1604
1581
|
maxComputeUnits: proto.maxComputeUnits,
|
|
1605
1582
|
maxStateUnits: proto.maxStateUnits,
|
|
1606
|
-
|
|
1583
|
+
bondAmountLockUp: proto.bondAmountLockUp,
|
|
1584
|
+
weightSlot: proto.weightSlot,
|
|
1607
1585
|
blockHash: proto.blockHash?.value
|
|
1608
1586
|
});
|
|
1609
1587
|
}
|
|
@@ -1619,12 +1597,13 @@ var BlockHeader = class _BlockHeader {
|
|
|
1619
1597
|
maxBlockSize: this.maxBlockSize,
|
|
1620
1598
|
maxComputeUnits: this.maxComputeUnits,
|
|
1621
1599
|
maxStateUnits: this.maxStateUnits,
|
|
1622
|
-
|
|
1600
|
+
bondAmountLockUp: this.bondAmountLockUp,
|
|
1601
|
+
weightSlot: this.weightSlot,
|
|
1623
1602
|
blockHash
|
|
1624
1603
|
});
|
|
1625
1604
|
}
|
|
1626
1605
|
};
|
|
1627
|
-
function
|
|
1606
|
+
function copyBytes6(bytes) {
|
|
1628
1607
|
if (!bytes) return void 0;
|
|
1629
1608
|
const out = new Uint8Array(bytes.length);
|
|
1630
1609
|
out.set(bytes);
|
|
@@ -1632,9 +1611,9 @@ function copyBytes5(bytes) {
|
|
|
1632
1611
|
}
|
|
1633
1612
|
|
|
1634
1613
|
// thru-ts-client-sdk/domain/blocks/Block.ts
|
|
1635
|
-
var BLOCK_HASH_SIZE =
|
|
1614
|
+
var BLOCK_HASH_SIZE = 32;
|
|
1636
1615
|
var RESERVED_FOOTER_PADDING = 0n;
|
|
1637
|
-
var SIGNATURE_PREFIX_SIZE2 =
|
|
1616
|
+
var SIGNATURE_PREFIX_SIZE2 = SIGNATURE_SIZE2;
|
|
1638
1617
|
var Block = class _Block {
|
|
1639
1618
|
constructor(params) {
|
|
1640
1619
|
this.header = params.header;
|
|
@@ -1654,7 +1633,7 @@ var Block = class _Block {
|
|
|
1654
1633
|
body: transactionBody,
|
|
1655
1634
|
consensusStatus: proto.consensusStatus
|
|
1656
1635
|
});
|
|
1657
|
-
block.attestorPayment = block.footer?.
|
|
1636
|
+
block.attestorPayment = block.footer?.attestorPayment ?? 0n;
|
|
1658
1637
|
return block;
|
|
1659
1638
|
}
|
|
1660
1639
|
static fromWire(data) {
|
|
@@ -1721,7 +1700,7 @@ var Block = class _Block {
|
|
|
1721
1700
|
const buffer = new ArrayBuffer(BLOCK_HEADER_SIZE);
|
|
1722
1701
|
const bytes = new Uint8Array(buffer);
|
|
1723
1702
|
const view = new DataView(buffer);
|
|
1724
|
-
const signature = normalizeBytes(this.header.headerSignature,
|
|
1703
|
+
const signature = normalizeBytes(this.header.headerSignature, SIGNATURE_SIZE2);
|
|
1725
1704
|
bytes.set(signature, 0);
|
|
1726
1705
|
let offset = SIGNATURE_PREFIX_SIZE2;
|
|
1727
1706
|
const version = this.header.version ?? BLOCK_VERSION_V1;
|
|
@@ -1729,10 +1708,10 @@ var Block = class _Block {
|
|
|
1729
1708
|
offset += 1;
|
|
1730
1709
|
bytes.fill(0, offset, offset + 7);
|
|
1731
1710
|
offset += 7;
|
|
1732
|
-
const producer = normalizeBytes(this.header.producer,
|
|
1711
|
+
const producer = normalizeBytes(this.header.producer, PUBKEY_SIZE2);
|
|
1733
1712
|
bytes.set(producer, offset);
|
|
1734
|
-
offset +=
|
|
1735
|
-
const bondAmountLockUp = this.header.
|
|
1713
|
+
offset += PUBKEY_SIZE2;
|
|
1714
|
+
const bondAmountLockUp = this.header.bondAmountLockUp ?? 0n;
|
|
1736
1715
|
view.setBigUint64(offset, bondAmountLockUp, true);
|
|
1737
1716
|
offset += 8;
|
|
1738
1717
|
const expiryTimestampNs = timestampToNanoseconds(this.header.expiryTimestamp);
|
|
@@ -1759,11 +1738,11 @@ var Block = class _Block {
|
|
|
1759
1738
|
const buffer = new ArrayBuffer(BLOCK_FOOTER_SIZE);
|
|
1760
1739
|
const bytes = new Uint8Array(buffer);
|
|
1761
1740
|
const view = new DataView(buffer);
|
|
1762
|
-
const attestorPayment = this.footer?.
|
|
1741
|
+
const attestorPayment = this.footer?.attestorPayment ?? this.attestorPayment ?? RESERVED_FOOTER_PADDING;
|
|
1763
1742
|
view.setBigUint64(0, attestorPayment, true);
|
|
1764
1743
|
const blockHash = normalizeBytes(this.header.blockHash, BLOCK_HASH_SIZE);
|
|
1765
1744
|
bytes.set(blockHash, 8);
|
|
1766
|
-
const signature = normalizeBytes(this.footer?.signature,
|
|
1745
|
+
const signature = normalizeBytes(this.footer?.signature, SIGNATURE_SIZE2);
|
|
1767
1746
|
bytes.set(signature, 8 + BLOCK_HASH_SIZE);
|
|
1768
1747
|
return bytes;
|
|
1769
1748
|
}
|
|
@@ -1773,13 +1752,13 @@ var Block = class _Block {
|
|
|
1773
1752
|
}
|
|
1774
1753
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
1775
1754
|
let offset = 0;
|
|
1776
|
-
const signature = bytes.slice(offset, offset +
|
|
1777
|
-
offset +=
|
|
1755
|
+
const signature = bytes.slice(offset, offset + SIGNATURE_SIZE2);
|
|
1756
|
+
offset += SIGNATURE_SIZE2;
|
|
1778
1757
|
const version = view.getUint8(offset);
|
|
1779
1758
|
offset += 1;
|
|
1780
1759
|
offset += 7;
|
|
1781
|
-
const producer = bytes.slice(offset, offset +
|
|
1782
|
-
offset +=
|
|
1760
|
+
const producer = bytes.slice(offset, offset + PUBKEY_SIZE2);
|
|
1761
|
+
offset += PUBKEY_SIZE2;
|
|
1783
1762
|
const bondAmountLockUp = view.getBigUint64(offset, true);
|
|
1784
1763
|
offset += 8;
|
|
1785
1764
|
const expiryTimestampNs = view.getBigUint64(offset, true);
|
|
@@ -1807,7 +1786,7 @@ var Block = class _Block {
|
|
|
1807
1786
|
maxBlockSize,
|
|
1808
1787
|
maxComputeUnits,
|
|
1809
1788
|
maxStateUnits,
|
|
1810
|
-
|
|
1789
|
+
bondAmountLockUp
|
|
1811
1790
|
});
|
|
1812
1791
|
return { header, blockTimeNs };
|
|
1813
1792
|
}
|
|
@@ -1821,12 +1800,13 @@ var Block = class _Block {
|
|
|
1821
1800
|
offset += 8;
|
|
1822
1801
|
const blockHash = bytes.slice(offset, offset + BLOCK_HASH_SIZE);
|
|
1823
1802
|
offset += BLOCK_HASH_SIZE;
|
|
1824
|
-
const signature = bytes.slice(offset, offset +
|
|
1803
|
+
const signature = bytes.slice(offset, offset + SIGNATURE_SIZE2);
|
|
1825
1804
|
const footer = new BlockFooter({
|
|
1826
1805
|
signature,
|
|
1827
1806
|
status: 0 /* UNSPECIFIED */,
|
|
1828
1807
|
consumedComputeUnits: 0n,
|
|
1829
|
-
consumedStateUnits: 0
|
|
1808
|
+
consumedStateUnits: 0,
|
|
1809
|
+
attestorPayment
|
|
1830
1810
|
});
|
|
1831
1811
|
return { footer, blockHash, attestorPayment };
|
|
1832
1812
|
}
|
|
@@ -1848,6 +1828,62 @@ function normalizeBytes(bytes, size) {
|
|
|
1848
1828
|
}
|
|
1849
1829
|
return bytes;
|
|
1850
1830
|
}
|
|
1831
|
+
function toBlockHash(value) {
|
|
1832
|
+
return create(BlockHashSchema, { value: ensureBytes(value, "blockHash") });
|
|
1833
|
+
}
|
|
1834
|
+
function deriveProgramAddress(options) {
|
|
1835
|
+
const programAddress = Pubkey.from(options.programAddress).toBytes();
|
|
1836
|
+
const seed = normalizeSeed(options.seed);
|
|
1837
|
+
const ephemeral = options.ephemeral === true;
|
|
1838
|
+
const derivationInput = new Uint8Array(
|
|
1839
|
+
programAddress.length + 1 + seed.length
|
|
1840
|
+
);
|
|
1841
|
+
derivationInput.set(programAddress, 0);
|
|
1842
|
+
derivationInput[programAddress.length] = ephemeral ? 1 : 0;
|
|
1843
|
+
derivationInput.set(seed, programAddress.length + 1);
|
|
1844
|
+
const hash = sha256(derivationInput);
|
|
1845
|
+
const derivedBytes = new Uint8Array(hash.slice(0, 32));
|
|
1846
|
+
return {
|
|
1847
|
+
bytes: derivedBytes,
|
|
1848
|
+
address: encodeAddress(derivedBytes)
|
|
1849
|
+
};
|
|
1850
|
+
}
|
|
1851
|
+
function normalizeSeed(value) {
|
|
1852
|
+
if (value instanceof Uint8Array) {
|
|
1853
|
+
if (value.length === 0) {
|
|
1854
|
+
throw new Error("Seed cannot be empty");
|
|
1855
|
+
}
|
|
1856
|
+
if (value.length > 32) {
|
|
1857
|
+
throw new Error("Seed cannot exceed 32 bytes");
|
|
1858
|
+
}
|
|
1859
|
+
const seed = new Uint8Array(32);
|
|
1860
|
+
seed.set(value);
|
|
1861
|
+
return seed;
|
|
1862
|
+
}
|
|
1863
|
+
if (typeof value === "string") {
|
|
1864
|
+
if (value.length === 0) {
|
|
1865
|
+
throw new Error("Seed cannot be empty");
|
|
1866
|
+
}
|
|
1867
|
+
if (isHexString(value)) {
|
|
1868
|
+
const bytes = hexToBytes(value);
|
|
1869
|
+
if (bytes.length !== 32) {
|
|
1870
|
+
throw new Error(
|
|
1871
|
+
`Hex seed must decode to 32 bytes, got ${bytes.length}`
|
|
1872
|
+
);
|
|
1873
|
+
}
|
|
1874
|
+
return bytes;
|
|
1875
|
+
}
|
|
1876
|
+
const encoder = new TextEncoder();
|
|
1877
|
+
const utf8 = encoder.encode(value);
|
|
1878
|
+
if (utf8.length > 32) {
|
|
1879
|
+
throw new Error(`UTF-8 seed too long: ${utf8.length} bytes (max 32)`);
|
|
1880
|
+
}
|
|
1881
|
+
const seed = new Uint8Array(32);
|
|
1882
|
+
seed.set(utf8);
|
|
1883
|
+
return seed;
|
|
1884
|
+
}
|
|
1885
|
+
throw new Error("Seed must be provided as Uint8Array or string");
|
|
1886
|
+
}
|
|
1851
1887
|
|
|
1852
1888
|
// thru-ts-client-sdk/modules/blocks.ts
|
|
1853
1889
|
var blocks_exports = {};
|
|
@@ -2005,9 +2041,9 @@ var ChainEvent = class _ChainEvent {
|
|
|
2005
2041
|
throw new Error("ChainEvent id is required");
|
|
2006
2042
|
}
|
|
2007
2043
|
this.id = params.id;
|
|
2008
|
-
this.transactionSignature =
|
|
2009
|
-
this.program =
|
|
2010
|
-
this.payload =
|
|
2044
|
+
this.transactionSignature = copyBytes7(params.transactionSignature);
|
|
2045
|
+
this.program = copyBytes7(params.program);
|
|
2046
|
+
this.payload = copyBytes7(params.payload);
|
|
2011
2047
|
this.slot = params.slot;
|
|
2012
2048
|
this.callIndex = params.callIndex;
|
|
2013
2049
|
this.programIndex = params.programIndex;
|
|
@@ -2039,7 +2075,7 @@ var ChainEvent = class _ChainEvent {
|
|
|
2039
2075
|
});
|
|
2040
2076
|
}
|
|
2041
2077
|
};
|
|
2042
|
-
function
|
|
2078
|
+
function copyBytes7(input) {
|
|
2043
2079
|
if (!input) {
|
|
2044
2080
|
return void 0;
|
|
2045
2081
|
}
|
|
@@ -2071,6 +2107,39 @@ function getEvent(ctx, eventId, options = {}) {
|
|
|
2071
2107
|
return ctx.query.getEvent(request, withCallOptions(ctx)).then((proto) => ChainEvent.fromQuery(proto));
|
|
2072
2108
|
}
|
|
2073
2109
|
|
|
2110
|
+
// thru-ts-client-sdk/domain/height/HeightSnapshot.ts
|
|
2111
|
+
var HeightSnapshot = class _HeightSnapshot {
|
|
2112
|
+
constructor(params) {
|
|
2113
|
+
this.finalized = params.finalized;
|
|
2114
|
+
this.locallyExecuted = params.locallyExecuted;
|
|
2115
|
+
this.clusterExecuted = params.clusterExecuted;
|
|
2116
|
+
}
|
|
2117
|
+
static fromProto(proto) {
|
|
2118
|
+
return new _HeightSnapshot({
|
|
2119
|
+
finalized: proto.finalized ?? 0n,
|
|
2120
|
+
locallyExecuted: proto.locallyExecuted ?? 0n,
|
|
2121
|
+
clusterExecuted: proto.clusterExecuted ?? 0n
|
|
2122
|
+
});
|
|
2123
|
+
}
|
|
2124
|
+
delta(other) {
|
|
2125
|
+
return {
|
|
2126
|
+
finalized: this.finalized - other.finalized,
|
|
2127
|
+
locallyExecuted: this.locallyExecuted - other.locallyExecuted,
|
|
2128
|
+
clusterExecuted: this.clusterExecuted - other.clusterExecuted
|
|
2129
|
+
};
|
|
2130
|
+
}
|
|
2131
|
+
};
|
|
2132
|
+
|
|
2133
|
+
// thru-ts-client-sdk/modules/height.ts
|
|
2134
|
+
var height_exports = {};
|
|
2135
|
+
__export(height_exports, {
|
|
2136
|
+
getBlockHeight: () => getBlockHeight
|
|
2137
|
+
});
|
|
2138
|
+
function getBlockHeight(ctx) {
|
|
2139
|
+
const request = create(GetHeightRequestSchema);
|
|
2140
|
+
return ctx.query.getHeight(request, withCallOptions(ctx)).then((proto) => HeightSnapshot.fromProto(proto));
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2074
2143
|
// thru-ts-client-sdk/modules/keys.ts
|
|
2075
2144
|
var keys_exports = {};
|
|
2076
2145
|
__export(keys_exports, {
|
|
@@ -2129,7 +2198,7 @@ function streamBlocks(ctx, options = {}) {
|
|
|
2129
2198
|
}
|
|
2130
2199
|
function streamAccountUpdates(ctx, address, options = {}) {
|
|
2131
2200
|
const request = create(StreamAccountUpdatesRequestSchema, {
|
|
2132
|
-
address:
|
|
2201
|
+
address: Pubkey.from(address).toProtoPubkey(),
|
|
2133
2202
|
view: options.view ?? DEFAULT_ACCOUNT_VIEW,
|
|
2134
2203
|
filter: options.filter?.toProto()
|
|
2135
2204
|
});
|
|
@@ -2180,7 +2249,7 @@ function streamEvents(ctx, options = {}) {
|
|
|
2180
2249
|
function trackTransaction(ctx, signature, options = {}) {
|
|
2181
2250
|
const timeoutMs = options.timeoutMs;
|
|
2182
2251
|
const request = create(TrackTransactionRequestSchema, {
|
|
2183
|
-
signature:
|
|
2252
|
+
signature: Signature.from(signature).toProtoSignature(),
|
|
2184
2253
|
timeout: timeoutMs != null ? {
|
|
2185
2254
|
seconds: BigInt(Math.floor(timeoutMs / 1e3)),
|
|
2186
2255
|
nanos: timeoutMs % 1e3 * 1e6
|
|
@@ -2253,7 +2322,7 @@ __export(transactions_exports, {
|
|
|
2253
2322
|
});
|
|
2254
2323
|
async function getTransaction(ctx, signature, options = {}) {
|
|
2255
2324
|
const request = create(GetTransactionRequestSchema, {
|
|
2256
|
-
signature:
|
|
2325
|
+
signature: Signature.from(signature).toProtoSignature(),
|
|
2257
2326
|
view: options.view ?? DEFAULT_TRANSACTION_VIEW,
|
|
2258
2327
|
versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,
|
|
2259
2328
|
minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS
|
|
@@ -2263,7 +2332,7 @@ async function getTransaction(ctx, signature, options = {}) {
|
|
|
2263
2332
|
}
|
|
2264
2333
|
async function getRawTransaction(ctx, signature, options = {}) {
|
|
2265
2334
|
const request = create(GetRawTransactionRequestSchema, {
|
|
2266
|
-
signature:
|
|
2335
|
+
signature: Signature.from(signature).toProtoSignature(),
|
|
2267
2336
|
versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,
|
|
2268
2337
|
minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS
|
|
2269
2338
|
});
|
|
@@ -2271,14 +2340,14 @@ async function getRawTransaction(ctx, signature, options = {}) {
|
|
|
2271
2340
|
}
|
|
2272
2341
|
async function getTransactionStatus(ctx, signature) {
|
|
2273
2342
|
const request = create(GetTransactionStatusRequestSchema, {
|
|
2274
|
-
signature:
|
|
2343
|
+
signature: Signature.from(signature).toProtoSignature()
|
|
2275
2344
|
});
|
|
2276
2345
|
const proto = await ctx.query.getTransactionStatus(request, withCallOptions(ctx));
|
|
2277
2346
|
return TransactionStatusSnapshot.fromProto(proto);
|
|
2278
2347
|
}
|
|
2279
2348
|
async function listTransactionsForAccount(ctx, account, options = {}) {
|
|
2280
2349
|
const request = create(ListTransactionsForAccountRequestSchema, {
|
|
2281
|
-
account:
|
|
2350
|
+
account: Pubkey.from(account).toProtoPubkey(),
|
|
2282
2351
|
filter: options.filter?.toProto(),
|
|
2283
2352
|
page: options.page?.toProto()
|
|
2284
2353
|
});
|
|
@@ -2286,12 +2355,13 @@ async function listTransactionsForAccount(ctx, account, options = {}) {
|
|
|
2286
2355
|
request,
|
|
2287
2356
|
withCallOptions(ctx)
|
|
2288
2357
|
);
|
|
2358
|
+
const protoTransactionSignatures = (response.transactions ?? []).map((transaction) => transaction.signature);
|
|
2289
2359
|
const transactions = await Promise.all(
|
|
2290
|
-
|
|
2291
|
-
if (!
|
|
2360
|
+
protoTransactionSignatures.map((signature) => {
|
|
2361
|
+
if (!signature) {
|
|
2292
2362
|
throw new Error("ListTransactionsForAccount returned an empty signature");
|
|
2293
2363
|
}
|
|
2294
|
-
return getTransaction(ctx,
|
|
2364
|
+
return getTransaction(ctx, signature.value, options.transactionOptions);
|
|
2295
2365
|
})
|
|
2296
2366
|
);
|
|
2297
2367
|
return {
|
|
@@ -2338,8 +2408,8 @@ function createTransactionBuilder() {
|
|
|
2338
2408
|
return new TransactionBuilder();
|
|
2339
2409
|
}
|
|
2340
2410
|
async function createBuildParams(ctx, options) {
|
|
2341
|
-
const feePayerPublicKey =
|
|
2342
|
-
const program =
|
|
2411
|
+
const feePayerPublicKey = Pubkey.from(options.feePayer.publicKey).toBytes();
|
|
2412
|
+
const program = Pubkey.from(options.program).toBytes();
|
|
2343
2413
|
const header = await createTransactionHeader(ctx, options.header ?? {}, feePayerPublicKey);
|
|
2344
2414
|
const accounts = parseAccounts(options.accounts);
|
|
2345
2415
|
const context = createInstructionContext(feePayerPublicKey, program, accounts);
|
|
@@ -2350,7 +2420,7 @@ async function createBuildParams(ctx, options) {
|
|
|
2350
2420
|
publicKey: feePayerPublicKey,
|
|
2351
2421
|
privateKey: options.feePayer.privateKey
|
|
2352
2422
|
},
|
|
2353
|
-
program: options.program,
|
|
2423
|
+
program: Pubkey.from(options.program).toBytes(),
|
|
2354
2424
|
header,
|
|
2355
2425
|
accounts,
|
|
2356
2426
|
instructionData,
|
|
@@ -2376,10 +2446,10 @@ function parseAccounts(accounts) {
|
|
|
2376
2446
|
return void 0;
|
|
2377
2447
|
}
|
|
2378
2448
|
const readWrite = accounts.readWrite?.map(
|
|
2379
|
-
(value, index) =>
|
|
2449
|
+
(value, index) => Pubkey.from(value).toBytes()
|
|
2380
2450
|
);
|
|
2381
2451
|
const readOnly = accounts.readOnly?.map(
|
|
2382
|
-
(value, index) =>
|
|
2452
|
+
(value, index) => Pubkey.from(value).toBytes()
|
|
2383
2453
|
);
|
|
2384
2454
|
const result = {};
|
|
2385
2455
|
if (readWrite && readWrite.length > 0) {
|
|
@@ -2395,25 +2465,14 @@ function parseAccounts(accounts) {
|
|
|
2395
2465
|
}
|
|
2396
2466
|
function createInstructionContext(feePayer, program, accounts) {
|
|
2397
2467
|
const allAccounts = [
|
|
2398
|
-
feePayer,
|
|
2399
|
-
program,
|
|
2400
|
-
...accounts?.readWriteAccounts ?? [],
|
|
2401
|
-
...accounts?.readOnlyAccounts ?? []
|
|
2468
|
+
Pubkey.from(feePayer),
|
|
2469
|
+
Pubkey.from(program),
|
|
2470
|
+
...accounts?.readWriteAccounts?.map((value) => Pubkey.from(value)) ?? [],
|
|
2471
|
+
...accounts?.readOnlyAccounts?.map((value) => Pubkey.from(value)) ?? []
|
|
2402
2472
|
];
|
|
2403
|
-
const accountsEqual = (a, b) => {
|
|
2404
|
-
if (a.length !== 32 || b.length !== 32) {
|
|
2405
|
-
return false;
|
|
2406
|
-
}
|
|
2407
|
-
for (let i = 0; i < 32; i++) {
|
|
2408
|
-
if (a[i] !== b[i]) {
|
|
2409
|
-
return false;
|
|
2410
|
-
}
|
|
2411
|
-
}
|
|
2412
|
-
return true;
|
|
2413
|
-
};
|
|
2414
2473
|
const getAccountIndex = (pubkey) => {
|
|
2415
2474
|
for (let i = 0; i < allAccounts.length; i++) {
|
|
2416
|
-
if (
|
|
2475
|
+
if (allAccounts[i].equals(Pubkey.from(pubkey))) {
|
|
2417
2476
|
return i;
|
|
2418
2477
|
}
|
|
2419
2478
|
}
|
|
@@ -2470,6 +2529,6 @@ var VersionInfo = class _VersionInfo {
|
|
|
2470
2529
|
}
|
|
2471
2530
|
};
|
|
2472
2531
|
|
|
2473
|
-
export { Account, AccountView, Block, BlockView, ChainEvent, ConsensusStatus, ExecutionStatus, FilterParamValueSchema, FilterSchema, GetVersionRequestSchema, HeightSnapshot, PageRequest, PageResponse, StateProof, Transaction, TransactionBuilder, TransactionStatusSnapshot, TransactionView, TransactionVmError, VersionInfo, accounts_exports, batchSendTransactions, blocks_exports, buildAndSignTransaction, buildTransaction, collectStream, consensusStatusToString, consensus_exports, createAccount, createThruClientContext, currentOrHistoricalVersionContext, currentVersionContext, deriveProgramAddress, events_exports, firstStreamValue, forEachStreamValue, fromPrivateKey, generateKeyPair, generateStateProof, getAccount, getBlock, getBlockHeight, getEvent, getRawAccount, getRawBlock, getRawTransaction, getTransaction, getTransactionStatus, height_exports, keys_exports, listAccounts, listBlocks, listTransactionsForAccount, proofs_exports,
|
|
2474
|
-
//# sourceMappingURL=chunk-
|
|
2475
|
-
//# sourceMappingURL=chunk-
|
|
2532
|
+
export { Account, AccountView, Block, BlockView, ChainEvent, ConsensusStatus, ExecutionStatus, FilterParamValueSchema, FilterSchema, GetVersionRequestSchema, HeightSnapshot, PageRequest, PageResponse, Pubkey, Signature, SignatureDomain, StateProof, Transaction, TransactionBuilder, TransactionStatusSnapshot, TransactionView, TransactionVmError, VersionInfo, accounts_exports, batchSendTransactions, blocks_exports, buildAndSignTransaction, buildTransaction, collectStream, consensusStatusToString, consensus_exports, createAccount, createThruClientContext, currentOrHistoricalVersionContext, currentVersionContext, deriveProgramAddress, events_exports, firstStreamValue, forEachStreamValue, fromPrivateKey, generateKeyPair, generateStateProof, getAccount, getBlock, getBlockHeight, getEvent, getRawAccount, getRawBlock, getRawTransaction, getTransaction, getTransactionStatus, height_exports, keys_exports, listAccounts, listBlocks, listTransactionsForAccount, proofs_exports, sendTransaction, seqVersionContext, signWithDomain, slotVersionContext, streamAccountUpdates, streamBlocks, streamEvents, streamTransactions, streaming_exports, timestampVersionContext, trackTransaction, transactions_exports, verifyWithDomain, versionContext, withCallOptions };
|
|
2533
|
+
//# sourceMappingURL=chunk-ZLV6WP54.js.map
|
|
2534
|
+
//# sourceMappingURL=chunk-ZLV6WP54.js.map
|