@aztec/stdlib 4.0.0-nightly.20260217 → 4.0.0-rc.1

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.
Files changed (117) hide show
  1. package/dest/auth_witness/auth_witness.js +3 -3
  2. package/dest/block/block_data.d.ts +52 -0
  3. package/dest/block/block_data.d.ts.map +1 -0
  4. package/dest/block/block_data.js +12 -0
  5. package/dest/block/index.d.ts +2 -1
  6. package/dest/block/index.d.ts.map +1 -1
  7. package/dest/block/index.js +1 -0
  8. package/dest/block/l2_block_source.d.ts +20 -1
  9. package/dest/block/l2_block_source.d.ts.map +1 -1
  10. package/dest/checkpoint/checkpoint.d.ts +6 -1
  11. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  12. package/dest/checkpoint/checkpoint.js +5 -4
  13. package/dest/checkpoint/checkpoint_data.d.ts +120 -0
  14. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
  15. package/dest/checkpoint/checkpoint_data.js +26 -0
  16. package/dest/checkpoint/index.d.ts +2 -1
  17. package/dest/checkpoint/index.d.ts.map +1 -1
  18. package/dest/checkpoint/index.js +1 -0
  19. package/dest/checkpoint/published_checkpoint.d.ts +11 -2
  20. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  21. package/dest/checkpoint/published_checkpoint.js +1 -2
  22. package/dest/contract/contract_address.js +4 -4
  23. package/dest/contract/contract_class_id.js +3 -3
  24. package/dest/contract/private_function.js +2 -2
  25. package/dest/file-store/local.d.ts +3 -3
  26. package/dest/file-store/local.d.ts.map +1 -1
  27. package/dest/file-store/local.js +13 -4
  28. package/dest/file-store/s3.d.ts +1 -1
  29. package/dest/file-store/s3.d.ts.map +1 -1
  30. package/dest/file-store/s3.js +11 -3
  31. package/dest/hash/hash.js +11 -11
  32. package/dest/hash/map_slot.js +2 -2
  33. package/dest/interfaces/archiver.d.ts +1 -1
  34. package/dest/interfaces/archiver.d.ts.map +1 -1
  35. package/dest/interfaces/archiver.js +5 -0
  36. package/dest/interfaces/aztec-node-admin.d.ts +27 -2
  37. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  38. package/dest/interfaces/aztec-node-admin.js +9 -3
  39. package/dest/interfaces/configs.d.ts +12 -2
  40. package/dest/interfaces/configs.d.ts.map +1 -1
  41. package/dest/interfaces/configs.js +3 -1
  42. package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
  43. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  44. package/dest/kernel/hints/index.d.ts +2 -2
  45. package/dest/kernel/hints/index.js +2 -2
  46. package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
  47. package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
  48. package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
  49. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
  50. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
  51. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
  52. package/dest/kernel/private_circuit_public_inputs.d.ts +6 -6
  53. package/dest/kernel/private_circuit_public_inputs.js +11 -11
  54. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +2 -2
  55. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +2 -2
  56. package/dest/kernel/private_validation_requests.d.ts +3 -3
  57. package/dest/kernel/private_validation_requests.js +9 -9
  58. package/dest/keys/derivation.js +8 -8
  59. package/dest/keys/key_types.d.ts +3 -3
  60. package/dest/keys/key_types.d.ts.map +1 -1
  61. package/dest/keys/public_keys.js +2 -2
  62. package/dest/keys/utils.js +5 -5
  63. package/dest/logs/private_log.d.ts +2 -2
  64. package/dest/logs/private_log.d.ts.map +1 -1
  65. package/dest/p2p/block_proposal.d.ts +1 -1
  66. package/dest/p2p/block_proposal.d.ts.map +1 -1
  67. package/dest/p2p/block_proposal.js +1 -3
  68. package/dest/rollup/checkpoint_header.d.ts +2 -2
  69. package/dest/rollup/checkpoint_header.js +2 -2
  70. package/dest/tests/factories.js +10 -10
  71. package/dest/tx/block_header.js +2 -2
  72. package/dest/tx/global_variables.d.ts +4 -4
  73. package/dest/tx/global_variables.d.ts.map +1 -1
  74. package/dest/tx/protocol_contracts.d.ts +1 -1
  75. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  76. package/dest/tx/protocol_contracts.js +2 -2
  77. package/dest/tx/tx_request.js +2 -2
  78. package/package.json +9 -9
  79. package/src/auth_witness/auth_witness.ts +3 -3
  80. package/src/block/block_data.ts +26 -0
  81. package/src/block/index.ts +1 -0
  82. package/src/block/l2_block_source.ts +22 -0
  83. package/src/checkpoint/checkpoint.ts +5 -3
  84. package/src/checkpoint/checkpoint_data.ts +51 -0
  85. package/src/checkpoint/index.ts +1 -0
  86. package/src/checkpoint/published_checkpoint.ts +3 -1
  87. package/src/contract/contract_address.ts +4 -4
  88. package/src/contract/contract_class_id.ts +3 -3
  89. package/src/contract/private_function.ts +2 -2
  90. package/src/file-store/local.ts +15 -5
  91. package/src/file-store/s3.ts +12 -3
  92. package/src/hash/hash.ts +11 -11
  93. package/src/hash/map_slot.ts +2 -2
  94. package/src/interfaces/archiver.ts +5 -0
  95. package/src/interfaces/aztec-node-admin.ts +23 -0
  96. package/src/interfaces/configs.ts +8 -1
  97. package/src/interfaces/merkle_tree_operations.ts +1 -1
  98. package/src/kernel/hints/index.ts +2 -2
  99. package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
  100. package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
  101. package/src/kernel/private_circuit_public_inputs.ts +10 -10
  102. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +2 -2
  103. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +2 -2
  104. package/src/kernel/private_validation_requests.ts +8 -8
  105. package/src/keys/derivation.ts +8 -8
  106. package/src/keys/key_types.ts +6 -2
  107. package/src/keys/public_keys.ts +2 -2
  108. package/src/keys/utils.ts +5 -5
  109. package/src/p2p/block_proposal.ts +0 -2
  110. package/src/rollup/checkpoint_header.ts +2 -2
  111. package/src/tests/factories.ts +11 -11
  112. package/src/tx/block_header.ts +2 -2
  113. package/src/tx/global_variables.ts +3 -3
  114. package/src/tx/protocol_contracts.ts +2 -2
  115. package/src/tx/tx_request.ts +2 -2
  116. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
  117. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
