@thru/thru-sdk 0.1.30 → 0.1.34

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.
@@ -1,6 +1,6 @@
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 { signAsync, verifyAsync, getPublicKeyAsync } from '@noble/ed25519';
3
+ import { utils, etc, Point, CURVE, getPublicKeyAsync } from '@noble/ed25519';
4
4
  import { create } from '@bufbuild/protobuf';
5
5
  import { encodeAddress, decodeAddress, isHexString, hexToBytes, encodeSignature, decodeSignature, ensureBytes } from '@thru/helpers';
6
6
  import { createClient } from '@connectrpc/connect';
@@ -42,6 +42,8 @@ var DOMAIN_TAGS = {
42
42
  [3 /* GOSSIP */]: 4n
43
43
  };
44
44
  var DOMAIN_BLOCK_SIZE = 128;
45
+ var SIGNATURE_SIZE = 64;
46
+ var PUBKEY_SIZE = 32;
45
47
  function createDomainBlock(domain) {
46
48
  const block = new Uint8Array(DOMAIN_BLOCK_SIZE);
47
49
  block.fill(0);
@@ -53,20 +55,81 @@ function createDomainBlock(domain) {
53
55
  view.setBigUint64(0, tag, false);
54
56
  return block;
55
57
  }
56
- function prependDomainBlock(message, domain) {
57
- const domainBlock = createDomainBlock(domain);
58
- const result = new Uint8Array(domainBlock.length + message.length);
59
- result.set(domainBlock, 0);
60
- result.set(message, domainBlock.length);
61
- return result;
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;
62
86
  }
63
87
  async function signWithDomain(message, privateKey, publicKey, domain = 0 /* TXN */) {
64
- const messageWithDomain = prependDomainBlock(message, domain);
65
- return signAsync(messageWithDomain, privateKey);
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;
66
108
  }
67
109
  async function verifyWithDomain(signature, message, publicKey, domain = 0 /* TXN */) {
68
- const messageWithDomain = prependDomainBlock(message, domain);
69
- return verifyAsync(signature, messageWithDomain, publicKey);
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();
70
133
  }
71
134
  var file_thru_common_v1_primitives = /* @__PURE__ */ fileDesc("Ch90aHJ1L2NvbW1vbi92MS9wcmltaXRpdmVzLnByb3RvEg50aHJ1LmNvbW1vbi52MSIjCgZQdWJrZXkSGQoFdmFsdWUYASABKAxCCuBBArpIBHoCaCAiJgoJU2lnbmF0dXJlEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmhAIiYKCFRhUHVia2V5EhoKBXZhbHVlGAEgASgJQgvgQQK6SAVyA5gBLiIpCgtUc1NpZ25hdHVyZRIaCgV2YWx1ZRgBIAEoCUIL4EECukgFcgOYAVpCywEKEmNvbS50aHJ1LmNvbW1vbi52MUIPUHJpbWl0aXZlc1Byb3RvUAFaRGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvY29tbW9uL3YxO2NvbW1vbnYxogIDVENYqgIOVGhydS5Db21tb24uVjG6AgNUSFXKAg5UaHJ1XENvbW1vblxWMeICGlRocnVcQ29tbW9uXFYxXEdQQk1ldGFkYXRh6gIQVGhydTo6Q29tbW9uOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_field_behavior]);
72
135
  var PubkeySchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives, 0);
@@ -75,7 +138,7 @@ var TaPubkeySchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives,
75
138
  var TsSignatureSchema = /* @__PURE__ */ messageDesc(file_thru_common_v1_primitives, 3);
76
139
 
77
140
  // thru-ts-client-sdk/proto/thru/core/v1/types_pb.ts
78
- var file_thru_core_v1_types = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvdHlwZXMucHJvdG8SDHRocnUuY29yZS52MSIhCgRIYXNoEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmggIiYKCUJsb2NrSGFzaBIZCgV2YWx1ZRgBIAEoDEIK4EECukgEegJoQEK5AQoQY29tLnRocnUuY29yZS52MUIKVHlwZXNQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives]);
141
+ var file_thru_core_v1_types = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvdHlwZXMucHJvdG8SDHRocnUuY29yZS52MSIhCgRIYXNoEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmggIiYKCUJsb2NrSGFzaBIZCgV2YWx1ZRgBIAEoDEIK4EECukgEegJoIEK5AQoQY29tLnRocnUuY29yZS52MUIKVHlwZXNQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives]);
79
142
  var BlockHashSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_types, 1);
80
143
 
