@aztec/protocol-contracts 0.0.0-test.1 → 0.0.1-commit.017a351

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 (144) hide show
  1. package/README.md +2 -2
  2. package/artifacts/ContractClassRegistry.json +3950 -0
  3. package/artifacts/ContractInstanceRegistry.json +5132 -0
  4. package/artifacts/FeeJuice.json +5171 -2507
  5. package/dest/class-registry/contract_class_published_event.d.ts +20 -0
  6. package/dest/class-registry/contract_class_published_event.d.ts.map +1 -0
  7. package/dest/class-registry/contract_class_published_event.js +52 -0
  8. package/dest/class-registry/index.d.ts +6 -0
  9. package/dest/class-registry/index.d.ts.map +1 -0
  10. package/dest/class-registry/index.js +15 -0
  11. package/dest/class-registry/lazy.d.ts +7 -0
  12. package/dest/class-registry/lazy.d.ts.map +1 -0
  13. package/dest/class-registry/lazy.js +24 -0
  14. package/dest/fee-juice/index.d.ts +2 -2
  15. package/dest/fee-juice/index.d.ts.map +1 -1
  16. package/dest/fee-juice/index.js +4 -4
  17. package/dest/fee-juice/lazy.d.ts +1 -1
  18. package/dest/fee-juice/lazy.js +5 -5
  19. package/dest/index.d.ts +1 -2
  20. package/dest/index.d.ts.map +1 -1
  21. package/dest/index.js +0 -1
  22. package/dest/instance-registry/contract_instance_published_event.d.ts +22 -0
  23. package/dest/instance-registry/contract_instance_published_event.d.ts.map +1 -0
  24. package/dest/{instance-deployer/contract_instance_deployed_event.js → instance-registry/contract_instance_published_event.js} +15 -8
  25. package/dest/instance-registry/contract_instance_updated_event.d.ts +17 -0
  26. package/dest/instance-registry/contract_instance_updated_event.d.ts.map +1 -0
  27. package/dest/instance-registry/contract_instance_updated_event.js +35 -0
  28. package/dest/instance-registry/index.d.ts +7 -0
  29. package/dest/instance-registry/index.d.ts.map +1 -0
  30. package/dest/instance-registry/index.js +15 -0
  31. package/dest/instance-registry/lazy.d.ts +8 -0
  32. package/dest/{instance-deployer → instance-registry}/lazy.d.ts.map +1 -1
  33. package/dest/instance-registry/lazy.js +25 -0
  34. package/dest/make_protocol_contract.d.ts +4 -4
  35. package/dest/make_protocol_contract.d.ts.map +1 -1
  36. package/dest/make_protocol_contract.js +30 -14
  37. package/dest/protocol_contract.d.ts +1 -1
  38. package/dest/protocol_contract_data.d.ts +23 -16
  39. package/dest/protocol_contract_data.d.ts.map +1 -1
  40. package/dest/protocol_contract_data.js +82 -32
  41. package/dest/provider/bundle.d.ts +1 -1
  42. package/dest/provider/bundle.d.ts.map +1 -1
  43. package/dest/provider/bundle.js +6 -12
  44. package/dest/provider/lazy.d.ts +1 -1
  45. package/dest/provider/lazy.d.ts.map +1 -1
  46. package/dest/provider/lazy.js +6 -15
  47. package/dest/provider/protocol_contracts_provider.d.ts +1 -1
  48. package/dest/scripts/cleanup_artifacts.js +2 -2
  49. package/dest/scripts/generate_data.js +96 -56
  50. package/dest/tests/fixtures.d.ts +3 -7
  51. package/dest/tests/fixtures.d.ts.map +1 -1
  52. package/dest/tests/fixtures.js +4 -14
  53. package/package.json +23 -20
  54. package/src/class-registry/__snapshots__/README.md +9 -0
  55. package/src/class-registry/contract_class_published_event.ts +72 -0
  56. package/src/class-registry/index.ts +21 -0
  57. package/src/class-registry/lazy.ts +31 -0
  58. package/src/fee-juice/index.ts +5 -5
  59. package/src/fee-juice/lazy.ts +5 -5
  60. package/src/index.ts +0 -1
  61. package/src/instance-registry/__snapshots__/README.md +9 -0
  62. package/src/{instance-deployer/contract_instance_deployed_event.ts → instance-registry/contract_instance_published_event.ts} +18 -8
  63. package/src/{instance-deployer → instance-registry}/contract_instance_updated_event.ts +15 -15
  64. package/src/instance-registry/index.ts +23 -0
  65. package/src/instance-registry/lazy.ts +32 -0
  66. package/src/make_protocol_contract.ts +39 -15
  67. package/src/protocol_contract_data.ts +70 -32
  68. package/src/provider/bundle.ts +5 -11
  69. package/src/provider/lazy.ts +6 -15
  70. package/src/tests/fixtures.ts +4 -16
  71. package/artifacts/AuthRegistry.json +0 -2725
  72. package/artifacts/ContractClassRegisterer.json +0 -7219
  73. package/artifacts/ContractInstanceDeployer.d.json.ts +0 -5
  74. package/artifacts/ContractInstanceDeployer.json +0 -2984
  75. package/artifacts/MultiCallEntrypoint.d.json.ts +0 -5
  76. package/artifacts/MultiCallEntrypoint.json +0 -2005
  77. package/artifacts/Router.d.json.ts +0 -5
  78. package/artifacts/Router.json +0 -3798
  79. package/dest/auth-registry/index.d.ts +0 -5
  80. package/dest/auth-registry/index.d.ts.map +0 -1
  81. package/dest/auth-registry/index.js +0 -13
  82. package/dest/auth-registry/lazy.d.ts +0 -6
  83. package/dest/auth-registry/lazy.d.ts.map +0 -1
  84. package/dest/auth-registry/lazy.js +0 -23
  85. package/dest/build_protocol_contract_tree.d.ts +0 -10
  86. package/dest/build_protocol_contract_tree.d.ts.map +0 -1
  87. package/dest/build_protocol_contract_tree.js +0 -20
  88. package/dest/class-registerer/contract_class_registered_event.d.ts +0 -18
  89. package/dest/class-registerer/contract_class_registered_event.d.ts.map +0 -1
  90. package/dest/class-registerer/contract_class_registered_event.js +0 -63
  91. package/dest/class-registerer/index.d.ts +0 -8
  92. package/dest/class-registerer/index.d.ts.map +0 -1
  93. package/dest/class-registerer/index.js +0 -17
  94. package/dest/class-registerer/lazy.d.ts +0 -9
  95. package/dest/class-registerer/lazy.d.ts.map +0 -1
  96. package/dest/class-registerer/lazy.js +0 -26
  97. package/dest/class-registerer/private_function_broadcasted_event.d.ts +0 -46
  98. package/dest/class-registerer/private_function_broadcasted_event.d.ts.map +0 -1
  99. package/dest/class-registerer/private_function_broadcasted_event.js +0 -85
  100. package/dest/class-registerer/unconstrained_function_broadcasted_event.d.ts +0 -40
  101. package/dest/class-registerer/unconstrained_function_broadcasted_event.d.ts.map +0 -1
  102. package/dest/class-registerer/unconstrained_function_broadcasted_event.js +0 -81
  103. package/dest/instance-deployer/contract_instance_deployed_event.d.ts +0 -20
  104. package/dest/instance-deployer/contract_instance_deployed_event.d.ts.map +0 -1
  105. package/dest/instance-deployer/contract_instance_updated_event.d.ts +0 -16
  106. package/dest/instance-deployer/contract_instance_updated_event.d.ts.map +0 -1
  107. package/dest/instance-deployer/contract_instance_updated_event.js +0 -36
  108. package/dest/instance-deployer/index.d.ts +0 -7
  109. package/dest/instance-deployer/index.d.ts.map +0 -1
  110. package/dest/instance-deployer/index.js +0 -15
  111. package/dest/instance-deployer/lazy.d.ts +0 -8
  112. package/dest/instance-deployer/lazy.js +0 -25
  113. package/dest/multi-call-entrypoint/index.d.ts +0 -5
  114. package/dest/multi-call-entrypoint/index.d.ts.map +0 -1
  115. package/dest/multi-call-entrypoint/index.js +0 -13
  116. package/dest/multi-call-entrypoint/lazy.d.ts +0 -6
  117. package/dest/multi-call-entrypoint/lazy.d.ts.map +0 -1
  118. package/dest/multi-call-entrypoint/lazy.js +0 -23
  119. package/dest/protocol_contract_tree.d.ts +0 -7
  120. package/dest/protocol_contract_tree.d.ts.map +0 -1
  121. package/dest/protocol_contract_tree.js +0 -34
  122. package/dest/router/index.d.ts +0 -5
  123. package/dest/router/index.d.ts.map +0 -1
  124. package/dest/router/index.js +0 -13
  125. package/dest/router/lazy.d.ts +0 -6
  126. package/dest/router/lazy.d.ts.map +0 -1
  127. package/dest/router/lazy.js +0 -23
  128. package/src/auth-registry/index.ts +0 -18
  129. package/src/auth-registry/lazy.ts +0 -29
  130. package/src/build_protocol_contract_tree.ts +0 -29
  131. package/src/class-registerer/contract_class_registered_event.ts +0 -83
  132. package/src/class-registerer/index.ts +0 -25
  133. package/src/class-registerer/lazy.ts +0 -33
  134. package/src/class-registerer/private_function_broadcasted_event.ts +0 -105
  135. package/src/class-registerer/unconstrained_function_broadcasted_event.ts +0 -99
  136. package/src/instance-deployer/index.ts +0 -23
  137. package/src/instance-deployer/lazy.ts +0 -32
  138. package/src/multi-call-entrypoint/index.ts +0 -18
  139. package/src/multi-call-entrypoint/lazy.ts +0 -29
  140. package/src/protocol_contract_tree.ts +0 -44
  141. package/src/router/index.ts +0 -18
  142. package/src/router/lazy.ts +0 -29
  143. /package/artifacts/{AuthRegistry.d.json.ts → ContractClassRegistry.d.json.ts} +0 -0
  144. /package/artifacts/{ContractClassRegisterer.d.json.ts → ContractInstanceRegistry.d.json.ts} +0 -0