@@ -13,8 +13,8 @@ import { schemas } from '../schemas/index.js';
13
13
  _computedKey = inspect.custom;
14
14
  /**
15
15
  * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
16
- * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
17
- * TODO(palla/mbps): What about CheckpointNumber?
16
+ * This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
17
+ * and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
18
18
  */ export class CheckpointHeader {
19
19
  lastArchiveRoot;
20
20
  blockHeadersHash;
@@ -1,5 +1,5 @@
1
1
  import { makeBlobAccumulator, makeFinalBlobAccumulator, makeFinalBlobBatchingChallenges, makeSpongeBlob } from '@aztec/blob-lib/testing';
2
- import { ARCHIVE_HEIGHT, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, CHONK_PROOF_LENGTH, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, GeneratorIndex, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, MAX_CHECKPOINTS_PER_EPOCH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_CALL, MAX_ENQUEUED_CALLS_PER_TX, MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, MAX_PRIVATE_LOGS_PER_TX, MAX_PROTOCOL_CONTRACTS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT, RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, VK_TREE_HEIGHT } from '@aztec/constants';
2
+ import { ARCHIVE_HEIGHT, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, CHONK_PROOF_LENGTH, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DomainSeparator, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, MAX_CHECKPOINTS_PER_EPOCH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_CALL, MAX_ENQUEUED_CALLS_PER_TX, MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, MAX_PRIVATE_LOGS_PER_TX, MAX_PROTOCOL_CONTRACTS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT, RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, VK_TREE_HEIGHT } from '@aztec/constants';
3
3
  import { makeTuple } from '@aztec/foundation/array';
4
4
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
5
5
  import { compact } from '@aztec/foundation/collection';
@@ -22,7 +22,7 @@ import { ContractDeploymentData, SerializableContractInstance, computeContractCl
22
22
  import { Gas, GasFees, GasSettings } from '../gas/index.js';
23
23
  import { computeCalldataHash } from '../hash/hash.js';
24
24
  import { KeyValidationRequest } from '../kernel/hints/key_validation_request.js';
25
- import { KeyValidationRequestAndGenerator } from '../kernel/hints/key_validation_request_and_generator.js';
25
+ import { KeyValidationRequestAndSeparator } from '../kernel/hints/key_validation_request_and_separator.js';
26
26
  import { ReadRequest, ScopedReadRequest } from '../kernel/hints/read_request.js';
27
27
  import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToAvmAccumulatedData, PrivateToAvmAccumulatedDataArrayLengths, PrivateToPublicAccumulatedData, PrivateToPublicKernelCircuitPublicInputs, PrivateToRollupAccumulatedData } from '../kernel/index.js';
28
28
  import { CountedLogHash, LogHash, ScopedLogHash } from '../kernel/log_hash.js';
@@ -142,11 +142,11 @@ function makeScopedReadRequest(n) {
142
142
  return new KeyValidationRequest(makePoint(seed), fr(seed + 2));
143
143
  }
144
144
  /**
145
- * Creates arbitrary KeyValidationRequestAndGenerator from the given seed.
146
- * @param seed - The seed to use for generating the KeyValidationRequestAndGenerator.
147
- * @returns A KeyValidationRequestAndGenerator.
148
- */ function makeKeyValidationRequestAndGenerators(seed) {
149
- return new KeyValidationRequestAndGenerator(makeKeyValidationRequests(seed), fr(seed + 4));
145
+ * Creates arbitrary KeyValidationRequestAndSeparator from the given seed.
146
+ * @param seed - The seed to use for generating the KeyValidationRequestAndSeparator.
147
+ * @returns A KeyValidationRequestAndSeparator.
148
+ */ function makeKeyValidationRequestAndSeparators(seed) {
149
+ return new KeyValidationRequestAndSeparator(makeKeyValidationRequests(seed), fr(seed + 4));
150
150
  }
151
151
  export function makePublicDataWrite(seed = 1) {
152
152
  return new PublicDataWrite(fr(seed), fr(seed + 1));
@@ -340,7 +340,7 @@ function makeClaimedLengthArray(arraySize, makeItem, seed, length = arraySize) {
340
340
  minRevertibleSideEffectCounter: fr(0),
341
341
  noteHashReadRequests: makeClaimedLengthArray(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, makeScopedReadRequest, seed + 0x300),
342
342
  nullifierReadRequests: makeClaimedLengthArray(MAX_NULLIFIER_READ_REQUESTS_PER_CALL, makeScopedReadRequest, seed + 0x310),
343
- keyValidationRequestsAndGenerators: makeClaimedLengthArray(MAX_KEY_VALIDATION_REQUESTS_PER_CALL, makeKeyValidationRequestAndGenerators, seed + 0x320),
343
+ keyValidationRequestsAndSeparators: makeClaimedLengthArray(MAX_KEY_VALIDATION_REQUESTS_PER_CALL, makeKeyValidationRequestAndSeparators, seed + 0x320),
344
344
  noteHashes: makeClaimedLengthArray(MAX_NOTE_HASHES_PER_CALL, makeNoteHash, seed + 0x400),
345
345
  nullifiers: makeClaimedLengthArray(MAX_NULLIFIERS_PER_CALL, makeNullifier, seed + 0x500),
346
346
  privateCallRequests: makeClaimedLengthArray(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, makePrivateCallRequest, seed + 0x600),
@@ -725,11 +725,11 @@ export async function makeContractInstanceFromClassId(classId, seed = 0, overrid
725
725
  salt,
726
726
  initializationHash,
727
727
  deployer
728
- ], GeneratorIndex.PARTIAL_ADDRESS);
728
+ ], DomainSeparator.PARTIAL_ADDRESS);
729
729
  const partialAddress = await poseidon2HashWithSeparator([
730
730
  classId,
731
731
  saltedInitializationHash
732
- ], GeneratorIndex.PARTIAL_ADDRESS);
732
+ ], DomainSeparator.PARTIAL_ADDRESS);
733
733
  const address = await computeAddress(publicKeys, partialAddress);
