@aztec/aztec.js 0.7.2 → 0.7.3

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 (143) hide show
  1. package/.tsbuildinfo +1 -0
  2. package/dest/abis/ecdsa_account_contract.json +160 -0
  3. package/dest/abis/schnorr_account_contract.json +148 -0
  4. package/dest/abis/schnorr_auth_witness_account_contract.json +643 -0
  5. package/dest/abis/schnorr_single_key_account_contract.json +103 -0
  6. package/dest/account/account.d.ts +72 -0
  7. package/dest/account/account.d.ts.map +1 -0
  8. package/dest/account/account.js +115 -0
  9. package/dest/account/contract/auth_witness_account_contract.d.ts +17 -0
  10. package/dest/account/contract/auth_witness_account_contract.d.ts.map +1 -0
  11. package/dest/account/contract/auth_witness_account_contract.js +23 -0
  12. package/dest/account/contract/ecdsa_account_contract.d.ts +16 -0
  13. package/dest/account/contract/ecdsa_account_contract.d.ts.map +1 -0
  14. package/dest/account/contract/ecdsa_account_contract.js +24 -0
  15. package/dest/account/contract/index.d.ts +28 -0
  16. package/dest/account/contract/index.d.ts.map +1 -0
  17. package/dest/account/contract/index.js +6 -0
  18. package/dest/account/contract/schnorr_account_contract.d.ts +16 -0
  19. package/dest/account/contract/schnorr_account_contract.d.ts.map +1 -0
  20. package/dest/account/contract/schnorr_account_contract.js +25 -0
  21. package/dest/account/contract/single_key_account_contract.d.ts +16 -0
  22. package/dest/account/contract/single_key_account_contract.d.ts.map +1 -0
  23. package/dest/account/contract/single_key_account_contract.js +21 -0
  24. package/dest/account/deploy_account_sent_tx.d.ts +28 -0
  25. package/dest/account/deploy_account_sent_tx.d.ts.map +1 -0
  26. package/dest/account/deploy_account_sent_tx.js +29 -0
  27. package/dest/account/entrypoint/auth_witness_account_entrypoint.d.ts +74 -0
  28. package/dest/account/entrypoint/auth_witness_account_entrypoint.d.ts.map +1 -0
  29. package/dest/account/entrypoint/auth_witness_account_entrypoint.js +68 -0
  30. package/dest/account/entrypoint/entrypoint_payload.d.ts +28 -0
  31. package/dest/account/entrypoint/entrypoint_payload.d.ts.map +1 -0
  32. package/dest/account/entrypoint/entrypoint_payload.js +48 -0
  33. package/dest/account/entrypoint/entrypoint_utils.d.ts +14 -0
  34. package/dest/account/entrypoint/entrypoint_utils.d.ts.map +1 -0
  35. package/dest/account/entrypoint/entrypoint_utils.js +24 -0
  36. package/dest/account/entrypoint/index.d.ts +20 -0
  37. package/dest/account/entrypoint/index.d.ts.map +1 -0
  38. package/dest/account/entrypoint/index.js +7 -0
  39. package/dest/account/entrypoint/single_key_account_entrypoint.d.ts +19 -0
  40. package/dest/account/entrypoint/single_key_account_entrypoint.d.ts.map +1 -0
  41. package/dest/account/entrypoint/single_key_account_entrypoint.js +50 -0
  42. package/dest/account/entrypoint/stored_key_account_entrypoint.d.ts +20 -0
  43. package/dest/account/entrypoint/stored_key_account_entrypoint.d.ts.map +1 -0
  44. package/dest/account/entrypoint/stored_key_account_entrypoint.js +47 -0
  45. package/dest/account/index.d.ts +50 -0
  46. package/dest/account/index.d.ts.map +1 -0
  47. package/dest/account/index.js +66 -0
  48. package/dest/aztec_rpc_client/aztec_rpc_client.d.ts +5 -0
  49. package/dest/aztec_rpc_client/aztec_rpc_client.d.ts.map +1 -0
  50. package/dest/aztec_rpc_client/aztec_rpc_client.js +18 -0
  51. package/dest/aztec_rpc_client/index.d.ts +3 -0
  52. package/dest/aztec_rpc_client/index.d.ts.map +1 -0
  53. package/dest/aztec_rpc_client/index.js +3 -0
  54. package/dest/aztec_rpc_client/wallet.d.ts +109 -0
  55. package/dest/aztec_rpc_client/wallet.d.ts.map +1 -0
  56. package/dest/aztec_rpc_client/wallet.js +186 -0
  57. package/dest/contract/base_contract_interaction.d.ts +45 -0
  58. package/dest/contract/base_contract_interaction.d.ts.map +1 -0
  59. package/dest/contract/base_contract_interaction.js +37 -0
  60. package/dest/contract/batch_call.d.ts +15 -0
  61. package/dest/contract/batch_call.d.ts.map +1 -0
  62. package/dest/contract/batch_call.js +21 -0
  63. package/dest/contract/checker.d.ts +11 -0
  64. package/dest/contract/checker.d.ts.map +1 -0
  65. package/dest/contract/checker.js +98 -0
  66. package/dest/contract/checker.test.d.ts +2 -0
  67. package/dest/contract/checker.test.d.ts.map +1 -0
  68. package/dest/contract/checker.test.js +168 -0
  69. package/dest/contract/contract.d.ts +39 -0
  70. package/dest/contract/contract.d.ts.map +1 -0
  71. package/dest/contract/contract.js +45 -0
  72. package/dest/contract/contract.test.d.ts +2 -0
  73. package/dest/contract/contract.test.d.ts.map +1 -0
  74. package/dest/contract/contract.test.js +141 -0
  75. package/dest/contract/contract_base.d.ts +72 -0
  76. package/dest/contract/contract_base.d.ts.map +1 -0
  77. package/dest/contract/contract_base.js +74 -0
  78. package/dest/contract/contract_function_interaction.d.ts +49 -0
  79. package/dest/contract/contract_function_interaction.d.ts.map +1 -0
  80. package/dest/contract/contract_function_interaction.js +59 -0
  81. package/dest/contract/index.d.ts +6 -0
  82. package/dest/contract/index.d.ts.map +1 -0
  83. package/dest/contract/index.js +6 -0
  84. package/dest/contract/sent_tx.d.ts +58 -0
  85. package/dest/contract/sent_tx.d.ts.map +1 -0
  86. package/dest/contract/sent_tx.js +86 -0
  87. package/dest/contract/sent_tx.test.d.ts +2 -0
  88. package/dest/contract/sent_tx.test.d.ts.map +1 -0
  89. package/dest/contract/sent_tx.test.js +42 -0
  90. package/dest/contract_deployer/contract_deployer.d.ts +25 -0
  91. package/dest/contract_deployer/contract_deployer.d.ts.map +1 -0
  92. package/dest/contract_deployer/contract_deployer.js +26 -0
  93. package/dest/contract_deployer/contract_deployer.test.d.ts +2 -0
  94. package/dest/contract_deployer/contract_deployer.test.d.ts.map +1 -0
  95. package/dest/contract_deployer/contract_deployer.test.js +46 -0
  96. package/dest/contract_deployer/deploy_method.d.ts +63 -0
  97. package/dest/contract_deployer/deploy_method.d.ts.map +1 -0
  98. package/dest/contract_deployer/deploy_method.js +80 -0
  99. package/dest/contract_deployer/deploy_sent_tx.d.ts +35 -0
  100. package/dest/contract_deployer/deploy_sent_tx.d.ts.map +1 -0
  101. package/dest/contract_deployer/deploy_sent_tx.js +39 -0
  102. package/dest/contract_deployer/index.d.ts +2 -0
  103. package/dest/contract_deployer/index.d.ts.map +1 -0
  104. package/dest/contract_deployer/index.js +2 -0
  105. package/dest/index.d.ts +13 -0
  106. package/dest/index.d.ts.map +1 -0
  107. package/dest/index.js +13 -0
  108. package/dest/main.js +2 -0
  109. package/dest/main.js.LICENSE.txt +10 -0
  110. package/dest/sandbox/index.d.ts +111 -0
  111. package/dest/sandbox/index.d.ts.map +1 -0
  112. package/dest/sandbox/index.js +69 -0
  113. package/dest/utils/abi_types.d.ts +7 -0
  114. package/dest/utils/abi_types.d.ts.map +1 -0
  115. package/dest/utils/abi_types.js +2 -0
  116. package/dest/utils/account.d.ts +23 -0
  117. package/dest/utils/account.d.ts.map +1 -0
  118. package/dest/utils/account.js +40 -0
  119. package/dest/utils/cheat_codes.d.ts +199 -0
  120. package/dest/utils/cheat_codes.d.ts.map +1 -0
  121. package/dest/utils/cheat_codes.js +279 -0
  122. package/dest/utils/defaults.d.ts +5 -0
  123. package/dest/utils/defaults.d.ts.map +1 -0
  124. package/dest/utils/defaults.js +5 -0
  125. package/dest/utils/index.d.ts +8 -0
  126. package/dest/utils/index.d.ts.map +1 -0
  127. package/dest/utils/index.js +8 -0
  128. package/dest/utils/l1_contracts.d.ts +32 -0
  129. package/dest/utils/l1_contracts.d.ts.map +1 -0
  130. package/dest/utils/l1_contracts.js +16 -0
  131. package/dest/utils/l2_contracts.d.ts +10 -0
  132. package/dest/utils/l2_contracts.d.ts.map +1 -0
  133. package/dest/utils/l2_contracts.js +10 -0
  134. package/dest/utils/pub_key.d.ts +8 -0
  135. package/dest/utils/pub_key.d.ts.map +1 -0
  136. package/dest/utils/pub_key.js +11 -0
  137. package/dest/utils/secrets.d.ts +8 -0
  138. package/dest/utils/secrets.d.ts.map +1 -0
  139. package/dest/utils/secrets.js +12 -0
  140. package/package.json +4 -4
  141. package/src/abis/ecdsa_account_contract.json +1 -1
  142. package/src/abis/schnorr_account_contract.json +1 -1
  143. package/Dockerfile +0 -15
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Validates the given ContractAbi object by checking its functions and their parameters.
3
+ * Ensures that the ABI has at least one function, a constructor, valid bytecode, and correct parameter types.
4
+ * Throws an error if any inconsistency is detected during the validation process.
5
+ *
6
+ * @param abi - The ContractAbi object to be validated.
7
+ * @returns A boolean value indicating whether the ABI is valid or not.
8
+ */
9
+ export function abiChecker(abi) {
10
+ if (!abi.functions || abi.functions.length === 0) {
11
+ throw new Error('ABI has no functions');
12
+ }
13
+ abi.functions.forEach(func => {
14
+ if (!('name' in func && typeof func.name === 'string' && func.name.length > 0)) {
15
+ throw new Error('ABI function has no name');
16
+ }
17
+ // TODO: implement a better check for bytecode (right now only checks if it's > 0)
18
+ if (!('bytecode' in func && typeof func.bytecode === 'string' && func.bytecode.length > 0)) {
19
+ throw new Error('ABI function parameter has incorrect bytecode');
20
+ }
21
+ func.parameters.forEach(param => {
22
+ if (!param.type) {
23
+ throw new Error('ABI function parameter has no type');
24
+ }
25
+ abiParameterTypeChecker(param.type);
26
+ });
27
+ });
28
+ // TODO: implement a better check for constructor (right now only checks if it has it or not)
29
+ if (!abi.functions.find(func => func.name === 'constructor')) {
30
+ throw new Error('ABI has no constructor');
31
+ }
32
+ return true;
33
+ }
34
+ /**
35
+ * Validates the ABI function parameter's type by checking its kind and attributes.
36
+ * Throws an error if the type has an unrecognized kind or incorrectly formed attributes.
37
+ * Additionally, checks nested types for array and struct kinds.
38
+ *
39
+ * @param type - The ABIType object representing the type of the ABI function parameter.
40
+ * @returns A boolean value indicating whether the type is valid or not.
41
+ */
42
+ function abiParameterTypeChecker(type) {
43
+ switch (type.kind) {
44
+ case 'field':
45
+ case 'boolean':
46
+ return checkAttributes(type, {});
47
+ case 'integer':
48
+ return checkAttributes(type, { sign: 'string', width: 'number' });
49
+ case 'string':
50
+ return checkAttributes(type, { length: 'number' });
51
+ case 'array':
52
+ return checkAttributes(type, { length: 'number', type: 'object' }) && abiParameterTypeChecker(type.type);
53
+ case 'struct':
54
+ return checkAttributes(type, { fields: 'object' }) && checkStruct(type);
55
+ default:
56
+ throw new Error('ABI function parameter has an unrecognised type');
57
+ }
58
+ }
59
+ /**
60
+ * Check if the structure of the ABIType 'struct' is valid by ensuring field names are strings
61
+ * and their type attribute passes the abiParameterTypeChecker. Returns true on successful validation,
62
+ * otherwise throws an error providing insight into the incorrect formation in the struct.
63
+ *
64
+ * @param type - The StructType object containing an array of fields to validate.
65
+ * @returns A boolean value indicating successful validation of the struct's fields.
66
+ */
67
+ function checkStruct(type) {
68
+ return type.fields.reduce((acc, field) => {
69
+ if (!('name' in field && typeof field.name === 'string')) {
70
+ throw new Error('ABI function parameter has an incorrectly formed struct');
71
+ }
72
+ return acc && abiParameterTypeChecker(field.type);
73
+ }, true);
74
+ }
75
+ /**
76
+ * Check if a provided ABI type has the correct attributes and their associated types.
77
+ * This function compares the given 'type' object's keys with the expected attribute types
78
+ * specified in 'incompleteAttributes', as well as the required 'kind' property.
79
+ * Throws an error if there are any unrecognised attributes or incorrect attribute types.
80
+ *
81
+ * @param type - The ABI type object to be checked for correct attributes.
82
+ * @param incompleteAttributes - An object representing the expected attribute types without the 'kind' property.
83
+ * @returns Returns true if the provided ABI type has the correct attributes and their associated types, otherwise throws an error.
84
+ */
85
+ function checkAttributes(type, incompleteAttributes) {
86
+ const typeKeys = Object.keys(type);
87
+ const attributes = { ...incompleteAttributes, kind: 'string' };
88
+ if (typeKeys.length !== Object.keys(attributes).length) {
89
+ throw new Error(`Unrecognised attribute on type ${type.kind}`);
90
+ }
91
+ typeKeys.forEach(element => {
92
+ if (!(element in type && typeof type[element] === attributes[element])) {
93
+ throw new Error(`ABI function parameter has an incorrectly formed ${type.kind}`);
94
+ }
95
+ });
96
+ return true;
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQWdCO0lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FDekM7SUFFRCxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsa0ZBQWtGO1FBQ2xGLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMxRixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7YUFDdkQ7WUFFRCx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENB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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=checker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.test.d.ts","sourceRoot":"","sources":["../../src/contract/checker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,168 @@
1
+ import { abiChecker } from './checker.js';
2
+ describe('abiChecker', () => {
3
+ let abi;
4
+ it('should throw an error if it has no functions', () => {
5
+ abi = {
6
+ name: 'TEST_ABI',
7
+ };
8
+ expect(() => abiChecker(abi)).toThrowError('ABI has no functions');
9
+ abi = {
10
+ name: 'TEST_ABI',
11
+ functions: [],
12
+ };
13
+ expect(() => abiChecker(abi)).toThrowError('ABI has no functions');
14
+ });
15
+ it('should error if ABI has no names', () => {
16
+ abi = {
17
+ name: 'TEST_ABI',
18
+ functions: [{ bytecode: '0af', parameters: [{ type: { kind: 'test' } }] }],
19
+ };
20
+ expect(() => abiChecker(abi)).toThrowError('ABI function has no name');
21
+ });
22
+ it('should error if ABI function has unrecognised type', () => {
23
+ abi = {
24
+ name: 'TEST_ABI',
25
+ functions: [
26
+ {
27
+ name: 'Function name',
28
+ bytecode: '0af',
29
+ parameters: [{ type: { kind: 'test' } }],
30
+ },
31
+ ],
32
+ };
33
+ expect(() => abiChecker(abi)).toThrowError('ABI function parameter has an unrecognised type');
34
+ });
35
+ it('should error if integer is incorrectly formed', () => {
36
+ abi = {
37
+ name: 'TEST_ABI',
38
+ functions: [
39
+ {
40
+ name: 'constructor',
41
+ bytecode: '0af',
42
+ parameters: [{ type: { kind: 'integer', sign: 5 } }],
43
+ },
44
+ ],
45
+ };
46
+ expect(() => abiChecker(abi)).toThrowError('Unrecognised attribute on type integer');
47
+ });
48
+ it('should error if string is incorrectly formed', () => {
49
+ abi = {
50
+ name: 'TEST_ABI',
51
+ functions: [
52
+ {
53
+ name: 'constructor',
54
+ bytecode: '0af',
55
+ parameters: [{ type: { kind: 'string', sign: 5, additionalParam: true } }],
56
+ },
57
+ ],
58
+ };
59
+ expect(() => abiChecker(abi)).toThrowError('Unrecognised attribute on type string');
60
+ });
61
+ it('should error if struct is incorrectly formed', () => {
62
+ abi = {
63
+ name: 'TEST_ABI',
64
+ functions: [
65
+ {
66
+ name: 'constructor',
67
+ bytecode: '0af',
68
+ parameters: [
69
+ {
70
+ type: {
71
+ kind: 'struct',
72
+ },
73
+ },
74
+ ],
75
+ },
76
+ ],
77
+ };
78
+ expect(() => abiChecker(abi)).toThrowError('Unrecognised attribute on type struct');
79
+ });
80
+ it('should error if array is incorrectly formed', () => {
81
+ abi = {
82
+ name: 'TEST_ABI',
83
+ functions: [
84
+ {
85
+ name: 'constructor',
86
+ bytecode: '0af',
87
+ parameters: [
88
+ {
89
+ type: {
90
+ kind: 'array',
91
+ length: 5,
92
+ type: {
93
+ kind: 'array',
94
+ length: '5',
95
+ type: {
96
+ sign: 'value',
97
+ width: 5,
98
+ kind: 'integer',
99
+ },
100
+ },
101
+ },
102
+ },
103
+ ],
104
+ },
105
+ ],
106
+ };
107
+ expect(() => abiChecker(abi)).toThrowError('ABI function parameter has an incorrectly formed array');
108
+ });
109
+ it('valid matrix should pass checker', () => {
110
+ abi = {
111
+ name: 'TEST_ABI',
112
+ functions: [
113
+ {
114
+ name: 'constructor',
115
+ bytecode: '0af',
116
+ parameters: [
117
+ {
118
+ type: {
119
+ kind: 'array',
120
+ length: 5,
121
+ type: {
122
+ kind: 'array',
123
+ length: 5,
124
+ type: {
125
+ sign: 'value',
126
+ width: 5,
127
+ kind: 'integer',
128
+ },
129
+ },
130
+ },
131
+ },
132
+ ],
133
+ },
134
+ ],
135
+ };
136
+ expect(abiChecker(abi)).toBe(true);
137
+ });
138
+ it('valid struct should pass checker', () => {
139
+ abi = {
140
+ name: 'TEST_ABI',
141
+ functions: [
142
+ {
143
+ name: 'constructor',
144
+ bytecode: '0af',
145
+ parameters: [
146
+ {
147
+ type: {
148
+ kind: 'struct',
149
+ fields: [
150
+ {
151
+ name: 'name',
152
+ type: {
153
+ sign: 'value',
154
+ width: 5,
155
+ kind: 'integer',
156
+ },
157
+ },
158
+ ],
159
+ },
160
+ },
161
+ ],
162
+ },
163
+ ],
164
+ };
165
+ expect(abiChecker(abi)).toBe(true);
166
+ });
167
+ });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L2NoZWNrZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLElBQUksR0FBUSxDQUFDO0lBRWIsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUN0RCxHQUFHLEdBQUc7WUFDSixJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25FLEdBQUcsR0FBRztZQUNKLElBQUksRUFBRSxVQUFVO1lBQ2hCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDMUMsR0FBRyxHQUFHO1lBQ0osSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQzNFLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0RB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
@@ -0,0 +1,39 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
3
+ import { PublicKey } from '@aztec/types';
4
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
5
+ import { DeployMethod } from '../index.js';
6
+ import { ContractBase } from './contract_base.js';
7
+ /**
8
+ * The Contract class represents a contract and provides utility methods for interacting with it.
9
+ * It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
10
+ * allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
11
+ * to attach the contract instance to a deployed contract on-chain through the AztecRPCClient, which facilitates
12
+ * interaction with Aztec's privacy protocol.
13
+ */
14
+ export declare class Contract extends ContractBase {
15
+ /**
16
+ * Creates a contract instance.
17
+ * @param address - The deployed contract's address.
18
+ * @param abi - The Application Binary Interface for the contract.
19
+ * @param wallet - The wallet to use when interacting with the contract.
20
+ * @returns A promise that resolves to a new Contract instance.
21
+ */
22
+ static at(address: AztecAddress, abi: ContractAbi, wallet: Wallet): Promise<Contract>;
23
+ /**
24
+ * Creates a tx to deploy a new instance of a contract.
25
+ * @param wallet - The wallet for executing the deployment.
26
+ * @param abi - ABI of the contract to deploy.
27
+ * @param args - Arguments for the constructor.
28
+ */
29
+ static deploy(wallet: Wallet, abi: ContractAbi, args: any[]): DeployMethod<Contract>;
30
+ /**
31
+ * Creates a tx to deploy a new instance of a contract using the specified public key to derive the address.
32
+ * @param publicKey - Public key for deriving the address.
33
+ * @param wallet - The wallet for executing the deployment.
34
+ * @param abi - ABI of the contract to deploy.
35
+ * @param args - Arguments for the constructor.
36
+ */
37
+ static deployWithPublicKey(publicKey: PublicKey, wallet: Wallet, abi: ContractAbi, args: any[]): DeployMethod<Contract>;
38
+ }
39
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contract/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAS,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC;;;;;;OAMG;WACiB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQlG;;;;;OAKG;WACW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;IAIlE;;;;;;OAMG;WACW,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;CAGtG"}
@@ -0,0 +1,45 @@
1
+ import { DeployMethod, Point } from '../index.js';
2
+ import { ContractBase } from './contract_base.js';
3
+ /**
4
+ * The Contract class represents a contract and provides utility methods for interacting with it.
5
+ * It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
6
+ * allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
7
+ * to attach the contract instance to a deployed contract on-chain through the AztecRPCClient, which facilitates
8
+ * interaction with Aztec's privacy protocol.
9
+ */
10
+ export class Contract extends ContractBase {
11
+ /**
12
+ * Creates a contract instance.
13
+ * @param address - The deployed contract's address.
14
+ * @param abi - The Application Binary Interface for the contract.
15
+ * @param wallet - The wallet to use when interacting with the contract.
16
+ * @returns A promise that resolves to a new Contract instance.
17
+ */
18
+ static async at(address, abi, wallet) {
19
+ const extendedContractData = await wallet.getExtendedContractData(address);
20
+ if (extendedContractData === undefined) {
21
+ throw new Error('Contract ' + address.toString() + ' is not deployed');
22
+ }
23
+ return new Contract(extendedContractData.getCompleteAddress(), abi, wallet);
24
+ }
25
+ /**
26
+ * Creates a tx to deploy a new instance of a contract.
27
+ * @param wallet - The wallet for executing the deployment.
28
+ * @param abi - ABI of the contract to deploy.
29
+ * @param args - Arguments for the constructor.
30
+ */
31
+ static deploy(wallet, abi, args) {
32
+ return new DeployMethod(Point.ZERO, wallet, abi, args);
33
+ }
34
+ /**
35
+ * Creates a tx to deploy a new instance of a contract using the specified public key to derive the address.
36
+ * @param publicKey - Public key for deriving the address.
37
+ * @param wallet - The wallet for executing the deployment.
38
+ * @param abi - ABI of the contract to deploy.
39
+ * @param args - Arguments for the constructor.
40
+ */
41
+ static deployWithPublicKey(publicKey, wallet, abi, args) {
42
+ return new DeployMethod(publicKey, wallet, abi, args);
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsWUFBWTtJQUN4Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEdBQWdCLEVBQUUsTUFBYztRQUM1RSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sTUFBTSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLElBQUksb0JBQW9CLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWMsRUFBRSxHQUFnQixFQUFFLElBQVc7UUFDaEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFvQixFQUFFLE1BQWMsRUFBRSxHQUFnQixFQUFFLElBQVc7UUFDbkcsT0FBTyxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../src/contract/contract.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,141 @@
1
+ import { CompleteAddress, EthAddress } from '@aztec/circuits.js';
2
+ import { ABIParameterVisibility, FunctionType } from '@aztec/foundation/abi';
3
+ import { ExtendedContractData, randomContractAbi, randomDeployedContract, } from '@aztec/types';
4
+ import { mock } from 'jest-mock-extended';
5
+ import { Contract } from './contract.js';
6
+ describe('Contract Class', () => {
7
+ let wallet;
8
+ let resolvedExtendedContractData;
9
+ let contractAddress;
10
+ let account;
11
+ const mockTx = { type: 'Tx' };
12
+ const mockTxRequest = { type: 'TxRequest' };
13
+ const mockTxHash = { type: 'TxHash' };
14
+ const mockTxReceipt = { type: 'TxReceipt' };
15
+ const mockViewResultValue = 1;
16
+ const mockNodeInfo = { version: 1, chainId: 2, rollupAddress: EthAddress.random(), client: '' };
17
+ const defaultAbi = {
18
+ name: 'FooContract',
19
+ functions: [
20
+ {
21
+ name: 'bar',
22
+ functionType: FunctionType.SECRET,
23
+ isInternal: false,
24
+ parameters: [
25
+ {
26
+ name: 'value',
27
+ type: {
28
+ kind: 'field',
29
+ },
30
+ visibility: ABIParameterVisibility.PUBLIC,
31
+ },
32
+ {
33
+ name: 'value',
34
+ type: {
35
+ kind: 'field',
36
+ },
37
+ visibility: ABIParameterVisibility.SECRET,
38
+ },
39
+ ],
40
+ returnTypes: [],
41
+ bytecode: '0af',
42
+ },
43
+ {
44
+ name: 'baz',
45
+ functionType: FunctionType.OPEN,
46
+ isInternal: false,
47
+ parameters: [],
48
+ returnTypes: [],
49
+ bytecode: '0be',
50
+ },
51
+ {
52
+ name: 'qux',
53
+ functionType: FunctionType.UNCONSTRAINED,
54
+ isInternal: false,
55
+ parameters: [
56
+ {
57
+ name: 'value',
58
+ type: {
59
+ kind: 'field',
60
+ },
61
+ visibility: ABIParameterVisibility.PUBLIC,
62
+ },
63
+ ],
64
+ returnTypes: [
65
+ {
66
+ kind: 'integer',
67
+ sign: '',
68
+ width: 32,
69
+ },
70
+ ],
71
+ bytecode: '0cd',
72
+ },
73
+ ],
74
+ };
75
+ beforeEach(async () => {
76
+ resolvedExtendedContractData = ExtendedContractData.random();
77
+ contractAddress = resolvedExtendedContractData.contractData.contractAddress;
78
+ account = await CompleteAddress.random();
79
+ wallet = mock();
80
+ wallet.createTxExecutionRequest.mockResolvedValue(mockTxRequest);
81
+ wallet.getExtendedContractData.mockResolvedValue(resolvedExtendedContractData);
82
+ wallet.sendTx.mockResolvedValue(mockTxHash);
83
+ wallet.viewTx.mockResolvedValue(mockViewResultValue);
84
+ wallet.getTxReceipt.mockResolvedValue(mockTxReceipt);
85
+ wallet.getNodeInfo.mockResolvedValue(mockNodeInfo);
86
+ wallet.simulateTx.mockResolvedValue(mockTx);
87
+ wallet.getAccounts.mockResolvedValue([account]);
88
+ });
89
+ it('should create and send a contract method tx', async () => {
90
+ const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
91
+ const param0 = 12;
92
+ const param1 = 345n;
93
+ const sentTx = fooContract.methods.bar(param0, param1).send();
94
+ const txHash = await sentTx.getTxHash();
95
+ const receipt = await sentTx.getReceipt();
96
+ expect(txHash).toBe(mockTxHash);
97
+ expect(receipt).toBe(mockTxReceipt);
98
+ expect(wallet.createTxExecutionRequest).toHaveBeenCalledTimes(1);
99
+ expect(wallet.sendTx).toHaveBeenCalledTimes(1);
100
+ expect(wallet.sendTx).toHaveBeenCalledWith(mockTx);
101
+ });
102
+ it('should call view on an unconstrained function', async () => {
103
+ const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
104
+ const result = await fooContract.methods.qux(123n).view({
105
+ from: account.address,
106
+ });
107
+ expect(wallet.viewTx).toHaveBeenCalledTimes(1);
108
+ expect(wallet.viewTx).toHaveBeenCalledWith('qux', [123n], contractAddress, account.address);
109
+ expect(result).toBe(mockViewResultValue);
110
+ });
111
+ it('should not call create on an unconstrained function', async () => {
112
+ const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
113
+ await expect(fooContract.methods.qux().create()).rejects.toThrow();
114
+ });
115
+ it('should not call view on a secret or open function', async () => {
116
+ const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
117
+ expect(() => fooContract.methods.bar().view()).toThrow();
118
+ expect(() => fooContract.methods.baz().view()).toThrow();
119
+ });
120
+ it('should add contract and dependencies to aztec rpc', async () => {
121
+ const entry = {
122
+ abi: randomContractAbi(),
123
+ completeAddress: resolvedExtendedContractData.getCompleteAddress(),
124
+ portalContract: EthAddress.random(),
125
+ };
126
+ const contract = await Contract.at(entry.completeAddress.address, entry.abi, wallet);
127
+ {
128
+ await contract.attach(entry.portalContract);
129
+ expect(wallet.addContracts).toHaveBeenCalledTimes(1);
130
+ expect(wallet.addContracts).toHaveBeenCalledWith([entry]);
131
+ wallet.addContracts.mockClear();
132
+ }
133
+ {
134
+ const dependencies = [await randomDeployedContract(), await randomDeployedContract()];
135
+ await contract.attach(entry.portalContract, dependencies);
136
+ expect(wallet.addContracts).toHaveBeenCalledTimes(1);
137
+ expect(wallet.addContracts).toHaveBeenCalledWith([entry, ...dependencies]);
138
+ }
139
+ });
140
+ });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRixPQUFPLEVBRUwsb0JBQW9CLEVBTXBCLGlCQUFpQixFQUNqQixzQkFBc0IsR0FDdkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFhLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLE1BQXlCLENBQUM7SUFDOUIsSUFBSSw0QkFBa0QsQ0FBQztJQUN2RCxJQUFJLGVBQTZCLENBQUM7SUFDbEMsSUFBSSxPQUF3QixDQUFDO0lBRTdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBZSxDQUFDO0lBQzNDLE1BQU0sYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBK0IsQ0FBQztJQUN6RSxNQUFNLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW1CLENBQUM7SUFDdkQsTUFBTSxhQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFzQixDQUFDO0lBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sWUFBWSxHQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTFHLE1BQU0sVUFBVSxH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
@@ -0,0 +1,72 @@
1
+ import { ContractAbi, FunctionSelector } from '@aztec/foundation/abi';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { CompleteAddress, DeployedContract } from '@aztec/types';
4
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
5
+ import { ContractFunctionInteraction } from './contract_function_interaction.js';
6
+ /**
7
+ * Type representing a contract method that returns a ContractFunctionInteraction instance
8
+ * and has a readonly 'selector' property of type Buffer. Takes any number of arguments.
9
+ */
10
+ export type ContractMethod = ((...args: any[]) => ContractFunctionInteraction) & {
11
+ /**
12
+ * The unique identifier for a contract function in bytecode.
13
+ */
14
+ readonly selector: FunctionSelector;
15
+ };
16
+ /**
17
+ * Abstract implementation of a contract extended by the Contract class and generated contract types.
18
+ */
19
+ export declare class ContractBase {
20
+ /**
21
+ * The deployed contract's complete address.
22
+ */
23
+ readonly completeAddress: CompleteAddress;
24
+ /**
25
+ * The Application Binary Interface for the contract.
26
+ */
27
+ readonly abi: ContractAbi;
28
+ /**
29
+ * The wallet.
30
+ */
31
+ protected wallet: Wallet;
32
+ /**
33
+ * An object containing contract methods mapped to their respective names.
34
+ */
35
+ methods: {
36
+ [name: string]: ContractMethod;
37
+ };
38
+ protected constructor(
39
+ /**
40
+ * The deployed contract's complete address.
41
+ */
42
+ completeAddress: CompleteAddress,
43
+ /**
44
+ * The Application Binary Interface for the contract.
45
+ */
46
+ abi: ContractAbi,
47
+ /**
48
+ * The wallet.
49
+ */
50
+ wallet: Wallet);
51
+ /**
52
+ * Address of the contract.
53
+ */
54
+ get address(): import("@aztec/circuits.js").AztecAddress;
55
+ /**
56
+ * Creates a new instance of the contract wrapper attached to a different wallet.
57
+ * @param wallet - Wallet to use for sending txs.
58
+ * @returns A new contract instance.
59
+ */
60
+ withWallet(wallet: Wallet): this;
61
+ /**
62
+ * Attach the current contract instance to a portal contract and optionally add its dependencies.
63
+ * The function will return a promise that resolves when all contracts have been added to the AztecRPCClient.
64
+ * This is useful when you need to interact with a deployed contract that has multiple nested contracts.
65
+ *
66
+ * @param portalContract - The Ethereum address of the portal contract.
67
+ * @param dependencies - An optional array of additional DeployedContract instances to be attached.
68
+ * @returns A promise that resolves when all contracts are successfully added to the AztecRPCClient.
69
+ */
70
+ attach(portalContract: EthAddress, dependencies?: DeployedContract[]): Promise<void>;
71
+ }
72
+ //# sourceMappingURL=contract_base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_base.d.ts","sourceRoot":"","sources":["../../src/contract/contract_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,2BAA2B,CAAC,GAAG;IAC/E;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IAOrB;;OAEG;aACa,eAAe,EAAE,eAAe;IAChD;;OAEG;aACa,GAAG,EAAE,WAAW;IAChC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAjB1B;;OAEG;IACI,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAM;IAExD,SAAS;IACP;;OAEG;IACa,eAAe,EAAE,eAAe;IAChD;;OAEG;IACa,GAAG,EAAE,WAAW;IAChC;;OAEG;IACO,MAAM,EAAE,MAAM;IAmB1B;;OAEG;IACH,IAAW,OAAO,8CAEjB;IAED;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvC;;;;;;;;OAQG;IACI,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,GAAE,gBAAgB,EAAO;CAQhF"}