81
144
  // thru-ts-client-sdk/proto/thru/core/v1/transaction_pb.ts
@@ -120,7 +183,7 @@ var TransactionVmError = /* @__PURE__ */ ((TransactionVmError2) => {
120
183
  })(TransactionVmError || {});
121
184
 
122
185
  // thru-ts-client-sdk/domain/primitives/byte-utils.ts
123
- function copyBytes(source) {
186
+ function copyBytes2(source) {
124
187
  const bytes = new Uint8Array(source.length);
125
188
  bytes.set(source);
126
189
  return bytes;
@@ -129,7 +192,7 @@ function ensureExactLength(bytes, expected) {
129
192
  if (bytes.length !== expected) {
130
193
  throw new Error(`Must contain ${expected} bytes`);
131
194
  }
132
- return copyBytes(bytes);
195
+ return copyBytes2(bytes);
133
196
  }
134
197
  function bytesEqual(a, b) {
135
198
  if (a.length !== b.length) {
@@ -179,7 +242,7 @@ var Pubkey = class _Pubkey {
179
242
  return value.startsWith("ta") && value.length === TA_ADDRESS_LENGTH;
180
243
  }
181
244
  toBytes() {
182
- return copyBytes(this.bytes);
245
+ return copyBytes2(this.bytes);
183
246
  }
184
247
  toBytesUnsafe() {
185
248
  return this.bytes;
@@ -250,7 +313,7 @@ var Signature = class _Signature {
250
313
  return value.startsWith("ts") && value.length === TS_SIGNATURE_LENGTH;
251
314
  }
252
315
  toBytes() {
253
- return copyBytes(this.bytes);
316
+ return copyBytes2(this.bytes);
254
317
  }
255
318
  toBytesUnsafe() {
256
319
  return this.bytes;
@@ -295,11 +358,11 @@ var Signature = class _Signature {
295
358
  };
296
359
 
297
360
  // thru-ts-client-sdk/wire-format.ts
298
- var SIGNATURE_SIZE = 64;
299
- var PUBKEY_SIZE = 32;
361
+ var SIGNATURE_SIZE2 = 64;
362
+ var PUBKEY_SIZE2 = 32;
300
363
  var HASH_SIZE = 32;
301
- var BLOCK_HEADER_SIZE = 160;
302
- var BLOCK_FOOTER_SIZE = 136;
364
+ var BLOCK_HEADER_SIZE = 168;
365
+ var BLOCK_FOOTER_SIZE = 104;
303
366
  var BLOCK_VERSION_V1 = 1;
304
367
  var TXN_HEADER_SIZE = 176;
305
368
  var TXN_VERSION_V1 = 1;
@@ -313,7 +376,7 @@ var STATE_PROOF_TYPE_CREATION = 2;
313
376
 
314
377
  // thru-ts-client-sdk/domain/transactions/Transaction.ts
315
378
  var DEFAULT_FLAGS = 0;
316
- var SIGNATURE_PREFIX_SIZE = SIGNATURE_SIZE;
379
+ var SIGNATURE_PREFIX_SIZE = SIGNATURE_SIZE2;
317
380
  var MAX_INSTRUCTION_DATA_LENGTH = 65535;
318
381
  var BYTE_POPCOUNT = new Uint8Array(256).map((_value, index) => {
319
382
  let v = index;
@@ -363,9 +426,9 @@ var Transaction = class _Transaction {
363
426
  const strict = options.strict ?? false;
364
427
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
365
428
  let offset = 0;
366
- const signatureBytes = data.slice(offset, offset + SIGNATURE_SIZE);
429
+ const signatureBytes = data.slice(offset, offset + SIGNATURE_SIZE2);
367
430
  const hasSignature = hasNonZeroBytes(signatureBytes);
368
- offset += SIGNATURE_SIZE;
431
+ offset += SIGNATURE_SIZE2;
369
432
  const version = view.getUint8(offset);
370
433
  offset += 1;
371
434
  if (strict && version !== TXN_VERSION_V1) {
@@ -398,12 +461,12 @@ var Transaction = class _Transaction {
398
461
  const expiryAfter = view.getUint32(offset, true);
399
462
  offset += 4;
400
463
  offset += 4;
401
- _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, "fee payer account");
402
- const feePayer = data.slice(offset, offset + PUBKEY_SIZE);
403
- offset += PUBKEY_SIZE;
404
- _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, "program account");
405
- const program = data.slice(offset, offset + PUBKEY_SIZE);
406
- offset += PUBKEY_SIZE;
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;
407
470
  if (offset !== TXN_HEADER_SIZE) {
408
471
  throw new Error(`Transaction header parsing mismatch (expected offset ${TXN_HEADER_SIZE}, got ${offset})`);
409
472
  }
@@ -415,15 +478,15 @@ var Transaction = class _Transaction {
415
478
  }
416
479
  const readWriteAccounts = [];
417
480
  for (let i = 0; i < readwriteAccountsCount; i++) {
418
- _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, "read-write accounts");
419
- readWriteAccounts.push(data.slice(offset, offset + PUBKEY_SIZE));
420
- offset += PUBKEY_SIZE;
481
+ _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "read-write accounts");
482
+ readWriteAccounts.push(data.slice(offset, offset + PUBKEY_SIZE2));
483
+ offset += PUBKEY_SIZE2;
421
484
  }
422
485
  const readOnlyAccounts = [];
423
486
  for (let i = 0; i < readonlyAccountsCount; i++) {
424
- _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, "read-only accounts");
425
- readOnlyAccounts.push(data.slice(offset, offset + PUBKEY_SIZE));
426
- offset += PUBKEY_SIZE;
487
+ _Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE2, "read-only accounts");
488
+ readOnlyAccounts.push(data.slice(offset, offset + PUBKEY_SIZE2));
489
+ offset += PUBKEY_SIZE2;
427
490
  }
428
491
  let instructionData;
429
492
  if (instructionDataSize > 0) {
@@ -549,7 +612,7 @@ var Transaction = class _Transaction {
549
612
  });
550
613
  }
551
614
  const signatureBytes = proto.signature?.value ?? header.feePayerSignature?.value ?? void 0;
552
- if (signatureBytes && signatureBytes.length === SIGNATURE_SIZE && hasNonZeroBytes(signatureBytes)) {
615
+ if (signatureBytes && signatureBytes.length === SIGNATURE_SIZE2 && hasNonZeroBytes(signatureBytes)) {
553
616
  transaction.setSignature(Signature.from(signatureBytes));
554
617
  }
555
618
  if (proto.executionResult) {
@@ -574,14 +637,14 @@ var Transaction = class _Transaction {
574
637
  throw new Error("Fee payer private key must contain 32 bytes");
575
638
  }
576
639
  const payload = this.toWireForSigning();
577
- const publicKey = new Uint8Array(32);
640
+ const publicKey = this.feePayer.toBytes();
578
641
  const signature = await signWithDomain(
579
642
  payload,
580
643
  privateKey,
581
644
  publicKey,
582
645
  0 /* TXN */
583
646
  );
584
- if (signature.length !== SIGNATURE_SIZE) {
647
+ if (signature.length !== SIGNATURE_SIZE2) {
585
648
  throw new Error("ed25519 signing produced an invalid signature");
586
649
  }
587
650
  this.signature = Signature.from(signature);
@@ -601,12 +664,12 @@ var Transaction = class _Transaction {
601
664
  const headerBytes = new Uint8Array(buffer);
602
665
  const view = new DataView(buffer);
603
666
  if (signature) {
604
- if (signature.length !== SIGNATURE_SIZE) {
605
- throw new Error(`Signature must contain ${SIGNATURE_SIZE} bytes`);
667
+ if (signature.length !== SIGNATURE_SIZE2) {
668
+ throw new Error(`Signature must contain ${SIGNATURE_SIZE2} bytes`);
606
669
  }
607
670
  headerBytes.set(signature, 0);
608
671
  } else {
609
- headerBytes.fill(0, 0, SIGNATURE_SIZE);
672
+ headerBytes.fill(0, 0, SIGNATURE_SIZE2);
610
673
  }
611
674
  let offset = SIGNATURE_PREFIX_SIZE;
612
675
  view.setUint8(offset, this.version & 255);
@@ -639,12 +702,12 @@ var Transaction = class _Transaction {
639
702
  offset += 4;
640
703
  offset += 4;
641
704
  headerBytes.set(this.feePayer.toBytes(), offset);
642
- offset += PUBKEY_SIZE;
705
+ offset += PUBKEY_SIZE2;
643
706
  headerBytes.set(this.program.toBytes(), offset);
644
707
  return buffer;
645
708
  }
646
709
  buildWirePayload(headerPrefix) {
647
- const dynamicLength = this.readWriteAccounts.length * PUBKEY_SIZE + this.readOnlyAccounts.length * PUBKEY_SIZE + (this.instructionData?.length ?? 0) + (this.feePayerStateProof?.length ?? 0) + (this.feePayerAccountMetaRaw?.length ?? 0);
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);
648
711
  const result = new Uint8Array(headerPrefix.length + dynamicLength);
649
712
  result.set(headerPrefix, 0);
650
713
  let offset = headerPrefix.length;
@@ -668,15 +731,15 @@ var Transaction = class _Transaction {
668
731
  let offset = 0;
669
732
  const readWriteAccounts = [];
670
733
  for (let i = 0; i < readwriteCount; i++) {
671
- this.ensureAvailable(body.length, offset, PUBKEY_SIZE, "read-write accounts");
672
- readWriteAccounts.push(body.slice(offset, offset + PUBKEY_SIZE));
673
- offset += PUBKEY_SIZE;
734
+ this.ensureAvailable(body.length, offset, PUBKEY_SIZE2, "read-write accounts");
735
+ readWriteAccounts.push(body.slice(offset, offset + PUBKEY_SIZE2));
736
+ offset += PUBKEY_SIZE2;
674
737
  }
675
738
  const readOnlyAccounts = [];
676
739
  for (let i = 0; i < readonlyCount; i++) {
677
- this.ensureAvailable(body.length, offset, PUBKEY_SIZE, "read-only accounts");
678
- readOnlyAccounts.push(body.slice(offset, offset + PUBKEY_SIZE));
679
- offset += PUBKEY_SIZE;
740
+ this.ensureAvailable(body.length, offset, PUBKEY_SIZE2, "read-only accounts");
741
+ readOnlyAccounts.push(body.slice(offset, offset + PUBKEY_SIZE2));
742
+ offset += PUBKEY_SIZE2;
680
743
  }
681
744
  let instructionData;
682
745
  if (instructionDataSize > 0) {
@@ -770,7 +833,7 @@ function appendAccountList(target, start, accounts) {
770
833
  let offset = start;
771
834
  for (const account of accounts) {
772
835
  target.set(account, offset);
773
- offset += PUBKEY_SIZE;
836
+ offset += PUBKEY_SIZE2;
774
837
  }
775
838
  return offset;
776
839
  }
@@ -943,7 +1006,7 @@ function consensusStatusToString(status) {
943
1006
  // thru-ts-client-sdk/domain/transactions/TransactionStatusSnapshot.ts
944
1007
  var TransactionStatusSnapshot = class _TransactionStatusSnapshot {
945
1008
  constructor(params) {
946
- this.signature = copyBytes2(params.signature);
1009
+ this.signature = copyBytes3(params.signature);
947
1010
  this.statusCode = params.consensusStatus;
948
1011
  this.status = params.consensusStatus != null ? consensusStatusToString(params.consensusStatus) : void 0;
949
1012
  this.executionResult = params.executionResult;
@@ -959,7 +1022,7 @@ var TransactionStatusSnapshot = class _TransactionStatusSnapshot {
959
1022
  });
960
1023
  }
961
1024
  };
962
- function copyBytes2(bytes) {
1025
+ function copyBytes3(bytes) {
963
1026
  const copy = new Uint8Array(bytes.length);
964
1027
  copy.set(bytes);
965
1028
  return copy;
@@ -973,7 +1036,7 @@ var AccountView = /* @__PURE__ */ ((AccountView2) => {
973
1036
  AccountView2[AccountView2["FULL"] = 4] = "FULL";
974
1037
  return AccountView2;
975
1038
  })(AccountView || {});
976
- var file_thru_core_v1_block = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvYmxvY2sucHJvdG8SDHRocnUuY29yZS52MSLkAwoLQmxvY2tIZWFkZXISEQoEc2xvdBgBIAEoBEID4EECEjAKCmJsb2NrX2hhc2gYAiABKAsyFy50aHJ1LmNvcmUudjEuQmxvY2tIYXNoQgPgQQISOAoQaGVhZGVyX3NpZ25hdHVyZRgDIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEhQKB3ZlcnNpb24YBCABKA1CA+BBAhItCghwcm9kdWNlchgFIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjkKEGV4cGlyeV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQISFwoKc3RhcnRfc2xvdBgHIAEoBEID4EECEhkKDGV4cGlyeV9hZnRlchgIIAEoDUID4EECEhsKDm1heF9ibG9ja19zaXplGAkgASgNQgPgQQISHgoRbWF4X2NvbXB1dGVfdW5pdHMYCiABKARCA+BBAhIcCg9tYXhfc3RhdGVfdW5pdHMYCyABKA1CA+BBAhISCgVwcmljZRgMIAEoBEID4EECEjMKCmJsb2NrX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQIivAEKC0Jsb2NrRm9vdGVyEjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjIKBnN0YXR1cxgCIAEoDjIdLnRocnUuY29yZS52MS5FeGVjdXRpb25TdGF0dXNCA+BBAhIjChZjb25zdW1lZF9jb21wdXRlX3VuaXRzGAMgASgEQgPgQQISIQoUY29uc3VtZWRfc3RhdGVfdW5pdHMYBCABKA1CA+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]);
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]);
977
1040
  var BlockView = /* @__PURE__ */ ((BlockView2) => {
978
1041
  BlockView2[BlockView2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
979
1042
  BlockView2[BlockView2["HEADER_ONLY"] = 1] = "HEADER_ONLY";
@@ -1023,7 +1086,7 @@ var file_thru_core_v1_state = /* @__PURE__ */ fileDesc("Chh0aHJ1L2NvcmUvdjEvc3Rh
1023
1086
  var StateProofRequestSchema = /* @__PURE__ */ messageDesc(file_thru_core_v1_state, 0);
1024
1087
 
1025
1088
  // thru-ts-client-sdk/proto/thru/services/v1/query_service_pb.ts
1026
- 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]);
1027
1090
  var GetAccountRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 0);
1028
1091
  var GetRawAccountRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 1);
1029
1092
  var GetTransactionRequestSchema = /* @__PURE__ */ messageDesc(file_thru_services_v1_query_service, 2);
@@ -1317,43 +1380,10 @@ var PageResponse = class _PageResponse {
1317
1380
  }
1318
1381
  };
1319
1382
 
1320
- // thru-ts-client-sdk/domain/height/HeightSnapshot.ts
1321
- var HeightSnapshot = class _HeightSnapshot {
1322
- constructor(params) {
1323
- this.finalized = params.finalized;
1324
- this.locallyExecuted = params.locallyExecuted;
1325
- this.clusterExecuted = params.clusterExecuted;
1326
- }
1327
- static fromProto(proto) {
1328
- return new _HeightSnapshot({
1329
- finalized: proto.finalized ?? 0n,
1330
- locallyExecuted: proto.locallyExecuted ?? 0n,
1331
- clusterExecuted: proto.clusterExecuted ?? 0n
1332
- });
1333
- }
1334
- delta(other) {
1335
- return {
1336
- finalized: this.finalized - other.finalized,
1337
- locallyExecuted: this.locallyExecuted - other.locallyExecuted,
1338
- clusterExecuted: this.clusterExecuted - other.clusterExecuted
1339
- };
1340
- }
1341
- };
1342
-
1343
- // thru-ts-client-sdk/modules/height.ts
1344
- var height_exports = {};
1345
- __export(height_exports, {
1346
- getBlockHeight: () => getBlockHeight
1347
- });
1348
- function getBlockHeight(ctx) {
1349
- const request = create(GetHeightRequestSchema);
1350
- return ctx.query.getHeight(request, withCallOptions(ctx)).then((proto) => HeightSnapshot.fromProto(proto));
1351
- }
1352
-
1353
1383
  // thru-ts-client-sdk/domain/proofs/StateProof.ts
1354
1384
  var StateProof = class _StateProof {
1355
1385
  constructor(params) {
1356
- this.proof = copyBytes3(params.proof);
1386
+ this.proof = copyBytes4(params.proof);
1357
1387
  this.slot = params.slot;
1358
1388
  }
1359
1389
  static fromProto(proto) {
@@ -1363,7 +1393,7 @@ var StateProof = class _StateProof {
1363
1393
  });
1364
1394
  }
1365
1395
  };
1366
- function copyBytes3(bytes) {
1396
+ function copyBytes4(bytes) {
1367
1397
  const copy = new Uint8Array(bytes.length);
1368
1398
  copy.set(bytes);
1369
1399
  return copy;
@@ -1375,11 +1405,7 @@ __export(proofs_exports, {
1375
1405
  generateStateProof: () => generateStateProof
1376
1406
  });
1377
1407
  async function generateStateProof(ctx, options) {
1378
- let targetSlot = options.targetSlot;
1379
- if (targetSlot === void 0) {
1380
- const height = await getBlockHeight(ctx);
1381
- targetSlot = height.finalized;
1382
- }
1408
+ const targetSlot = options.targetSlot ?? 0n;
1383
1409
  const request = create(StateProofRequestSchema, {
1384
1410
  address: options.address ? Pubkey.from(options.address).toProtoPubkey() : void 0,
1385
1411
  proofType: options.proofType,
@@ -1438,19 +1464,18 @@ function listAccounts(ctx, options) {
1438
1464
  }
1439
1465
  async function createAccount(ctx, options) {
1440
1466
  const feePayer = Pubkey.from(options.publicKey).toBytes();
1441
- const height = await getBlockHeight(ctx);
1442
- const startSlot = height.finalized;
1443
1467
  const proofResponse = await generateStateProof(ctx, {
1444
1468
  address: options.publicKey,
1445
- proofType: 1 /* CREATING */,
1446
- targetSlot: startSlot
1469
+ proofType: 1 /* CREATING */
1470
+ // targetSlot omitted - server will auto-select
1447
1471
  });
1448
1472
  const proofBytes = proofResponse.proof;
1449
1473
  if (!proofBytes || proofBytes.length === 0) {
1450
1474
  throw new Error("State proof generation returned empty proof");
1451
1475
  }
1476
+ const startSlot = proofResponse.slot;
1452
1477
  const program = new Uint8Array(32);
1453
- program[31] = 2;
1478
+ program[31] = 3;
1454
1479
  const builder = new TransactionBuilder();
1455
1480
  const headerDefaults = {
1456
1481
  fee: 0n,
@@ -1503,21 +1528,23 @@ function toTrackTransactionUpdate(response) {
1503
1528
  // thru-ts-client-sdk/domain/blocks/BlockFooter.ts
1504
1529
  var BlockFooter = class _BlockFooter {
1505
1530
  constructor(params) {
1506
- this.signature = copyBytes4(params.signature);
1531
+ this.signature = copyBytes5(params.signature);
1507
1532
  this.status = params.status;
1508
1533
  this.consumedComputeUnits = params.consumedComputeUnits;
1509
1534
  this.consumedStateUnits = params.consumedStateUnits;
1535
+ this.attestorPayment = params.attestorPayment;
1510
1536
  }
1511
1537
  static fromProto(proto) {
1512
1538
  return new _BlockFooter({
1513
1539
  signature: proto.signature?.value,
1514
1540
  status: proto.status ?? 0 /* UNSPECIFIED */,
1515
1541
  consumedComputeUnits: proto.consumedComputeUnits ?? 0n,
1516
- consumedStateUnits: proto.consumedStateUnits ?? 0
1542
+ consumedStateUnits: proto.consumedStateUnits ?? 0,
1543
+ attestorPayment: proto.attestorPayment ?? 0n
1517
1544
  });
1518
1545
  }
1519
1546
  };
1520
- function copyBytes4(bytes) {
1547
+ function copyBytes5(bytes) {
1521
1548
  if (!bytes) return void 0;
1522
1549
  const out = new Uint8Array(bytes.length);
1523
1550
  out.set(bytes);
@@ -1529,16 +1556,17 @@ var BlockHeader = class _BlockHeader {
1529
1556
  constructor(params) {
1530
1557
  this.slot = params.slot;
1531
1558
  this.version = params.version;
1532
- this.headerSignature = copyBytes5(params.headerSignature);
1533
- this.producer = copyBytes5(params.producer);
1559
+ this.headerSignature = copyBytes6(params.headerSignature);
1560
+ this.producer = copyBytes6(params.producer);
1534
1561
  this.expiryTimestamp = params.expiryTimestamp;
1535
1562
  this.startSlot = params.startSlot;
1536
1563
  this.expiryAfter = params.expiryAfter;
1537
1564
  this.maxBlockSize = params.maxBlockSize;
1538
1565
  this.maxComputeUnits = params.maxComputeUnits;
1539
1566
  this.maxStateUnits = params.maxStateUnits;
1540
- this.price = params.price;
1541
- this.blockHash = copyBytes5(params.blockHash);
1567
+ this.bondAmountLockUp = params.bondAmountLockUp;
1568
+ this.weightSlot = params.weightSlot;
1569
+ this.blockHash = copyBytes6(params.blockHash);
1542
1570
  }
1543
1571
  static fromProto(proto) {
1544
1572
  return new _BlockHeader({
@@ -1552,7 +1580,8 @@ var BlockHeader = class _BlockHeader {
1552
1580
  maxBlockSize: proto.maxBlockSize,
1553
1581
  maxComputeUnits: proto.maxComputeUnits,
1554
1582
  maxStateUnits: proto.maxStateUnits,
1555
- price: proto.price,
1583
+ bondAmountLockUp: proto.bondAmountLockUp,
1584
+ weightSlot: proto.weightSlot,
1556
1585
  blockHash: proto.blockHash?.value
1557
1586
  });
1558
1587
  }
@@ -1568,12 +1597,13 @@ var BlockHeader = class _BlockHeader {
1568
1597
  maxBlockSize: this.maxBlockSize,
1569
1598
  maxComputeUnits: this.maxComputeUnits,
1570
1599
  maxStateUnits: this.maxStateUnits,
1571
- price: this.price,
1600
+ bondAmountLockUp: this.bondAmountLockUp,
1601
+ weightSlot: this.weightSlot,
1572
1602
  blockHash
1573
1603
  });
1574
1604
  }
1575
1605
  };
1576
- function copyBytes5(bytes) {
1606
+ function copyBytes6(bytes) {
1577
1607
  if (!bytes) return void 0;
1578
1608
  const out = new Uint8Array(bytes.length);
1579
1609
  out.set(bytes);
@@ -1581,9 +1611,9 @@ function copyBytes5(bytes) {
1581
1611
  }
1582
1612
 
1583
1613
  // thru-ts-client-sdk/domain/blocks/Block.ts
1584
- var BLOCK_HASH_SIZE = 64;
1614
+ var BLOCK_HASH_SIZE = 32;
1585
1615
  var RESERVED_FOOTER_PADDING = 0n;
1586
- var SIGNATURE_PREFIX_SIZE2 = SIGNATURE_SIZE;
1616
+ var SIGNATURE_PREFIX_SIZE2 = SIGNATURE_SIZE2;
1587
1617
  var Block = class _Block {
1588
1618
  constructor(params) {
1589
1619
  this.header = params.header;
@@ -1603,7 +1633,7 @@ var Block = class _Block {
1603
1633
  body: transactionBody,
1604
1634
  consensusStatus: proto.consensusStatus
1605
1635
  });
1606
- block.attestorPayment = block.footer?.consumedComputeUnits ?? 0n;
1636
+ block.attestorPayment = block.footer?.attestorPayment ?? 0n;
1607
1637
  return block;
1608
1638
  }
1609
1639
  static fromWire(data) {
@@ -1670,7 +1700,7 @@ var Block = class _Block {
1670
1700
  const buffer = new ArrayBuffer(BLOCK_HEADER_SIZE);
1671
1701
  const bytes = new Uint8Array(buffer);
1672
1702
  const view = new DataView(buffer);
1673
- const signature = normalizeBytes(this.header.headerSignature, SIGNATURE_SIZE);
1703
+ const signature = normalizeBytes(this.header.headerSignature, SIGNATURE_SIZE2);
1674
1704
  bytes.set(signature, 0);
1675
1705
  let offset = SIGNATURE_PREFIX_SIZE2;
1676
1706
  const version = this.header.version ?? BLOCK_VERSION_V1;
@@ -1678,10 +1708,10 @@ var Block = class _Block {
1678
1708
  offset += 1;
1679
1709
  bytes.fill(0, offset, offset + 7);
1680
1710
  offset += 7;
1681
- const producer = normalizeBytes(this.header.producer, PUBKEY_SIZE);
1711
+ const producer = normalizeBytes(this.header.producer, PUBKEY_SIZE2);
1682
1712
  bytes.set(producer, offset);
1683
- offset += PUBKEY_SIZE;
1684
- const bondAmountLockUp = this.header.price ?? 0n;
1713
+ offset += PUBKEY_SIZE2;
1714
+ const bondAmountLockUp = this.header.bondAmountLockUp ?? 0n;
1685
1715
  view.setBigUint64(offset, bondAmountLockUp, true);
1686
1716
  offset += 8;
1687
1717
  const expiryTimestampNs = timestampToNanoseconds(this.header.expiryTimestamp);
@@ -1708,11 +1738,11 @@ var Block = class _Block {
1708
1738
  const buffer = new ArrayBuffer(BLOCK_FOOTER_SIZE);
1709
1739
  const bytes = new Uint8Array(buffer);
1710
1740
  const view = new DataView(buffer);
1711
- const attestorPayment = this.footer?.consumedComputeUnits ?? this.attestorPayment ?? RESERVED_FOOTER_PADDING;
1741
+ const attestorPayment = this.footer?.attestorPayment ?? this.attestorPayment ?? RESERVED_FOOTER_PADDING;
1712
1742
  view.setBigUint64(0, attestorPayment, true);
1713
1743
  const blockHash = normalizeBytes(this.header.blockHash, BLOCK_HASH_SIZE);
1714
1744
  bytes.set(blockHash, 8);
1715
- const signature = normalizeBytes(this.footer?.signature, SIGNATURE_SIZE);
1745
+ const signature = normalizeBytes(this.footer?.signature, SIGNATURE_SIZE2);
1716
1746
  bytes.set(signature, 8 + BLOCK_HASH_SIZE);
1717
1747
  return bytes;
1718
1748
  }
@@ -1722,13 +1752,13 @@ var Block = class _Block {
1722
1752
  }
1723
1753
  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
1724
1754
  let offset = 0;
1725
- const signature = bytes.slice(offset, offset + SIGNATURE_SIZE);
1726
- offset += SIGNATURE_SIZE;
1755
+ const signature = bytes.slice(offset, offset + SIGNATURE_SIZE2);
1756
+ offset += SIGNATURE_SIZE2;
1727
1757
  const version = view.getUint8(offset);
1728
1758
  offset += 1;
1729
1759
  offset += 7;
1730
- const producer = bytes.slice(offset, offset + PUBKEY_SIZE);
1731
- offset += PUBKEY_SIZE;
1760
+ const producer = bytes.slice(offset, offset + PUBKEY_SIZE2);
1761
+ offset += PUBKEY_SIZE2;
1732
1762
  const bondAmountLockUp = view.getBigUint64(offset, true);
1733
1763
  offset += 8;
1734
1764
  const expiryTimestampNs = view.getBigUint64(offset, true);
@@ -1756,7 +1786,7 @@ var Block = class _Block {
1756
1786
  maxBlockSize,
1757
1787
  maxComputeUnits,
1758
1788
  maxStateUnits,
1759
- price: bondAmountLockUp
1789
+ bondAmountLockUp
1760
1790
  });
1761
1791
  return { header, blockTimeNs };
1762
1792
  }
@@ -1770,12 +1800,13 @@ var Block = class _Block {
1770
1800
  offset += 8;
1771
1801
  const blockHash = bytes.slice(offset, offset + BLOCK_HASH_SIZE);
1772
1802
  offset += BLOCK_HASH_SIZE;
1773
- const signature = bytes.slice(offset, offset + SIGNATURE_SIZE);
1803
+ const signature = bytes.slice(offset, offset + SIGNATURE_SIZE2);
1774
1804
  const footer = new BlockFooter({
1775
1805
  signature,
1776
1806
  status: 0 /* UNSPECIFIED */,
1777
1807
  consumedComputeUnits: 0n,
1778
- consumedStateUnits: 0
1808
+ consumedStateUnits: 0,
1809
+ attestorPayment
1779
1810
  });
1780
1811
  return { footer, blockHash, attestorPayment };
1781
1812
  }
@@ -2010,9 +2041,9 @@ var ChainEvent = class _ChainEvent {
2010
2041
  throw new Error("ChainEvent id is required");
2011
2042
  }
2012
2043
  this.id = params.id;
2013
- this.transactionSignature = copyBytes6(params.transactionSignature);
2014
- this.program = copyBytes6(params.program);
2015
- this.payload = copyBytes6(params.payload);
2044
+ this.transactionSignature = copyBytes7(params.transactionSignature);
2045
+ this.program = copyBytes7(params.program);
2046
+ this.payload = copyBytes7(params.payload);
2016
2047
  this.slot = params.slot;
2017
2048
  this.callIndex = params.callIndex;
2018
2049
  this.programIndex = params.programIndex;
@@ -2044,7 +2075,7 @@ var ChainEvent = class _ChainEvent {
2044
2075
  });
2045
2076
  }
2046
2077
  };
2047
- function copyBytes6(input) {
2078
+ function copyBytes7(input) {
2048
2079
  if (!input) {
2049
2080
  return void 0;
2050
2081
  }
@@ -2076,6 +2107,39 @@ function getEvent(ctx, eventId, options = {}) {
2076
2107
  return ctx.query.getEvent(request, withCallOptions(ctx)).then((proto) => ChainEvent.fromQuery(proto));
2077
2108
  }
2078
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
+
2079
2143
  // thru-ts-client-sdk/modules/keys.ts
2080
2144
  var keys_exports = {};
2081
2145
  __export(keys_exports, {
@@ -2466,5 +2530,5 @@ var VersionInfo = class _VersionInfo {
2466
2530
  };
2467
2531
 
2468
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 };
2469
- //# sourceMappingURL=chunk-NXEQLBXB.js.map
2470
- //# sourceMappingURL=chunk-NXEQLBXB.js.map
2533
+ //# sourceMappingURL=chunk-ZLV6WP54.js.map
2534
+ //# sourceMappingURL=chunk-ZLV6WP54.js.map