@@ -0,0 +1,20 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type ContractClassPublic, type ContractClassPublicWithCommitment } from '@aztec/stdlib/contract';
3
+ import type { ContractClassLog } from '@aztec/stdlib/logs';
4
+ /** Event emitted from the ContractClassRegistry. */
5
+ export declare class ContractClassPublishedEvent {
6
+ readonly contractClassId: Fr;
7
+ readonly version: number;
8
+ readonly artifactHash: Fr;
9
+ readonly privateFunctionsRoot: Fr;
10
+ readonly packedPublicBytecode: Buffer;
11
+ constructor(contractClassId: Fr, version: number, artifactHash: Fr, privateFunctionsRoot: Fr, packedPublicBytecode: Buffer);
12
+ static isContractClassPublishedEvent(log: ContractClassLog): boolean;
13
+ static fromLog(log: ContractClassLog): ContractClassPublishedEvent;
14
+ /** Converts the event to a contract class, without computing or validating the bytecode commitment. */
15
+ toContractClassPublic(): ContractClassPublic;
16
+ /** Converts the event to a contract class with its bytecode commitment (expensive). */
17
+ toContractClassPublicWithBytecodeCommitment(): Promise<ContractClassPublicWithCommitment>;
18
+ static extractContractClassEvents(logs: ContractClassLog[]): ContractClassPublishedEvent[];
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfY2xhc3NfcHVibGlzaGVkX2V2ZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xhc3MtcmVnaXN0cnkvY29udHJhY3RfY2xhc3NfcHVibGlzaGVkX2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdwRCxPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIsS0FBSyxpQ0FBaUMsRUFFdkMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTNELG9EQUFvRDtBQUNwRCxxQkFBYSwyQkFBMkI7YUFFcEIsZUFBZSxFQUFFLEVBQUU7YUFDbkIsT0FBTyxFQUFFLE1BQU07YUFDZixZQUFZLEVBQUUsRUFBRTthQUNoQixvQkFBb0IsRUFBRSxFQUFFO2FBQ3hCLG9CQUFvQixFQUFFLE1BQU07SUFMOUMsWUFDa0IsZUFBZSxFQUFFLEVBQUUsRUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFDZixZQUFZLEVBQUUsRUFBRSxFQUNoQixvQkFBb0IsRUFBRSxFQUFFLEVBQ3hCLG9CQUFvQixFQUFFLE1BQU0sRUFDMUM7SUFFSixNQUFNLENBQUMsNkJBQTZCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixXQUt6RDtJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLGdCQUFnQiwrQkFpQm5DO0lBRUQsdUdBQXVHO0lBQ3ZHLHFCQUFxQixJQUFJLG1CQUFtQixDQVEzQztJQUVELHVGQUF1RjtJQUNqRiwyQ0FBMkMsSUFBSSxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FHOUY7SUFFRCxPQUFjLDBCQUEwQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLDJCQUEyQixFQUFFLENBSWhHO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_class_published_event.d.ts","sourceRoot":"","sources":["../../src/class-registry/contract_class_published_event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iCAAiC,EAEvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,oDAAoD;AACpD,qBAAa,2BAA2B;aAEpB,eAAe,EAAE,EAAE;aACnB,OAAO,EAAE,MAAM;aACf,YAAY,EAAE,EAAE;aAChB,oBAAoB,EAAE,EAAE;aACxB,oBAAoB,EAAE,MAAM;IAL9C,YACkB,eAAe,EAAE,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,EAAE,EAChB,oBAAoB,EAAE,EAAE,EACxB,oBAAoB,EAAE,MAAM,EAC1C;IAEJ,MAAM,CAAC,6BAA6B,CAAC,GAAG,EAAE,gBAAgB,WAKzD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,+BAiBnC;IAED,uGAAuG;IACvG,qBAAqB,IAAI,mBAAmB,CAQ3C;IAED,uFAAuF;IACjF,2CAA2C,IAAI,OAAO,CAAC,iCAAiC,CAAC,CAG9F;IAED,OAAc,0BAA0B,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,2BAA2B,EAAE,CAIhG;CACF"}
@@ -0,0 +1,52 @@
1
+ import { CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE } from '@aztec/constants';
2
+ import { FieldReader } from '@aztec/foundation/serialize';
3
+ import { bufferFromFields } from '@aztec/stdlib/abi';
4
+ import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
5
+ import { ProtocolContractAddress } from '../protocol_contract_data.js';
6
+ /** Event emitted from the ContractClassRegistry. */ export class ContractClassPublishedEvent {
7
+ contractClassId;
8
+ version;
9
+ artifactHash;
10
+ privateFunctionsRoot;
11
+ packedPublicBytecode;
12
+ constructor(contractClassId, version, artifactHash, privateFunctionsRoot, packedPublicBytecode){
13
+ this.contractClassId = contractClassId;
14
+ this.version = version;
15
+ this.artifactHash = artifactHash;
16
+ this.privateFunctionsRoot = privateFunctionsRoot;
17
+ this.packedPublicBytecode = packedPublicBytecode;
18
+ }
19
+ static isContractClassPublishedEvent(log) {
20
+ return log.contractAddress.equals(ProtocolContractAddress.ContractClassRegistry) && log.fields.fields[0].toBigInt() === CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE;
21
+ }
22
+ static fromLog(log) {
23
+ // See how the log is serialized in `noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/events/class_published.nr`.
24
+ const fieldsWithoutTag = log.fields.fields.slice(1);
25
+ const reader = new FieldReader(fieldsWithoutTag);
26
+ const contractClassId = reader.readField();
27
+ const version = reader.readField().toNumber();
28
+ const artifactHash = reader.readField();
29
+ const privateFunctionsRoot = reader.readField();
30
+ const packedPublicBytecode = bufferFromFields(reader.readFieldArray(fieldsWithoutTag.length - reader.cursor));
31
+ return new ContractClassPublishedEvent(contractClassId, version, artifactHash, privateFunctionsRoot, packedPublicBytecode);
32
+ }
33
+ /** Converts the event to a contract class, without computing or validating the bytecode commitment. */ toContractClassPublic() {
34
+ return {
35
+ id: this.contractClassId,
36
+ artifactHash: this.artifactHash,
37
+ packedBytecode: this.packedPublicBytecode,
38
+ privateFunctionsRoot: this.privateFunctionsRoot,
39
+ version: this.version
40
+ };
41
+ }
42
+ /** Converts the event to a contract class with its bytecode commitment (expensive). */ async toContractClassPublicWithBytecodeCommitment() {
43
+ const publicBytecodeCommitment = await computePublicBytecodeCommitment(this.packedPublicBytecode);
44
+ return {
45
+ ...this.toContractClassPublic(),
46
+ publicBytecodeCommitment
47
+ };
48
+ }
49
+ static extractContractClassEvents(logs) {
50
+ return logs.filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log));
51
+ }
52
+ }
@@ -0,0 +1,6 @@
1
+ import type { ProtocolContract } from '../protocol_contract.js';
2
+ export * from './contract_class_published_event.js';
3
+ export declare const ContractClassRegistryArtifact: import("@aztec/stdlib/abi").ContractArtifact;
4
+ /** Returns the canonical deployment of the contract. */
5
+ export declare function getCanonicalClassRegistry(): Promise<ProtocolContract>;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGFzcy1yZWdpc3RyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLGNBQWMscUNBQXFDLENBQUM7QUFFcEQsZUFBTyxNQUFNLDZCQUE2Qiw4Q0FBMEUsQ0FBQztBQUlySCx3REFBd0Q7QUFDeEQsd0JBQWdCLHlCQUF5QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQU1yRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/class-registry/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AAEpD,eAAO,MAAM,6BAA6B,8CAA0E,CAAC;AAIrH,wDAAwD;AACxD,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAMrE"}
@@ -0,0 +1,15 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import ContractClassRegistryJson from '../../artifacts/ContractClassRegistry.json' with {
3
+ type: 'json'
4
+ };
5
+ import { makeProtocolContract } from '../make_protocol_contract.js';
6
+ export * from './contract_class_published_event.js';
7
+ export const ContractClassRegistryArtifact = loadContractArtifact(ContractClassRegistryJson);
8
+ let protocolContract;
9
+ /** Returns the canonical deployment of the contract. */ export function getCanonicalClassRegistry() {
10
+ if (!protocolContract) {
11
+ const artifact = ContractClassRegistryArtifact;
12
+ protocolContract = makeProtocolContract('ContractClassRegistry', artifact);
13
+ }
14
+ return Promise.resolve(protocolContract);
15
+ }
@@ -0,0 +1,7 @@
1
+ import { type ContractArtifact } from '@aztec/stdlib/abi';
2
+ import type { ProtocolContract } from '../protocol_contract.js';
3
+ export * from './contract_class_published_event.js';
4
+ export declare function getContractClassRegistryArtifact(): Promise<ContractArtifact>;
5
+ /** Returns the canonical deployment of the auth registry. */
6
+ export declare function getCanonicalClassRegistry(): Promise<ProtocolContract>;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsYXNzLXJlZ2lzdHJ5L2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFHaEYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxjQUFjLHFDQUFxQyxDQUFDO0FBS3BELHdCQUFzQixnQ0FBZ0MsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FXbEY7QUFFRCw2REFBNkQ7QUFDN0Qsd0JBQXNCLHlCQUF5QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQU0zRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/class-registry/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AAKpD,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAWlF;AAED,6DAA6D;AAC7D,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAM3E"}
@@ -0,0 +1,24 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import { makeProtocolContract } from '../make_protocol_contract.js';
3
+ export * from './contract_class_published_event.js';
4
+ let protocolContract;
5
+ let protocolContractArtifact;
6
+ export async function getContractClassRegistryArtifact() {
7
+ if (!protocolContractArtifact) {
8
+ // Cannot assert this import as it's incompatible with bundlers like vite
9
+ // https://github.com/vitejs/vite/issues/19095#issuecomment-2566074352
10
+ // Even if now supported by al major browsers, the MIME type is replaced with
11
+ // "text/javascript"
12
+ // In the meantime, this lazy import is INCOMPATIBLE WITH NODEJS
13
+ const { default: contractClassRegistryJson } = await import('../../artifacts/ContractClassRegistry.json');
14
+ protocolContractArtifact = loadContractArtifact(contractClassRegistryJson);
15
+ }
16
+ return protocolContractArtifact;
17
+ }
18
+ /** Returns the canonical deployment of the auth registry. */ export async function getCanonicalClassRegistry() {
19
+ if (!protocolContract) {
20
+ const contractClassRegistryArtifact = await getContractClassRegistryArtifact();
21
+ protocolContract = makeProtocolContract('ContractClassRegistry', contractClassRegistryArtifact);
22
+ }
23
+ return protocolContract;
24
+ }
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { ProtocolContract } from '../protocol_contract.js';
4
4
  export declare const FeeJuiceArtifact: import("@aztec/stdlib/abi").ContractArtifact;