734
734
  return new SerializableContractInstance({
735
735
  version: 1,
@@ -1,5 +1,5 @@
1
1
  var _computedKey;
2
- import { BLOCK_HEADER_LENGTH, GeneratorIndex } from '@aztec/constants';
2
+ import { BLOCK_HEADER_LENGTH, DomainSeparator } from '@aztec/constants';
3
3
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
4
  import { randomInt } from '@aztec/foundation/crypto/random';
5
5
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -110,7 +110,7 @@ _computedKey = inspect.custom;
110
110
  }
111
111
  hash() {
112
112
  if (!this._cachedHash) {
113
- this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then((fr)=>new BlockHash(fr));
113
+ this._cachedHash = poseidon2HashWithSeparator(this.toFields(), DomainSeparator.BLOCK_HEADER_HASH).then((fr)=>new BlockHash(fr));
114
114
  }
115
115
  return this._cachedHash;
116
116
  }
@@ -9,10 +9,10 @@ import { AztecAddress } from '../aztec-address/index.js';
9
9
  import { GasFees } from '../gas/gas_fees.js';
10
10
  import type { UInt64 } from '../types/index.js';
11
11
  /**
12
- * Global variables that are constant across the entire slot.
13
- * TODO(palla/mbps): Should timestamp be included here as well?
12
+ * Global variables that are constant across the entire checkpoint (slot).
13
+ * Excludes blockNumber since that varies per block within a checkpoint.
14
14
  */
15
- export type CheckpointGlobalVariables = Omit<FieldsOf<GlobalVariables>, 'blockNumber' | 'timestamp'>;
15
+ export type CheckpointGlobalVariables = Omit<FieldsOf<GlobalVariables>, 'blockNumber'>;
16
16
  /**
17
17
  * Global variables of the L2 block.
18
18
  */
@@ -168,4 +168,4 @@ export declare class GlobalVariables {
168
168
  [inspect.custom](): string;
169
169
  equals(other: this): boolean;
170
170
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4L2dsb2JhbF92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBcUIsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLFdBQVcsRUFJWixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhEOzs7R0FHRztBQUNILE1BQU0sTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUVyRzs7R0FFRztBQUNILHFCQUFhLGVBQWU7SUFFeEIsZ0NBQWdDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFO0lBQ2xCLGdDQUFnQztJQUN6QixPQUFPLEVBQUUsRUFBRTtJQUNsQixvQ0FBb0M7SUFDN0IsV0FBVyxFQUFFLFdBQVc7SUFDL0Isa0NBQWtDO0lBQzNCLFVBQVUsRUFBRSxVQUFVO0lBQzdCLGlDQUFpQztJQUMxQixTQUFTLEVBQUUsTUFBTTtJQUN4QixpQ0FBaUM7SUFDMUIsUUFBUSxFQUFFLFVBQVU7SUFDM0IsK0JBQStCO0lBQ3hCLFlBQVksRUFBRSxZQUFZO0lBQ2pDLHdDQUF3QztJQUNqQyxPQUFPLEVBQUUsT0FBTztJQWhCekI7SUFDRSxnQ0FBZ0M7SUFDekIsT0FBTyxFQUFFLEVBQUU7SUFDbEIsZ0NBQWdDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFO0lBQ2xCLG9DQUFvQztJQUM3QixXQUFXLEVBQUUsV0FBVztJQUMvQixrQ0FBa0M7SUFDM0IsVUFBVSxFQUFFLFVBQVU7SUFDN0IsaUNBQWlDO0lBQzFCLFNBQVMsRUFBRSxNQUFNO0lBQ3hCLGlDQUFpQztJQUMxQixRQUFRLEVBQUUsVUFBVTtJQUMzQiwrQkFBK0I7SUFDeEIsWUFBWSxFQUFFLFlBQVk7SUFDakMsd0NBQXdDO0lBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQ3JCO0lBRUosTUFBTSxLQUFLLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FhaEI7SUFFRCxPQUFPLElBQUksTUFBTSxDQUVoQjtJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxlQUFlLENBRTlEO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLGVBQWUsQ0FXaEQ7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRSxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFNLEdBQUcsZUFBZSxDQVk3RTtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZUFBZSxDQVloRTtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FBRyxlQUFlLENBYTdEO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyx5RkFXakQ7SUFFRCxRQUFRLDRCQVdQO0lBRUQsUUFBUSxTQVFQO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYzs7Ozs7O01BUWI7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTs7Ozs7Ozs7O01BV0w7SUFFRCxLQUFLLElBQUksZUFBZSxDQUV2QjtJQUVELE9BQU8sSUFBSSxPQUFPLENBV2pCO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBTSxHQUFHLGVBQWUsQ0FZakY7SUFFRCxTQUFTOzs7Ozs7Ozs7O01BWVI7SUFFRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FFZjtJQUVNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLE9BQU8sQ0FXbEM7Q0FDRiJ9
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4L2dsb2JhbF92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBcUIsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLFdBQVcsRUFJWixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhEOzs7R0FHRztBQUNILE1BQU0sTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXZGOztHQUVHO0FBQ0gscUJBQWEsZUFBZTtJQUV4QixnQ0FBZ0M7SUFDekIsT0FBTyxFQUFFLEVBQUU7SUFDbEIsZ0NBQWdDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFO0lBQ2xCLG9DQUFvQztJQUM3QixXQUFXLEVBQUUsV0FBVztJQUMvQixrQ0FBa0M7SUFDM0IsVUFBVSxFQUFFLFVBQVU7SUFDN0IsaUNBQWlDO0lBQzFCLFNBQVMsRUFBRSxNQUFNO0lBQ3hCLGlDQUFpQztJQUMxQixRQUFRLEVBQUUsVUFBVTtJQUMzQiwrQkFBK0I7SUFDeEIsWUFBWSxFQUFFLFlBQVk7SUFDakMsd0NBQXdDO0lBQ2pDLE9BQU8sRUFBRSxPQUFPO0lBaEJ6QjtJQUNFLGdDQUFnQztJQUN6QixPQUFPLEVBQUUsRUFBRTtJQUNsQixnQ0FBZ0M7SUFDekIsT0FBTyxFQUFFLEVBQUU7SUFDbEIsb0NBQW9DO0lBQzdCLFdBQVcsRUFBRSxXQUFXO0lBQy9CLGtDQUFrQztJQUMzQixVQUFVLEVBQUUsVUFBVTtJQUM3QixpQ0FBaUM7SUFDMUIsU0FBUyxFQUFFLE1BQU07SUFDeEIsaUNBQWlDO0lBQzFCLFFBQVEsRUFBRSxVQUFVO0lBQzNCLCtCQUErQjtJQUN4QixZQUFZLEVBQUUsWUFBWTtJQUNqQyx3Q0FBd0M7SUFDakMsT0FBTyxFQUFFLE9BQU8sRUFDckI7SUFFSixNQUFNLEtBQUssTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWFoQjtJQUVELE9BQU8sSUFBSSxNQUFNLENBRWhCO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLGVBQWUsQ0FFOUQ7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsZUFBZSxDQVdoRDtJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQU0sR0FBRyxlQUFlLENBWTdFO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxlQUFlLENBWWhFO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLGVBQWUsQ0FhN0Q7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLHlGQVdqRDtJQUVELFFBQVEsNEJBV1A7SUFFRCxRQUFRLFNBUVA7SUFFRDs7O09BR0c7SUFDSCxjQUFjOzs7Ozs7TUFRYjtJQUVEOzs7O09BSUc7SUFDSCxNQUFNOzs7Ozs7Ozs7TUFXTDtJQUVELEtBQUssSUFBSSxlQUFlLENBRXZCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FXakI7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRSxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFNLEdBQUcsZUFBZSxDQVlqRjtJQUVELFNBQVM7Ozs7Ozs7Ozs7TUFZUjtJQUVELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUVmO0lBRU0sTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsT0FBTyxDQVdsQztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"global_variables.d.ts","sourceRoot":"","sources":["../../src/tx/global_variables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAqB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EACL,YAAY,EACZ,WAAW,EAIZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC;AAErG;;GAEG;AACH,qBAAa,eAAe;IAExB,gCAAgC;IACzB,OAAO,EAAE,EAAE;IAClB,gCAAgC;IACzB,OAAO,EAAE,EAAE;IAClB,oCAAoC;IAC7B,WAAW,EAAE,WAAW;IAC/B,kCAAkC;IAC3B,UAAU,EAAE,UAAU;IAC7B,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO;IAhBzB;IACE,gCAAgC;IACzB,OAAO,EAAE,EAAE;IAClB,gCAAgC;IACzB,OAAO,EAAE,EAAE;IAClB,oCAAoC;IAC7B,WAAW,EAAE,WAAW;IAC/B,kCAAkC;IAC3B,UAAU,EAAE,UAAU;IAC7B,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO,EACrB;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAahB;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAE9D;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,eAAe,CAWhD;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,GAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAM,GAAG,eAAe,CAY7E;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAYhE;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,eAAe,CAa7D;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,yFAWjD;IAED,QAAQ,4BAWP;IAED,QAAQ,SAQP;IAED;;;OAGG;IACH,cAAc;;;;;;MAQb;IAED;;;;OAIG;IACH,MAAM;;;;;;;;;MAWL;IAED,KAAK,IAAI,eAAe,CAEvB;IAED,OAAO,IAAI,OAAO,CAWjB;IAED,MAAM,CAAC,MAAM,CAAC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAM,GAAG,eAAe,CAYjF;IAED,SAAS;;;;;;;;;;MAYR;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,WAEf;IAEM,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAWlC;CACF"}
1
+ {"version":3,"file":"global_variables.d.ts","sourceRoot":"","sources":["../../src/tx/global_variables.ts"],"names":[],"mappings":"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"}
@@ -34,4 +34,4 @@ export declare class ProtocolContracts {
34
34
  derivedAddresses: any[];
35
35
  }>;
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHJvdG9jb2xfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0Isc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUkxRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxLQUFLLEVBSVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxxQkFBYSxpQkFBaUI7SUFDVCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sc0JBQXNCLENBQUM7SUFBdkYsWUFBbUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLHNCQUFzQixDQUFDLEVBQUk7SUFFM0YsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHFCQUU5QztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyx5S0FFbkQ7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEdBQUcsaUJBQWlCLENBRy9EO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FHbEU7SUFFRCxRQUFRLDRCQUVQO0lBRUQsTUFBTSxDQUFDLEtBQUssc0JBRVg7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsaUJBQWlCLENBT2xEO0lBRUQsT0FBTyxXQUVOO0lBRUQsSUFBSSxnQkFFSDtJQUVELE1BQU0sS0FBSyxNQUFNOzs7Ozs7OztPQVFoQjtDQUNGIn0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHJvdG9jb2xfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUkzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxLQUFLLEVBSVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxxQkFBYSxpQkFBaUI7SUFDVCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sc0JBQXNCLENBQUM7SUFBdkYsWUFBbUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLHNCQUFzQixDQUFDLEVBQUk7SUFFM0YsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHFCQUU5QztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyx5S0FFbkQ7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEdBQUcsaUJBQWlCLENBRy9EO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FHbEU7SUFFRCxRQUFRLDRCQUVQO0lBRUQsTUFBTSxDQUFDLEtBQUssc0JBRVg7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsaUJBQWlCLENBT2xEO0lBRUQsT0FBTyxXQUVOO0lBRUQsSUFBSSxnQkFFSDtJQUVELE1BQU0sS0FBSyxNQUFNOzs7Ozs7OztPQVFoQjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"protocol_contracts.d.ts","sourceRoot":"","sources":["../../src/tx/protocol_contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI1E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,KAAK,EAIX,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,iBAAiB;IACT,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC;IAAvF,YAAmB,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC,EAAI;IAE3F,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,qBAE9C;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,yKAEnD;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,iBAAiB,CAG/D;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAGlE;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,KAAK,sBAEX;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,iBAAiB,CAOlD;IAED,OAAO,WAEN;IAED,IAAI,gBAEH;IAED,MAAM,KAAK,MAAM;;;;;;;;OAQhB;CACF"}
1
+ {"version":3,"file":"protocol_contracts.d.ts","sourceRoot":"","sources":["../../src/tx/protocol_contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI3E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,KAAK,EAIX,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,iBAAiB;IACT,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC;IAAvF,YAAmB,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC,EAAI;IAE3F,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,qBAE9C;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,yKAEnD;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,iBAAiB,CAG/D;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAGlE;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,KAAK,sBAEX;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,iBAAiB,CAOlD;IAED,OAAO,WAEN;IAED,IAAI,gBAEH;IAED,MAAM,KAAK,MAAM;;;;;;;;OAQhB;CACF"}
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
1
+ import { DomainSeparator, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
2
2
  import { makeTuple } from '@aztec/foundation/array';
3
3
  import { arraySerializedSizeOfNonEmpty } from '@aztec/foundation/collection';
4
4
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
@@ -48,7 +48,7 @@ export class ProtocolContracts {
48
48
  return arraySerializedSizeOfNonEmpty(this.derivedAddresses);
49
49
  }
50
50
  hash() {
51
- return poseidon2HashWithSeparator(this.derivedAddresses, GeneratorIndex.PROTOCOL_CONTRACTS);
51
+ return poseidon2HashWithSeparator(this.derivedAddresses, DomainSeparator.PROTOCOL_CONTRACTS);
52
52
  }
53
53
  static get schema() {
54
54
  return z.object({
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, TX_REQUEST_LENGTH } from '@aztec/constants';
1
+ import { DomainSeparator, TX_REQUEST_LENGTH } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { BufferReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
@@ -58,7 +58,7 @@ import { TxContext } from './tx_context.js';
58
58
  return new TxRequest(reader.readObject(AztecAddress), Fr.fromBuffer(reader), reader.readObject(TxContext), reader.readObject(FunctionData), Fr.fromBuffer(reader));
59
59
  }
60
60
  hash() {
61
- return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.TX_REQUEST);
61
+ return poseidon2HashWithSeparator(this.toFields(), DomainSeparator.TX_REQUEST);
62
62
  }
63
63
  static empty() {
64
64
  return new TxRequest(AztecAddress.ZERO, Fr.zero(), TxContext.empty(), FunctionData.empty(), Fr.zero());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "4.0.0-nightly.20260217",
3
+ "version": "4.0.0-rc.1",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -90,14 +90,14 @@
90
90
  },
91
91
  "dependencies": {
92
92
  "@aws-sdk/client-s3": "^3.892.0",
93
- "@aztec/bb.js": "4.0.0-nightly.20260217",
94
- "@aztec/blob-lib": "4.0.0-nightly.20260217",
95
- "@aztec/constants": "4.0.0-nightly.20260217",
96
- "@aztec/ethereum": "4.0.0-nightly.20260217",
97
- "@aztec/foundation": "4.0.0-nightly.20260217",
98
- "@aztec/l1-artifacts": "4.0.0-nightly.20260217",
99
- "@aztec/noir-noirc_abi": "4.0.0-nightly.20260217",
100
- "@aztec/validator-ha-signer": "4.0.0-nightly.20260217",
93
+ "@aztec/bb.js": "4.0.0-rc.1",
94
+ "@aztec/blob-lib": "4.0.0-rc.1",
95
+ "@aztec/constants": "4.0.0-rc.1",
96
+ "@aztec/ethereum": "4.0.0-rc.1",
97
+ "@aztec/foundation": "4.0.0-rc.1",
98
+ "@aztec/l1-artifacts": "4.0.0-rc.1",
99
+ "@aztec/noir-noirc_abi": "4.0.0-rc.1",
100
+ "@aztec/validator-ha-signer": "4.0.0-rc.1",
101
101
  "@google-cloud/storage": "^7.15.0",
102
102
  "axios": "^1.12.0",
103
103
  "json-stringify-deterministic": "1.0.12",
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
@@ -61,7 +61,7 @@ export class AuthWitness {
61
61
  * @returns The inner hash for the witness
62
62
  */
63
63
  export const computeInnerAuthWitHash = (args: Fr[]) => {
64
- return poseidon2HashWithSeparator(args, GeneratorIndex.AUTHWIT_INNER);
64
+ return poseidon2HashWithSeparator(args, DomainSeparator.AUTHWIT_INNER);
65
65
  };
66
66
 
67
67
  /**
@@ -77,5 +77,5 @@ export const computeInnerAuthWitHash = (args: Fr[]) => {
77
77
  * @returns The outer hash for the witness
78
78
  */
79
79
  export const computeOuterAuthWitHash = (consumer: AztecAddress, chainId: Fr, version: Fr, innerHash: Fr) => {
80
- return poseidon2HashWithSeparator([consumer.toField(), chainId, version, innerHash], GeneratorIndex.AUTHWIT_OUTER);
80
+ return poseidon2HashWithSeparator([consumer.toField(), chainId, version, innerHash], DomainSeparator.AUTHWIT_OUTER);
81
81
  };
@@ -0,0 +1,26 @@
1
+ import { CheckpointNumberSchema, IndexWithinCheckpointSchema } from '@aztec/foundation/branded-types';
2
+ import type { CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
3
+ import type { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { schemas } from '@aztec/foundation/schemas';
5
+
6
+ import { z } from 'zod';
7
+
8
+ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
9
+ import { BlockHeader } from '../tx/block_header.js';
10
+
11
+ /** L2Block metadata. Equivalent to L2Block but without block body containing tx data. */
12
+ export type BlockData = {
13
+ header: BlockHeader;
14
+ archive: AppendOnlyTreeSnapshot;
15
+ blockHash: Fr;
16
+ checkpointNumber: CheckpointNumber;
17
+ indexWithinCheckpoint: IndexWithinCheckpoint;
18
+ };
19
+
20
+ export const BlockDataSchema = z.object({
21
+ header: BlockHeader.schema,
22
+ archive: AppendOnlyTreeSnapshot.schema,
23
+ blockHash: schemas.Fr,
24
+ checkpointNumber: CheckpointNumberSchema,
25
+ indexWithinCheckpoint: IndexWithinCheckpointSchema,
26
+ });
@@ -1,3 +1,4 @@
1
+ export * from './block_data.js';
1
2
  export * from './l2_block.js';
2
3
  export * from './l2_block_stream/index.js';
3
4
  export * from './in_block.js';
@@ -13,6 +13,7 @@ import type { TypedEventEmitter } from '@aztec/foundation/types';
13
13
  import { z } from 'zod';
14
14
 
15
15
  import type { Checkpoint } from '../checkpoint/checkpoint.js';
16
+ import type { CheckpointData } from '../checkpoint/checkpoint_data.js';
16
17
  import type { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
17
18
  import type { L1RollupConstants } from '../epoch-helpers/index.js';
18
19
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
@@ -20,6 +21,7 @@ import type { BlockHeader } from '../tx/block_header.js';
20
21
  import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
21
22
  import type { TxHash } from '../tx/tx_hash.js';
22
23
  import type { TxReceipt } from '../tx/tx_receipt.js';
24
+ import type { BlockData } from './block_data.js';
23
25
  import type { BlockHash } from './block_hash.js';
24
26
  import type { CheckpointedL2Block } from './checkpointed_l2_block.js';
25
27
  import type { L2Block } from './l2_block.js';
@@ -98,6 +100,12 @@ export interface L2BlockSource {
98
100
  */
99
101
  getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
100
102
 
103
+ /**
104
+ * Gets lightweight checkpoint metadata for a given epoch, without fetching full block data.
105
+ * @param epochNumber - Epoch for which we want checkpoint data
106
+ */
107
+ getCheckpointsDataForEpoch(epochNumber: EpochNumber): Promise<CheckpointData[]>;
108
+
101
109
  /**
102
110
  * Gets a block header by its hash.
103
111
  * @param blockHash - The block hash to retrieve.
@@ -112,6 +120,20 @@ export interface L2BlockSource {
112
120
  */
113
121
  getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
114
122
 
123
+ /**
124
+ * Gets block metadata (without tx data) by block number.
125
+ * @param number - The block number to retrieve.
126
+ * @returns The requested block data (or undefined if not found).
127
+ */
128
+ getBlockData(number: BlockNumber): Promise<BlockData | undefined>;
129
+
130
+ /**
131
+ * Gets block metadata (without tx data) by archive root.
132
+ * @param archive - The archive root to retrieve.
133
+ * @returns The requested block data (or undefined if not found).
134
+ */
135
+ getBlockDataByArchive(archive: Fr): Promise<BlockData | undefined>;
136
+
115
137
  /**
116
138
  * Gets an L2 block by block number.
117
139
  * @param number - The block number to return.
@@ -94,9 +94,11 @@ export class Checkpoint {
94
94
  return this.header.hash();
95
95
  }
96
96
 
97
- // Returns the out hash computed from all l2-to-l1 messages in this checkpoint.
98
- // Note: This value is different from the out hash in the header, which is the **accumulated** out hash over all
99
- // checkpoints up to and including this one in the epoch.
97
+ /**
98
+ * Returns the out hash computed from all l2-to-l1 messages in this checkpoint.
99
+ * Note: This value is different from the out hash in the header, which is the **accumulated** out hash over all
100
+ * checkpoints up to and including this one in the epoch.
101
+ */
100
102
  public getCheckpointOutHash(): Fr {
101
103
  const msgs = this.blocks.map(block => block.body.txEffects.map(txEffect => txEffect.l2ToL1Msgs));
102
104
  return computeCheckpointOutHash(msgs);
@@ -0,0 +1,51 @@
1
+ import {
2
+ BlockNumber,
3
+ BlockNumberSchema,
4
+ CheckpointNumber,
5
+ CheckpointNumberSchema,
6
+ } from '@aztec/foundation/branded-types';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
+ import { schemas } from '@aztec/foundation/schemas';
9
+
10
+ import { z } from 'zod';
11
+
12
+ import { CommitteeAttestation } from '../block/proposal/committee_attestation.js';
13
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
14
+ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
15
+ import { L1PublishedData } from './published_checkpoint.js';
16
+
17
+ /** Lightweight checkpoint metadata without full block data. */
18
+ export type CheckpointData = {
19
+ checkpointNumber: CheckpointNumber;
20
+ header: CheckpointHeader;
21
+ archive: AppendOnlyTreeSnapshot;
22
+ checkpointOutHash: Fr;
23
+ startBlock: BlockNumber;
24
+ blockCount: number;
25
+ attestations: CommitteeAttestation[];
26
+ l1: L1PublishedData;
27
+ };
28
+
29
+ export const CheckpointDataSchema = z
30
+ .object({
31
+ checkpointNumber: CheckpointNumberSchema,
32
+ header: CheckpointHeader.schema,
33
+ archive: AppendOnlyTreeSnapshot.schema,
34
+ checkpointOutHash: schemas.Fr,
35
+ startBlock: BlockNumberSchema,
36
+ blockCount: schemas.Integer,
37
+ attestations: z.array(CommitteeAttestation.schema),
38
+ l1: L1PublishedData.schema,
39
+ })
40
+ .transform(
41
+ (obj): CheckpointData => ({
42
+ checkpointNumber: obj.checkpointNumber,
43
+ header: obj.header,
44
+ archive: obj.archive,
45
+ checkpointOutHash: obj.checkpointOutHash,
46
+ startBlock: obj.startBlock,
47
+ blockCount: obj.blockCount,
48
+ attestations: obj.attestations,
49
+ l1: obj.l1,
50
+ }),
51
+ );
@@ -1,3 +1,4 @@
1
1
  export * from './checkpoint.js';
2
+ export * from './checkpoint_data.js';
2
3
  export * from './checkpoint_info.js';
3
4
  export * from './published_checkpoint.js';
@@ -55,9 +55,11 @@ export class L1PublishedData {
55
55
 
56
56
  export class PublishedCheckpoint {
57
57
  constructor(
58
+ /** The checkpoint itself. */
58
59
  public checkpoint: Checkpoint,
60
+ /** Info on when this checkpoint was published on L1. */
59
61
  public l1: L1PublishedData,
60
- // The attestations for the last block in the checkpoint.
62
+ /** The attestations for the last block in the checkpoint. */
61
63
  public attestations: CommitteeAttestation[],
62
64
  ) {}
63
65
 
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
 
@@ -44,7 +44,7 @@ export async function computePartialAddress(
44
44
 
45
45
  return poseidon2HashWithSeparator(
46
46
  [instance.originalContractClassId, saltedInitializationHash],
47
- GeneratorIndex.PARTIAL_ADDRESS,
47
+ DomainSeparator.PARTIAL_ADDRESS,
48
48
  );
49
49
  }
50
50
 
@@ -57,7 +57,7 @@ export function computeSaltedInitializationHash(
57
57
  ): Promise<Fr> {
58
58
  return poseidon2HashWithSeparator(
59
59
  [instance.salt, instance.initializationHash, instance.deployer],
60
- GeneratorIndex.PARTIAL_ADDRESS,
60
+ DomainSeparator.PARTIAL_ADDRESS,
61
61
  );
62
62
  }
63
63
 
@@ -87,5 +87,5 @@ export async function computeInitializationHashFromEncodedArgs(
87
87
  encodedArgs: Fr[],
88
88
  ): Promise<Fr> {
89
89
  const argsHash = await computeVarArgsHash(encodedArgs);
90
- return poseidon2HashWithSeparator([initFn, argsHash], GeneratorIndex.INITIALIZER);
90
+ return poseidon2HashWithSeparator([initFn, argsHash], DomainSeparator.INITIALIZER);
91
91
  }
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS } from '@aztec/constants';
1
+ import { DomainSeparator, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
 
@@ -40,7 +40,7 @@ export async function computeContractClassIdWithPreimage(
40
40
  : await computePublicBytecodeCommitment(contractClass.packedBytecode);
41
41
  const id = await poseidon2HashWithSeparator(
42
42
  [artifactHash, privateFunctionsRoot, publicBytecodeCommitment],
43
- GeneratorIndex.CONTRACT_CLASS_ID,
43
+ DomainSeparator.CONTRACT_CLASS_ID,
44
44
  );
45
45
  return { id, artifactHash, privateFunctionsRoot, publicBytecodeCommitment };
46
46
  }
@@ -72,6 +72,6 @@ export async function computePublicBytecodeCommitment(packedBytecode: Buffer) {
72
72
 
73
73
  // NOTE: hash the bytecode here only up to the actual length of the bytecode.
74
74
  // We do not hash the entire max bytecode length!
75
- const sep = BigInt(GeneratorIndex.PUBLIC_BYTECODE) + (bytecodeLengthAsField.toBigInt() << 32n);
75
+ const sep = BigInt(DomainSeparator.PUBLIC_BYTECODE) + (bytecodeLengthAsField.toBigInt() << 32n);
76
76
  return await poseidon2HashWithSeparator(bytecodeAsFields.slice(0, bytecodeLength), new Fr(sep).toNumber());
77
77
  }
@@ -1,4 +1,4 @@
1
- import { FUNCTION_TREE_HEIGHT, GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator, FUNCTION_TREE_HEIGHT } from '@aztec/constants';
2
2
  import { poseidon2Hash, poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { type MerkleTree, MerkleTreeCalculator } from '@aztec/foundation/trees';
@@ -31,7 +31,7 @@ function computePrivateFunctionLeaves(fns: PrivateFunction[]): Promise<Buffer[]>
31
31
 
32
32
  /** Returns the leaf for a given private function. */
33
33
  export async function computePrivateFunctionLeaf(fn: PrivateFunction): Promise<Buffer> {
34
- return (await poseidon2HashWithSeparator([fn.selector, fn.vkHash], GeneratorIndex.PRIVATE_FUNCTION_LEAF)).toBuffer();
34
+ return (await poseidon2HashWithSeparator([fn.selector, fn.vkHash], DomainSeparator.PRIVATE_FUNCTION_LEAF)).toBuffer();
35
35
  }
36
36
 
37
37
  async function getPrivateFunctionTreeCalculator(): Promise<MerkleTreeCalculator> {
@@ -1,15 +1,21 @@
1
1
  import { access, mkdir, readFile, writeFile } from 'fs/promises';
2
2
  import { dirname, resolve } from 'path';
3
+ import { promisify } from 'util';
4
+ import { gunzip as gunzipCb, gzip as gzipCb } from 'zlib';
3
5
 
4
- import type { FileStore } from './interface.js';
6
+ import type { FileStore, FileStoreSaveOptions } from './interface.js';
7
+
8
+ const gzip = promisify(gzipCb);
9
+ const gunzip = promisify(gunzipCb);
5
10
 
6
11
  export class LocalFileStore implements FileStore {
7
12
  constructor(private readonly basePath: string) {}
8
13
 
9
- public async save(path: string, data: Buffer): Promise<string> {
14
+ public async save(path: string, data: Buffer, opts?: FileStoreSaveOptions): Promise<string> {
10
15
  const fullPath = this.getFullPath(path);
11
16
  await mkdir(dirname(fullPath), { recursive: true });
12
- await writeFile(fullPath, data);
17
+ const toWrite = opts?.compress ? await gzip(data) : data;
18
+ await writeFile(fullPath, toWrite);
13
19
  return `file://${fullPath}`;
14
20
  }
15
21
 
@@ -18,9 +24,13 @@ export class LocalFileStore implements FileStore {
18
24
  return this.save(destPath, data);
19
25
  }
20
26
 
21
- public read(pathOrUrlStr: string): Promise<Buffer> {
27
+ public async read(pathOrUrlStr: string): Promise<Buffer> {
22
28
  const fullPath = this.getFullPath(pathOrUrlStr);
23
- return readFile(fullPath);
29
+ const data = await readFile(fullPath);
30
+ if (data.length >= 2 && data[0] === 0x1f && data[1] === 0x8b) {
31
+ return await gunzip(data);
32
+ }
33
+ return data;
24
34
  }
25
35
 
26
36
  public async download(pathOrUrlStr: string, destPath: string): Promise<void> {
@@ -13,10 +13,14 @@ import { tmpdir } from 'os';
13
13
  import { basename, dirname, join } from 'path';
14
14
  import { Readable } from 'stream';
15
15
  import { pipeline } from 'stream/promises';
16
- import { createGzip } from 'zlib';
16
+ import { promisify } from 'util';
17
+ import { createGzip, gunzip as gunzipCb, gzip as gzipCb } from 'zlib';
17
18
 
18
19
  import type { FileStore, FileStoreSaveOptions } from './interface.js';
19
20
 
21
+ const gzip = promisify(gzipCb);
22
+ const gunzip = promisify(gunzipCb);
23
+
20
24
  function normalizeBasePath(path: string): string {
21
25
  return path?.replace(/^\/+|\/+$/g, '') ?? '';
22
26
  }
@@ -52,7 +56,7 @@ export class S3FileStore implements FileStore {
52
56
  const key = this.getFullPath(path);
53
57
  const shouldCompress = !!opts.compress;
54
58
 
55
- const body = shouldCompress ? (await import('zlib')).gzipSync(data) : data;
59
+ const body = shouldCompress ? await gzip(data) : data;
56
60
  const contentLength = body.length;
57
61
  const contentType = this.detectContentType(key, shouldCompress);
58
62
  const put = new PutObjectCommand({
@@ -60,6 +64,7 @@ export class S3FileStore implements FileStore {
60
64
  Key: key,
61
65
  Body: body,
62
66
  ContentType: contentType,
67
+ ContentEncoding: shouldCompress ? 'gzip' : undefined,
63
68
  CacheControl: opts.metadata?.['Cache-control'],
64
69
  Metadata: this.extractUserMetadata(opts.metadata),
65
70
  ContentLength: contentLength,
@@ -134,7 +139,11 @@ export class S3FileStore implements FileStore {
134
139
  for await (const chunk of stream) {
135
140
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
136
141
  }
137
- return Buffer.concat(chunks);
142
+ const buffer = Buffer.concat(chunks);
143
+ if (out.ContentEncoding === 'gzip') {
144
+ return await gunzip(buffer);
145
+ }
146
+ return buffer;
138
147
  }
139
148
 
140
149
  public async download(pathOrUrlStr: string, destPath: string): Promise<void> {