@@ -12,4 +12,4 @@ export declare function computeFeePayerBalanceStorageSlot(feePayer: AztecAddress
12
12
  * Computes the leaf slot in the public data tree for the balance of the fee payer in the Fee Juice.
13
13
  */
14
14
  export declare function computeFeePayerBalanceLeafSlot(feePayer: AztecAddress): Promise<Fr>;
15
- //# sourceMappingURL=index.d.ts.map
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mZWUtanVpY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFNaEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxlQUFPLE1BQU0sZ0JBQWdCLDhDQUE2RCxDQUFDO0FBSTNGLHdEQUF3RDtBQUN4RCx3QkFBZ0Isb0JBQW9CLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBS2hFO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0IsaUNBQWlDLENBQUMsUUFBUSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXJGO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsOEJBQThCLENBQUMsUUFBUSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBR3hGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fee-juice/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,eAAO,MAAM,gBAAgB,8CAA6D,CAAC;AAI3F,wDAAwD;AACxD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKtE;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAErF;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAGxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fee-juice/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,eAAO,MAAM,gBAAgB,8CAA6D,CAAC;AAI3F,wDAAwD;AACxD,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKhE;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAErF;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAGxF"}
@@ -1,17 +1,17 @@
1
1
  import { loadContractArtifact } from '@aztec/stdlib/abi';
2
2
  import { computePublicDataTreeLeafSlot, deriveStorageSlotInMap } from '@aztec/stdlib/hash';
3
- import FeeJuiceJson from '../../artifacts/FeeJuice.json' assert {
3
+ import FeeJuiceJson from '../../artifacts/FeeJuice.json' with {
4
4
  type: 'json'
5
5
  };
6
6
  import { makeProtocolContract } from '../make_protocol_contract.js';
7
7
  import { ProtocolContractAddress } from '../protocol_contract_data.js';
8
8
  export const FeeJuiceArtifact = loadContractArtifact(FeeJuiceJson);
9
9
  let protocolContract;
10
- /** Returns the canonical deployment of the contract. */ export async function getCanonicalFeeJuice() {
10
+ /** Returns the canonical deployment of the contract. */ export function getCanonicalFeeJuice() {
11
11
  if (!protocolContract) {
12
- protocolContract = await makeProtocolContract('FeeJuice', FeeJuiceArtifact);
12
+ protocolContract = makeProtocolContract('FeeJuice', FeeJuiceArtifact);
13
13
  }
14
- return protocolContract;
14
+ return Promise.resolve(protocolContract);
15
15
  }
16
16
  /**
17
17
  * Computes the storage slot within the Fee Juice contract for the balance of the fee payer.
@@ -3,4 +3,4 @@ import type { ProtocolContract } from '../protocol_contract.js';
3
3
  export declare function getFeeJuiceArtifact(): Promise<ContractArtifact>;
4
4
  /** Returns the canonical deployment of the auth registry. */
5
5
  export declare function getCanonicalFeeJuice(): Promise<ProtocolContract>;
6
- //# sourceMappingURL=lazy.d.ts.map
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZlZS1qdWljZS9sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF3QixNQUFNLG1CQUFtQixDQUFDO0FBR2hGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLaEUsd0JBQXNCLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQVdyRTtBQUVELDZEQUE2RDtBQUM3RCx3QkFBc0Isb0JBQW9CLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBTXRFIn0=
@@ -4,10 +4,10 @@ let protocolContract;
4
4
  let protocolContractArtifact;
5
5
  export async function getFeeJuiceArtifact() {
6
6
  if (!protocolContractArtifact) {
7
- // Cannot assert this import as it's incompatible with browsers
8
- // https://caniuse.com/mdn-javascript_statements_import_import_assertions_type_json
9
- // Use the new "with" syntax once supported by firefox
10
- // https://caniuse.com/mdn-javascript_statements_import_import_attributes_type_json
7
+ // Cannot assert this import as it's incompatible with bundlers like vite
8
+ // https://github.com/vitejs/vite/issues/19095#issuecomment-2566074352
9
+ // Even if now supported by al major browsers, the MIME type is replaced with
10
+ // "text/javascript"
11
11
  // In the meantime, this lazy import is INCOMPATIBLE WITH NODEJS
12
12
  const { default: feeJuiceJson } = await import('../../artifacts/FeeJuice.json');
13
13
  protocolContractArtifact = loadContractArtifact(feeJuiceJson);
@@ -17,7 +17,7 @@ export async function getFeeJuiceArtifact() {
17
17
  /** Returns the canonical deployment of the auth registry. */ export async function getCanonicalFeeJuice() {
18
18
  if (!protocolContract) {
19
19
  const feeJuiceArtifact = await getFeeJuiceArtifact();
20
- protocolContract = await makeProtocolContract('FeeJuice', feeJuiceArtifact);
20
+ protocolContract = makeProtocolContract('FeeJuice', feeJuiceArtifact);
21
21
  }
22
22
  return protocolContract;
23
23
  }
package/dest/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from './protocol_contract.js';
2
2
  export * from './protocol_contract_data.js';
3
- export * from './protocol_contract_tree.js';
4
- //# sourceMappingURL=index.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC"}
package/dest/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './protocol_contract.js';
2
2
  export * from './protocol_contract_data.js';
3
- export * from './protocol_contract_tree.js';
@@ -0,0 +1,22 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
4
+ import { PublicKeys } from '@aztec/stdlib/keys';
5
+ import type { PrivateLog } from '@aztec/stdlib/logs';
6
+ /** Event emitted from the ContractInstanceRegistry. */
7
+ export declare class ContractInstancePublishedEvent {
8
+ readonly address: AztecAddress;
9
+ readonly version: number;
10
+ readonly salt: Fr;
11
+ readonly contractClassId: Fr;
12
+ readonly initializationHash: Fr;
13
+ readonly immutablesHash: Fr;
14
+ readonly publicKeys: PublicKeys;
15
+ readonly deployer: AztecAddress;
16
+ constructor(address: AztecAddress, version: number, salt: Fr, contractClassId: Fr, initializationHash: Fr, immutablesHash: Fr, publicKeys: PublicKeys, deployer: AztecAddress);
17
+ static isContractInstancePublishedEvent(log: PrivateLog): boolean;
18
+ static fromLog(log: PrivateLog): ContractInstancePublishedEvent;
19
+ toContractInstance(): ContractInstanceWithAddress;
20
+ static extractContractInstanceEvents(logs: PrivateLog[]): ContractInstancePublishedEvent[];
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2VfcHVibGlzaGVkX2V2ZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdGFuY2UtcmVnaXN0cnkvY29udHJhY3RfaW5zdGFuY2VfcHVibGlzaGVkX2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckQsdURBQXVEO0FBQ3ZELHFCQUFhLDhCQUE4QjthQUV2QixPQUFPLEVBQUUsWUFBWTthQUNyQixPQUFPLEVBQUUsTUFBTTthQUNmLElBQUksRUFBRSxFQUFFO2FBQ1IsZUFBZSxFQUFFLEVBQUU7YUFDbkIsa0JBQWtCLEVBQUUsRUFBRTthQUN0QixjQUFjLEVBQUUsRUFBRTthQUNsQixVQUFVLEVBQUUsVUFBVTthQUN0QixRQUFRLEVBQUUsWUFBWTtJQVJ4QyxZQUNrQixPQUFPLEVBQUUsWUFBWSxFQUNyQixPQUFPLEVBQUUsTUFBTSxFQUNmLElBQUksRUFBRSxFQUFFLEVBQ1IsZUFBZSxFQUFFLEVBQUUsRUFDbkIsa0JBQWtCLEVBQUUsRUFBRSxFQUN0QixjQUFjLEVBQUUsRUFBRSxFQUNsQixVQUFVLEVBQUUsVUFBVSxFQUN0QixRQUFRLEVBQUUsWUFBWSxFQUNwQztJQUVKLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLEVBQUUsVUFBVSxXQUV0RDtJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsa0NBc0I3QjtJQUVELGtCQUFrQixJQUFJLDJCQUEyQixDQWdCaEQ7SUFFRCxPQUFjLDZCQUE2QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyw4QkFBOEIsRUFBRSxDQUloRztDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_instance_published_event.d.ts","sourceRoot":"","sources":["../../src/instance-registry/contract_instance_published_event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,uDAAuD;AACvD,qBAAa,8BAA8B;aAEvB,OAAO,EAAE,YAAY;aACrB,OAAO,EAAE,MAAM;aACf,IAAI,EAAE,EAAE;aACR,eAAe,EAAE,EAAE;aACnB,kBAAkB,EAAE,EAAE;aACtB,cAAc,EAAE,EAAE;aAClB,UAAU,EAAE,UAAU;aACtB,QAAQ,EAAE,YAAY;IARxC,YACkB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,EAAE,EACR,eAAe,EAAE,EAAE,EACnB,kBAAkB,EAAE,EAAE,EACtB,cAAc,EAAE,EAAE,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACpC;IAEJ,MAAM,CAAC,gCAAgC,CAAC,GAAG,EAAE,UAAU,WAEtD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,kCAsB7B;IAED,kBAAkB,IAAI,2BAA2B,CAgBhD;IAED,OAAc,6BAA6B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,8BAA8B,EAAE,CAIhG;CACF"}
@@ -1,27 +1,29 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { BufferReader } from '@aztec/foundation/serialize';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { PublicKeys } from '@aztec/stdlib/keys';
5
- import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '../protocol_contract_data.js';
6
- /** Event emitted from the ContractInstanceDeployer. */ export class ContractInstanceDeployedEvent {
5
+ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '../protocol_contract_data.js';
6
+ /** Event emitted from the ContractInstanceRegistry. */ export class ContractInstancePublishedEvent {
7
7
  address;
8
8
  version;
9
9
  salt;
10
10
  contractClassId;
11
11
  initializationHash;
12
+ immutablesHash;
12
13
  publicKeys;
13
14
  deployer;
14
- constructor(address, version, salt, contractClassId, initializationHash, publicKeys, deployer){
15
+ constructor(address, version, salt, contractClassId, initializationHash, immutablesHash, publicKeys, deployer){
15
16
  this.address = address;
16
17
  this.version = version;
17
18
  this.salt = salt;
18
19
  this.contractClassId = contractClassId;
19
20
  this.initializationHash = initializationHash;
21
+ this.immutablesHash = immutablesHash;
20
22
  this.publicKeys = publicKeys;
21
23
  this.deployer = deployer;
22
24
  }
23
- static isContractInstanceDeployedEvent(log) {
24
- return log.fields[0].equals(DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG);
25
+ static isContractInstancePublishedEvent(log) {
26
+ return log.fields[0].equals(CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG);
25
27
  }
26
28
  static fromLog(log) {
27
29
  const bufferWithoutTag = log.toBuffer().subarray(32);
@@ -31,12 +33,13 @@ import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '../protocol_contract_da
31
33
  const salt = reader.readObject(Fr);
32
34
  const contractClassId = reader.readObject(Fr);
33
35
  const initializationHash = reader.readObject(Fr);
36
+ const immutablesHash = reader.readObject(Fr);
34
37
  const publicKeys = reader.readObject(PublicKeys);
35
38
  const deployer = reader.readObject(AztecAddress);
36
- return new ContractInstanceDeployedEvent(address, version, salt, contractClassId, initializationHash, publicKeys, deployer);
39
+ return new ContractInstancePublishedEvent(address, version, salt, contractClassId, initializationHash, immutablesHash, publicKeys, deployer);
37
40
  }
38
41
  toContractInstance() {
39
- if (this.version !== 1) {
42
+ if (this.version !== 2) {
40
43
  throw new Error(`Unexpected contract instance version ${this.version}`);
41
44
  }
42
45
  return {
@@ -45,9 +48,13 @@ import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '../protocol_contract_da
45
48
  currentContractClassId: this.contractClassId,
46
49
  originalContractClassId: this.contractClassId,
47
50
  initializationHash: this.initializationHash,
51
+ immutablesHash: this.immutablesHash,
48
52
  publicKeys: this.publicKeys,
49
53
  salt: this.salt,
50
54
  deployer: this.deployer
51
55
  };
52
56
  }
57
+ static extractContractInstanceEvents(logs) {
58
+ return logs.filter((log)=>ContractInstancePublishedEvent.isContractInstancePublishedEvent(log)).map((log)=>ContractInstancePublishedEvent.fromLog(log));
59
+ }
53
60
  }
@@ -0,0 +1,17 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { ContractInstanceUpdateWithAddress } from '@aztec/stdlib/contract';
4
+ import type { PublicLog } from '@aztec/stdlib/logs';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
6
+ /** Event emitted from the ContractInstanceRegistry. */
7
+ export declare class ContractInstanceUpdatedEvent {
8
+ readonly address: AztecAddress;
9
+ readonly prevContractClassId: Fr;
10
+ readonly newContractClassId: Fr;
11
+ readonly timestampOfChange: UInt64;
12
+ constructor(address: AztecAddress, prevContractClassId: Fr, newContractClassId: Fr, timestampOfChange: UInt64);
13
+ static isContractInstanceUpdatedEvent(log: PublicLog): boolean;
14
+ static fromLog(log: PublicLog): ContractInstanceUpdatedEvent;
15
+ toContractInstanceUpdate(): ContractInstanceUpdateWithAddress;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2VfdXBkYXRlZF9ldmVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbmNlLXJlZ2lzdHJ5L2NvbnRyYWN0X2luc3RhbmNlX3VwZGF0ZWRfZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSWxELHVEQUF1RDtBQUN2RCxxQkFBYSw0QkFBNEI7YUFFckIsT0FBTyxFQUFFLFlBQVk7YUFDckIsbUJBQW1CLEVBQUUsRUFBRTthQUN2QixrQkFBa0IsRUFBRSxFQUFFO2FBQ3RCLGlCQUFpQixFQUFFLE1BQU07SUFKM0MsWUFDa0IsT0FBTyxFQUFFLFlBQVksRUFDckIsbUJBQW1CLEVBQUUsRUFBRSxFQUN2QixrQkFBa0IsRUFBRSxFQUFFLEVBQ3RCLGlCQUFpQixFQUFFLE1BQU0sRUFDdkM7SUFFSixNQUFNLENBQUMsOEJBQThCLENBQUMsR0FBRyxFQUFFLFNBQVMsV0FLbkQ7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLGdDQU81QjtJQUVELHdCQUF3QixJQUFJLGlDQUFpQyxDQU81RDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_instance_updated_event.d.ts","sourceRoot":"","sources":["../../src/instance-registry/contract_instance_updated_event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,uDAAuD;AACvD,qBAAa,4BAA4B;aAErB,OAAO,EAAE,YAAY;aACrB,mBAAmB,EAAE,EAAE;aACvB,kBAAkB,EAAE,EAAE;aACtB,iBAAiB,EAAE,MAAM;IAJ3C,YACkB,OAAO,EAAE,YAAY,EACrB,mBAAmB,EAAE,EAAE,EACvB,kBAAkB,EAAE,EAAE,EACtB,iBAAiB,EAAE,MAAM,EACvC;IAEJ,MAAM,CAAC,8BAA8B,CAAC,GAAG,EAAE,SAAS,WAKnD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,gCAO5B;IAED,wBAAwB,IAAI,iCAAiC,CAO5D;CACF"}
@@ -0,0 +1,35 @@
1
+ import { CONTRACT_INSTANCE_UPDATED_MAGIC_VALUE } from '@aztec/constants';
2
+ import { FieldReader } from '@aztec/foundation/serialize';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { ProtocolContractAddress } from '../protocol_contract_data.js';
5
+ /** Event emitted from the ContractInstanceRegistry. */ export class ContractInstanceUpdatedEvent {
6
+ address;
7
+ prevContractClassId;
8
+ newContractClassId;
9
+ timestampOfChange;
10
+ constructor(address, prevContractClassId, newContractClassId, timestampOfChange){
11
+ this.address = address;
12
+ this.prevContractClassId = prevContractClassId;
13
+ this.newContractClassId = newContractClassId;
14
+ this.timestampOfChange = timestampOfChange;
15
+ }
16
+ static isContractInstanceUpdatedEvent(log) {
17
+ return log.contractAddress.equals(ProtocolContractAddress.ContractInstanceRegistry) && log.fields[0].toBigInt() === CONTRACT_INSTANCE_UPDATED_MAGIC_VALUE;
18
+ }
19
+ static fromLog(log) {
20
+ const reader = new FieldReader(log.fields.slice(1));
21
+ const address = reader.readObject(AztecAddress);
22
+ const prevContractClassId = reader.readField();
23
+ const newContractClassId = reader.readField();
24
+ const timestampOfChange = reader.readField().toBigInt();
25
+ return new ContractInstanceUpdatedEvent(address, prevContractClassId, newContractClassId, timestampOfChange);
26
+ }
27
+ toContractInstanceUpdate() {
28
+ return {
29
+ address: this.address,
30
+ prevContractClassId: this.prevContractClassId,
31
+ newContractClassId: this.newContractClassId,
32
+ timestampOfChange: this.timestampOfChange
33
+ };
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ import type { ProtocolContract } from '../protocol_contract.js';
2
+ export * from './contract_instance_published_event.js';
3
+ export * from './contract_instance_updated_event.js';
4
+ export declare const ContractInstanceRegistryArtifact: import("@aztec/stdlib/abi").ContractArtifact;
5
+ /** Returns the canonical deployment of the contract. */
6
+ export declare function getCanonicalInstanceRegistry(): Promise<ProtocolContract>;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YW5jZS1yZWdpc3RyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxlQUFPLE1BQU0sZ0NBQWdDLDhDQUU1QyxDQUFDO0FBSUYsd0RBQXdEO0FBQ3hELHdCQUFnQiw0QkFBNEIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FLeEUifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instance-registry/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,eAAO,MAAM,gCAAgC,8CAE5C,CAAC;AAIF,wDAAwD;AACxD,wBAAgB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKxE"}
@@ -0,0 +1,15 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import ContractInstanceRegistryJson from '../../artifacts/ContractInstanceRegistry.json' with {
3
+ type: 'json'
4
+ };
5
+ import { makeProtocolContract } from '../make_protocol_contract.js';
6
+ export * from './contract_instance_published_event.js';
7
+ export * from './contract_instance_updated_event.js';
8
+ export const ContractInstanceRegistryArtifact = loadContractArtifact(ContractInstanceRegistryJson);
9
+ let protocolContract;
10
+ /** Returns the canonical deployment of the contract. */ export function getCanonicalInstanceRegistry() {
11
+ if (!protocolContract) {
12
+ protocolContract = makeProtocolContract('ContractInstanceRegistry', ContractInstanceRegistryArtifact);
13
+ }
14
+ return Promise.resolve(protocolContract);
15
+ }
@@ -0,0 +1,8 @@
1
+ import { type ContractArtifact } from '@aztec/stdlib/abi';
2
+ import type { ProtocolContract } from '../protocol_contract.js';
3
+ export * from './contract_instance_published_event.js';
4
+ export * from './contract_instance_updated_event.js';
5
+ export declare function getContractInstanceRegistryArtifact(): Promise<ContractArtifact>;
6
+ /** Returns the canonical deployment of the auth registry. */
7
+ export declare function getCanonicalInstanceRegistry(): Promise<ProtocolContract>;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbmNlLXJlZ2lzdHJ5L2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFHaEYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0NBQXNDLENBQUM7QUFLckQsd0JBQXNCLG1DQUFtQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQVdyRjtBQUVELDZEQUE2RDtBQUM3RCx3QkFBc0IsNEJBQTRCLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBTTlFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/instance-deployer/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAKrD,wBAAsB,mCAAmC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAWrF;AAED,6DAA6D;AAC7D,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAM9E"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/instance-registry/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAKrD,wBAAsB,mCAAmC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAWrF;AAED,6DAA6D;AAC7D,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAM9E"}
@@ -0,0 +1,25 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import { makeProtocolContract } from '../make_protocol_contract.js';
3
+ export * from './contract_instance_published_event.js';
4
+ export * from './contract_instance_updated_event.js';
5
+ let protocolContract;
6
+ let protocolContractArtifact;
7
+ export async function getContractInstanceRegistryArtifact() {
8
+ if (!protocolContractArtifact) {
9
+ // Cannot assert this import as it's incompatible with bundlers like vite
10
+ // https://github.com/vitejs/vite/issues/19095#issuecomment-2566074352
11
+ // Even if now supported by al major browsers, the MIME type is replaced with
12
+ // "text/javascript"
13
+ // In the meantime, this lazy import is INCOMPATIBLE WITH NODEJS
14
+ const { default: contractInstanceRegistryJson } = await import('../../artifacts/ContractInstanceRegistry.json');
15
+ protocolContractArtifact = loadContractArtifact(contractInstanceRegistryJson);
16
+ }
17
+ return protocolContractArtifact;
18
+ }
19
+ /** Returns the canonical deployment of the auth registry. */ export async function getCanonicalInstanceRegistry() {
20
+ if (!protocolContract) {
21
+ const contractInstanceRegistryArtifact = await getContractInstanceRegistryArtifact();
22
+ protocolContract = makeProtocolContract('ContractInstanceRegistry', contractInstanceRegistryArtifact);
23
+ }
24
+ return protocolContract;
25
+ }
@@ -2,8 +2,8 @@ import type { ContractArtifact } from '@aztec/stdlib/abi';
2
2
  import type { ProtocolContract } from './protocol_contract.js';
3
3
  import { type ProtocolContractName } from './protocol_contract_data.js';
4
4
  /**
5
- * Returns the canonical deployment given its name and artifact.
6
- * To be used internally within the protocol-contracts package.
5
+ * Reconstructs a ProtocolContract from precomputed data without performing any hash computations.
6
+ * Internal to the protocol-contracts package — not part of the public API.
7
7
  */
8
- export declare function makeProtocolContract(name: ProtocolContractName, artifact: ContractArtifact): Promise<ProtocolContract>;
9
- //# sourceMappingURL=make_protocol_contract.d.ts.map
8
+ export declare function makeProtocolContract(name: ProtocolContractName, artifact: ContractArtifact): ProtocolContract;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZV9wcm90b2NvbF9jb250cmFjdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ha2VfcHJvdG9jb2xfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUcxRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFLTCxLQUFLLG9CQUFvQixFQUcxQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDOzs7R0FHRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQThCN0cifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"make_protocol_contract.d.ts","sourceRoot":"","sources":["../src/make_protocol_contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAA2B,KAAK,oBAAoB,EAAwB,MAAM,6BAA6B,CAAC;AAEvH;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAY3B"}
1
+ {"version":3,"file":"make_protocol_contract.d.ts","sourceRoot":"","sources":["../src/make_protocol_contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAKL,KAAK,oBAAoB,EAG1B,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CA8B7G"}
@@ -1,21 +1,37 @@
1
- import { getContractClassFromArtifact, getContractInstanceFromDeployParams } from '@aztec/stdlib/contract';
2
- import { ProtocolContractAddress, ProtocolContractSalt } from './protocol_contract_data.js';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { PublicKeys } from '@aztec/stdlib/keys';
3
+ import { ProtocolContractAddress, ProtocolContractClassId, ProtocolContractClassIdPreimage, ProtocolContractInitializationHash, ProtocolContractPrivateFunctions, ProtocolContractSalt } from './protocol_contract_data.js';
3
4
  /**
4
- * Returns the canonical deployment given its name and artifact.
5
- * To be used internally within the protocol-contracts package.
6
- */ export async function makeProtocolContract(name, artifact) {
5
+ * Reconstructs a ProtocolContract from precomputed data without performing any hash computations.
6
+ * Internal to the protocol-contracts package — not part of the public API.
7
+ */ export function makeProtocolContract(name, artifact) {
7
8
  const address = ProtocolContractAddress[name];
8
9
  const salt = ProtocolContractSalt[name];
9
- // TODO(@spalladino): This computes the contract class from the artifact twice.
10
- const contractClass = await getContractClassFromArtifact(artifact);
11
- const instance = await getContractInstanceFromDeployParams(artifact, {
12
- salt
13
- });
10
+ const classId = ProtocolContractClassId[name];
11
+ const { artifactHash, privateFunctionsRoot, publicBytecodeCommitment } = ProtocolContractClassIdPreimage[name];
12
+ const initializationHash = ProtocolContractInitializationHash[name];
13
+ const contractClass = {
14
+ id: classId,
15
+ version: 1,
16
+ artifactHash,
17
+ privateFunctionsRoot,
18
+ publicBytecodeCommitment,
19
+ packedBytecode: artifact.functions.find((f)=>f.name === 'public_dispatch')?.bytecode ?? Buffer.alloc(0),
20
+ privateFunctions: ProtocolContractPrivateFunctions[name]
21
+ };
22
+ const instance = {
23
+ version: 2,
24
+ currentContractClassId: classId,
25
+ originalContractClassId: classId,
26
+ initializationHash,
27
+ immutablesHash: Fr.ZERO,
28
+ publicKeys: PublicKeys.default(),
29
+ salt,
30
+ deployer: address,
31
+ address
32
+ };
14
33
  return {
15
- instance: {
16
- ...instance,
17
- address
18
- },
34
+ instance,
19
35
  contractClass,
20
36
  artifact,
21
37
  address
@@ -14,4 +14,4 @@ export interface ProtocolContract {
14
14
  }
15
15
  export declare function isProtocolContract(address: AztecAddress): boolean;
16
16
  export { type ProtocolContractsProvider } from './provider/protocol_contracts_provider.js';
17
- //# sourceMappingURL=protocol_contract.d.ts.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJeEgsdURBQXVEO0FBQ3ZELE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsbUNBQW1DO0lBQ25DLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQztJQUN0Qyx1Q0FBdUM7SUFDdkMsYUFBYSxFQUFFLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDO0lBQzdELGtDQUFrQztJQUNsQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0Isc0RBQXNEO0lBQ3RELE9BQU8sRUFBRSxZQUFZLENBQUM7Q0FDdkI7QUFFRCx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksV0FFdkQ7QUFFRCxPQUFPLEVBQUUsS0FBSyx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDIn0=
@@ -1,21 +1,28 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { FunctionSelector } from '@aztec/stdlib/abi';
2
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- export declare const protocolContractNames: readonly ["AuthRegistry", "ContractInstanceDeployer", "ContractClassRegisterer", "MultiCallEntrypoint", "FeeJuice", "Router"];
4
+ import { ProtocolContracts } from '@aztec/stdlib/tx';
5
+ export declare const protocolContractNames: readonly ["ContractInstanceRegistry", "ContractClassRegistry", "FeeJuice"];
4
6
  export type ProtocolContractName = typeof protocolContractNames[number];
5
7
  export declare const ProtocolContractSalt: Record<ProtocolContractName, Fr>;
6
8
  export declare const ProtocolContractAddress: Record<ProtocolContractName, AztecAddress>;
7
- export declare const ProtocolContractLeaves: {
8
- AuthRegistry: Fr;
9
- ContractInstanceDeployer: Fr;
10
- ContractClassRegisterer: Fr;
11
- MultiCallEntrypoint: Fr;
12
- FeeJuice: Fr;
13
- Router: Fr;
9
+ export declare const ProtocolContractDerivedAddress: {
10
+ ContractInstanceRegistry: AztecAddress;
11
+ ContractClassRegistry: AztecAddress;
12
+ FeeJuice: AztecAddress;
14
13
  };
15
- export declare const protocolContractTreeRoot: Fr;
16
- export declare const REGISTERER_CONTRACT_CLASS_REGISTERED_TAG: Fr;
17
- export declare const REGISTERER_PRIVATE_FUNCTION_BROADCASTED_TAG: Fr;
18
- export declare const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG: Fr;
19
- export declare const DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG: Fr;
20
- export declare const DEPLOYER_CONTRACT_INSTANCE_UPDATED_TAG: Fr;
21
- //# sourceMappingURL=protocol_contract_data.d.ts.map
14
+ export declare const ProtocolContractClassId: Record<ProtocolContractName, Fr>;
15
+ export declare const ProtocolContractClassIdPreimage: Record<ProtocolContractName, {
16
+ artifactHash: Fr;
17
+ privateFunctionsRoot: Fr;
18
+ publicBytecodeCommitment: Fr;
19
+ }>;
20
+ export declare const ProtocolContractInitializationHash: Record<ProtocolContractName, Fr>;
21
+ export declare const ProtocolContractPrivateFunctions: Record<ProtocolContractName, {
22
+ selector: FunctionSelector;
23
+ vkHash: Fr;
24
+ }[]>;
25
+ export declare const ProtocolContractsList: ProtocolContracts;
26
+ export declare const protocolContractsHash: Fr;
27
+ export declare const CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG: Fr;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb3RvY29sX2NvbnRyYWN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUksT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdyRCxlQUFPLE1BQU0scUJBQXFCLDRFQUl4QixDQUFDO0FBRVgsTUFBTSxNQUFNLG9CQUFvQixHQUFHLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFJeEUsZUFBTyxNQUFNLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBSWpFLENBQUM7QUFJRixlQUFPLE1BQU0sdUJBQXVCLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixFQUFFLFlBQVksQ0FJOUUsQ0FBQztBQUlGLGVBQU8sTUFBTSw4QkFBOEI7Ozs7Q0FJMUMsQ0FBQztBQUlGLGVBQU8sTUFBTSx1QkFBdUIsRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUlwRSxDQUFDO0FBRUYsZUFBTyxNQUFNLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtJQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7SUFBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxDQWdCdEosQ0FBQztBQUVGLGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUkvRSxDQUFDO0FBRUYsZUFBTyxNQUFNLGdDQUFnQyxFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtJQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQztJQUFDLE1BQU0sRUFBRSxFQUFFLENBQUE7Q0FBRSxFQUFFLENBSXZILENBQUM7QUFJRixlQUFPLE1BQU0scUJBQXFCLG1CQVloQyxDQUFDO0FBRUgsZUFBTyxNQUFNLHFCQUFxQixJQUFzRixDQUFDO0FBSTNILGVBQU8sTUFBTSxxQ0FBcUMsSUFBeUYsQ0FBQyJ9