@aztec/aztec.js 0.1.0-alpha13

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 (101) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/.tsbuildinfo +1 -0
  3. package/README.md +44 -0
  4. package/dest/account_impl/account_collection.d.ts +24 -0
  5. package/dest/account_impl/account_collection.d.ts.map +1 -0
  6. package/dest/account_impl/account_collection.js +36 -0
  7. package/dest/account_impl/account_contract.d.ts +45 -0
  8. package/dest/account_impl/account_contract.d.ts.map +1 -0
  9. package/dest/account_impl/account_contract.js +108 -0
  10. package/dest/account_impl/index.d.ts +11 -0
  11. package/dest/account_impl/index.d.ts.map +1 -0
  12. package/dest/account_impl/index.js +3 -0
  13. package/dest/auth/ecdsa.d.ts +13 -0
  14. package/dest/auth/ecdsa.d.ts.map +1 -0
  15. package/dest/auth/ecdsa.js +17 -0
  16. package/dest/auth/index.d.ts +25 -0
  17. package/dest/auth/index.d.ts.map +1 -0
  18. package/dest/auth/index.js +13 -0
  19. package/dest/aztec_rpc_client/aztec_rpc_client.d.ts +25 -0
  20. package/dest/aztec_rpc_client/aztec_rpc_client.d.ts.map +1 -0
  21. package/dest/aztec_rpc_client/aztec_rpc_client.js +20 -0
  22. package/dest/aztec_rpc_client/index.d.ts +3 -0
  23. package/dest/aztec_rpc_client/index.d.ts.map +1 -0
  24. package/dest/aztec_rpc_client/index.js +3 -0
  25. package/dest/aztec_rpc_client/wallet.d.ts +44 -0
  26. package/dest/aztec_rpc_client/wallet.d.ts.map +1 -0
  27. package/dest/aztec_rpc_client/wallet.js +69 -0
  28. package/dest/contract/checker.d.ts +11 -0
  29. package/dest/contract/checker.d.ts.map +1 -0
  30. package/dest/contract/checker.js +98 -0
  31. package/dest/contract/checker.test.d.ts +2 -0
  32. package/dest/contract/checker.test.d.ts.map +1 -0
  33. package/dest/contract/checker.test.js +168 -0
  34. package/dest/contract/contract.d.ts +69 -0
  35. package/dest/contract/contract.d.ts.map +1 -0
  36. package/dest/contract/contract.js +64 -0
  37. package/dest/contract/contract.test.d.ts +2 -0
  38. package/dest/contract/contract.test.d.ts.map +1 -0
  39. package/dest/contract/contract.test.js +141 -0
  40. package/dest/contract/contract_function_interaction.d.ts +81 -0
  41. package/dest/contract/contract_function_interaction.d.ts.map +1 -0
  42. package/dest/contract/contract_function_interaction.js +96 -0
  43. package/dest/contract/index.d.ts +4 -0
  44. package/dest/contract/index.d.ts.map +1 -0
  45. package/dest/contract/index.js +4 -0
  46. package/dest/contract/sent_tx.d.ts +36 -0
  47. package/dest/contract/sent_tx.d.ts.map +1 -0
  48. package/dest/contract/sent_tx.js +50 -0
  49. package/dest/contract_deployer/contract_deployer.d.ts +23 -0
  50. package/dest/contract_deployer/contract_deployer.d.ts.map +1 -0
  51. package/dest/contract_deployer/contract_deployer.js +25 -0
  52. package/dest/contract_deployer/contract_deployer.test.d.ts +2 -0
  53. package/dest/contract_deployer/contract_deployer.test.d.ts.map +1 -0
  54. package/dest/contract_deployer/contract_deployer.test.js +48 -0
  55. package/dest/contract_deployer/deploy_method.d.ts +72 -0
  56. package/dest/contract_deployer/deploy_method.d.ts.map +1 -0
  57. package/dest/contract_deployer/deploy_method.js +114 -0
  58. package/dest/contract_deployer/index.d.ts +2 -0
  59. package/dest/contract_deployer/index.d.ts.map +1 -0
  60. package/dest/contract_deployer/index.js +2 -0
  61. package/dest/index.d.ts +8 -0
  62. package/dest/index.d.ts.map +1 -0
  63. package/dest/index.js +9 -0
  64. package/dest/utils/account.d.ts +9 -0
  65. package/dest/utils/account.d.ts.map +1 -0
  66. package/dest/utils/account.js +38 -0
  67. package/dest/utils/index.d.ts +4 -0
  68. package/dest/utils/index.d.ts.map +1 -0
  69. package/dest/utils/index.js +4 -0
  70. package/dest/utils/pub_key.d.ts +18 -0
  71. package/dest/utils/pub_key.d.ts.map +1 -0
  72. package/dest/utils/pub_key.js +25 -0
  73. package/dest/utils/secrets.d.ts +8 -0
  74. package/dest/utils/secrets.d.ts.map +1 -0
  75. package/dest/utils/secrets.js +12 -0
  76. package/package.json +14 -0
  77. package/src/account_impl/account_collection.ts +41 -0
  78. package/src/account_impl/account_contract.ts +173 -0
  79. package/src/account_impl/index.ts +12 -0
  80. package/src/auth/ecdsa.ts +18 -0
  81. package/src/auth/index.ts +32 -0
  82. package/src/aztec_rpc_client/aztec_rpc_client.ts +59 -0
  83. package/src/aztec_rpc_client/index.ts +2 -0
  84. package/src/aztec_rpc_client/wallet.ts +87 -0
  85. package/src/contract/checker.test.ts +177 -0
  86. package/src/contract/checker.ts +117 -0
  87. package/src/contract/contract.test.ts +160 -0
  88. package/src/contract/contract.ts +80 -0
  89. package/src/contract/contract_function_interaction.ts +141 -0
  90. package/src/contract/index.ts +3 -0
  91. package/src/contract/sent_tx.ts +55 -0
  92. package/src/contract_deployer/contract_deployer.test.ts +56 -0
  93. package/src/contract_deployer/contract_deployer.ts +24 -0
  94. package/src/contract_deployer/deploy_method.ts +165 -0
  95. package/src/contract_deployer/index.ts +1 -0
  96. package/src/index.ts +9 -0
  97. package/src/utils/account.ts +59 -0
  98. package/src/utils/index.ts +3 -0
  99. package/src/utils/pub_key.ts +26 -0
  100. package/src/utils/secrets.ts +12 -0
  101. package/tsconfig.json +26 -0
@@ -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,69 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { DeployedContract } from '@aztec/aztec-rpc';
3
+ import { ContractAbi } from '@aztec/foundation/abi';
4
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
5
+ import { EthAddress } from '@aztec/foundation/eth-address';
6
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
7
+ import { ContractFunctionInteraction } from './contract_function_interaction.js';
8
+ /**
9
+ * Type representing a contract method that returns a ContractFunctionInteraction instance
10
+ * and has a readonly 'selector' property of type Buffer. Takes any number of arguments.
11
+ */
12
+ type ContractMethod = ((...args: any[]) => ContractFunctionInteraction) & {
13
+ /**
14
+ * The unique identifier for a contract function in bytecode.
15
+ */
16
+ readonly selector: Buffer;
17
+ };
18
+ /**
19
+ * The Contract class represents a contract and provides utility methods for interacting with it.
20
+ * It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
21
+ * allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
22
+ * to attach the contract instance to a deployed contract on-chain through the AztecRPCClient, which facilitates
23
+ * interaction with Aztec's privacy protocol.
24
+ */
25
+ export declare class Contract {
26
+ /**
27
+ * The deployed contract's address.
28
+ */
29
+ readonly address: AztecAddress;
30
+ /**
31
+ * The Application Binary Interface for the contract.
32
+ */
33
+ readonly abi: ContractAbi;
34
+ /**
35
+ * The wallet.
36
+ */
37
+ private wallet;
38
+ /**
39
+ * An object containing contract methods mapped to their respective names.
40
+ */
41
+ methods: {
42
+ [name: string]: ContractMethod;
43
+ };
44
+ constructor(
45
+ /**
46
+ * The deployed contract's address.
47
+ */
48
+ address: AztecAddress,
49
+ /**
50
+ * The Application Binary Interface for the contract.
51
+ */
52
+ abi: ContractAbi,
53
+ /**
54
+ * The wallet.
55
+ */
56
+ wallet: Wallet);
57
+ /**
58
+ * Attach the current contract instance to a portal contract and optionally add its dependencies.
59
+ * The function will return a promise that resolves when all contracts have been added to the AztecRPCClient.
60
+ * This is useful when you need to interact with a deployed contract that has multiple nested contracts.
61
+ *
62
+ * @param portalContract - The Ethereum address of the portal contract.
63
+ * @param dependencies - An optional array of additional DeployedContract instances to be attached.
64
+ * @returns A promise that resolves when all contracts are successfully added to the AztecRPCClient.
65
+ */
66
+ attach(portalContract: EthAddress, dependencies?: DeployedContract[]): Promise<void>;
67
+ }
68
+ export {};
69
+ //# 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,gBAAgB,EAA4B,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAe,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;;GAGG;AACH,KAAK,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,2BAA2B,CAAC,GAAG;IACxE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,QAAQ;IAOjB;;OAEG;aACa,OAAO,EAAE,YAAY;IACrC;;OAEG;aACa,GAAG,EAAE,WAAW;IAChC;;OAEG;IACH,OAAO,CAAC,MAAM;IAjBhB;;OAEG;IACI,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAM;;IAGtD;;OAEG;IACa,OAAO,EAAE,YAAY;IACrC;;OAEG;IACa,GAAG,EAAE,WAAW;IAChC;;OAEG;IACK,MAAM,EAAE,MAAM;IAmBxB;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,GAAE,gBAAgB,EAAO;CAQzE"}
@@ -0,0 +1,64 @@
1
+ import { generateFunctionSelector } from '@aztec/aztec-rpc';
2
+ import { ContractFunctionInteraction } from './contract_function_interaction.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 {
11
+ constructor(
12
+ /**
13
+ * The deployed contract's address.
14
+ */
15
+ address,
16
+ /**
17
+ * The Application Binary Interface for the contract.
18
+ */
19
+ abi,
20
+ /**
21
+ * The wallet.
22
+ */
23
+ wallet) {
24
+ this.address = address;
25
+ this.abi = abi;
26
+ this.wallet = wallet;
27
+ /**
28
+ * An object containing contract methods mapped to their respective names.
29
+ */
30
+ this.methods = {};
31
+ abi.functions.forEach((f) => {
32
+ const interactionFunction = (...args) => {
33
+ return new ContractFunctionInteraction(this.wallet, this.address, f, args);
34
+ };
35
+ this.methods[f.name] = Object.assign(interactionFunction, {
36
+ /**
37
+ * A getter for users to fetch the function selector.
38
+ * @returns Selector of the function.
39
+ */
40
+ get selector() {
41
+ return generateFunctionSelector(f.name, f.parameters);
42
+ },
43
+ });
44
+ });
45
+ }
46
+ /**
47
+ * Attach the current contract instance to a portal contract and optionally add its dependencies.
48
+ * The function will return a promise that resolves when all contracts have been added to the AztecRPCClient.
49
+ * This is useful when you need to interact with a deployed contract that has multiple nested contracts.
50
+ *
51
+ * @param portalContract - The Ethereum address of the portal contract.
52
+ * @param dependencies - An optional array of additional DeployedContract instances to be attached.
53
+ * @returns A promise that resolves when all contracts are successfully added to the AztecRPCClient.
54
+ */
55
+ attach(portalContract, dependencies = []) {
56
+ const deployedContract = {
57
+ abi: this.abi,
58
+ address: this.address,
59
+ portalContract,
60
+ };
61
+ return this.wallet.addContracts([deployedContract, ...dependencies]);
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQix3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBYWpGOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBTW5CO0lBQ0U7O09BRUc7SUFDYSxPQUFxQjtJQUNyQzs7T0FFRztJQUNhLEdBQWdCO0lBQ2hDOztPQUVHO0lBQ0ssTUFBYztRQVJOLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFJckIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUl4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakJ4Qjs7V0FFRztRQUNJLFlBQU8sR0FBdUMsRUFBRSxDQUFDO1FBZ0J0RCxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO2dCQUM3QyxPQUFPLElBQUksMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RSxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFO2dCQUN4RDs7O21CQUdHO2dCQUNILElBQUksUUFBUTtvQkFDVixPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsY0FBMEIsRUFBRSxlQUFtQyxFQUFFO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3pDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixjQUFjO1NBQ2YsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGIn0=
@@ -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 { AztecAddress, EthAddress } from '@aztec/aztec-rpc';
2
+ import { mock } from 'jest-mock-extended';
3
+ import { ABIParameterVisibility, FunctionType } from '@aztec/foundation/abi';
4
+ import { randomBytes } from '@aztec/foundation/crypto';
5
+ import { Contract } from './contract.js';
6
+ describe('Contract Class', () => {
7
+ let wallet;
8
+ const contractAddress = AztecAddress.random();
9
+ const account = AztecAddress.random();
10
+ const mockTx = { type: 'Tx' };
11
+ const mockTxRequest = { type: 'TxRequest' };
12
+ const mockTxHash = { type: 'TxHash' };
13
+ const mockTxReceipt = { type: 'TxReceipt' };
14
+ const mockViewResultValue = 1;
15
+ const mockNodeInfo = { version: 1, chainId: 2 };
16
+ const defaultAbi = {
17
+ name: 'FooContract',
18
+ functions: [
19
+ {
20
+ name: 'bar',
21
+ functionType: FunctionType.SECRET,
22
+ parameters: [
23
+ {
24
+ name: 'value',
25
+ type: {
26
+ kind: 'field',
27
+ },
28
+ visibility: ABIParameterVisibility.PUBLIC,
29
+ },
30
+ {
31
+ name: 'value',
32
+ type: {
33
+ kind: 'field',
34
+ },
35
+ visibility: ABIParameterVisibility.SECRET,
36
+ },
37
+ ],
38
+ returnTypes: [],
39
+ bytecode: '0af',
40
+ },
41
+ {
42
+ name: 'baz',
43
+ functionType: FunctionType.OPEN,
44
+ parameters: [],
45
+ returnTypes: [],
46
+ bytecode: '0be',
47
+ },
48
+ {
49
+ name: 'qux',
50
+ functionType: FunctionType.UNCONSTRAINED,
51
+ parameters: [
52
+ {
53
+ name: 'value',
54
+ type: {
55
+ kind: 'field',
56
+ },
57
+ visibility: ABIParameterVisibility.PUBLIC,
58
+ },
59
+ ],
60
+ returnTypes: [
61
+ {
62
+ kind: 'integer',
63
+ sign: '',
64
+ width: 32,
65
+ },
66
+ ],
67
+ bytecode: '0cd',
68
+ },
69
+ ],
70
+ };
71
+ const randomContractAbi = () => ({
72
+ name: randomBytes(4).toString('hex'),
73
+ functions: [],
74
+ });
75
+ const randomDeployContract = () => ({
76
+ abi: randomContractAbi(),
77
+ address: AztecAddress.random(),
78
+ portalContract: EthAddress.random(),
79
+ });
80
+ beforeEach(() => {
81
+ wallet = mock();
82
+ wallet.createAuthenticatedTxRequest.mockResolvedValue(mockTxRequest);
83
+ wallet.sendTx.mockResolvedValue(mockTxHash);
84
+ wallet.viewTx.mockResolvedValue(mockViewResultValue);
85
+ wallet.getTxReceipt.mockResolvedValue(mockTxReceipt);
86
+ wallet.getNodeInfo.mockResolvedValue(mockNodeInfo);
87
+ wallet.simulateTx.mockResolvedValue(mockTx);
88
+ });
89
+ it('should create and send a contract method tx', async () => {
90
+ const fooContract = new Contract(contractAddress, defaultAbi, wallet);
91
+ const param0 = 12;
92
+ const param1 = 345n;
93
+ const sentTx = fooContract.methods.bar(param0, param1).send({
94
+ from: account,
95
+ });
96
+ const txHash = await sentTx.getTxHash();
97
+ const receipt = await sentTx.getReceipt();
98
+ expect(txHash).toBe(mockTxHash);
99
+ expect(receipt).toBe(mockTxReceipt);
100
+ expect(wallet.createAuthenticatedTxRequest).toHaveBeenCalledTimes(1);
101
+ expect(wallet.sendTx).toHaveBeenCalledTimes(1);
102
+ expect(wallet.sendTx).toHaveBeenCalledWith(mockTx);
103
+ });
104
+ it('should call view on an unconstrained function', async () => {
105
+ const fooContract = new Contract(contractAddress, defaultAbi, wallet);
106
+ const result = await fooContract.methods.qux(123n).view({
107
+ from: account,
108
+ });
109
+ expect(wallet.viewTx).toHaveBeenCalledTimes(1);
110
+ expect(wallet.viewTx).toHaveBeenCalledWith('qux', [123n], contractAddress, account);
111
+ expect(result).toBe(mockViewResultValue);
112
+ });
113
+ it('should not call send on an unconstrained function', () => {
114
+ const fooContract = new Contract(contractAddress, defaultAbi, wallet);
115
+ expect(() => fooContract.methods.qux().send({
116
+ from: account,
117
+ })).toThrow();
118
+ });
119
+ it('should not call view on a secret or open function', () => {
120
+ const fooContract = new Contract(contractAddress, defaultAbi, wallet);
121
+ expect(() => fooContract.methods.bar().view()).toThrow();
122
+ expect(() => fooContract.methods.baz().view()).toThrow();
123
+ });
124
+ it('should add contract and dependencies to aztec rpc', async () => {
125
+ const entry = randomDeployContract();
126
+ const contract = new Contract(entry.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 = [randomDeployContract(), randomDeployContract()];
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQW9CLFVBQVUsRUFBbUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRyxPQUFPLEVBQWEsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxFQUFFLHNCQUFzQixFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsSUFBSSxNQUF5QixDQUFDO0lBRTlCLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFlLENBQUM7SUFDM0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUErQixDQUFDO0lBQ3pFLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBbUIsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQXNCLENBQUM7SUFDaEUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxZQUFZLEdBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUUxRCxNQUFNLFVBQVUsR0FBZ0I7UUFDOUIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsSUFB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
@@ -0,0 +1,81 @@
1
+ import { Tx } from '@aztec/aztec-rpc';
2
+ import { AztecAddress, Fr } from '@aztec/circuits.js';
3
+ import { FunctionAbi } from '@aztec/foundation/abi';
4
+ import { ExecutionRequest, TxExecutionRequest } from '@aztec/types';
5
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
6
+ import { SentTx } from './sent_tx.js';
7
+ /**
8
+ * Represents options for calling a (constrained) function in a contract.
9
+ * Allows the user to specify the sender address and nonce for a transaction.
10
+ */
11
+ export interface SendMethodOptions {
12
+ /**
13
+ * Sender's address initiating the transaction.
14
+ */
15
+ from?: AztecAddress;
16
+ /**
17
+ * The nonce representing the order of transactions sent by the address.
18
+ */
19
+ nonce?: Fr;
20
+ }
21
+ /**
22
+ * Represents the options for a view method in a contract function interaction.
23
+ * Allows specifying the address from which the view method should be called.
24
+ */
25
+ export interface ViewMethodOptions {
26
+ /**
27
+ * The sender's Aztec address.
28
+ */
29
+ from?: AztecAddress;
30
+ }
31
+ /**
32
+ * This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
33
+ * It contains available interactions one can call on a method.
34
+ */
35
+ export declare class ContractFunctionInteraction {
36
+ protected wallet: Wallet;
37
+ protected contractAddress: AztecAddress;
38
+ protected functionDao: FunctionAbi;
39
+ protected args: any[];
40
+ protected tx?: Tx;
41
+ protected txRequest?: TxExecutionRequest;
42
+ constructor(wallet: Wallet, contractAddress: AztecAddress, functionDao: FunctionAbi, args: any[]);
43
+ /**
44
+ * Create an Aztec transaction instance by combining the transaction request and its signature.
45
+ * This function will first check if a signature exists, and if not, it will call the `sign` method
46
+ * to obtain the signature before creating the transaction. Throws an error if the function is
47
+ * of unconstrained type or if the transaction request and signature are missing.
48
+ *
49
+ * @param options - An optional object containing additional configuration for the transaction.
50
+ * @returns A Promise that resolves to a transaction instance.
51
+ */
52
+ create(options?: SendMethodOptions): Promise<TxExecutionRequest>;
53
+ /**
54
+ * Simulates a transaction's execution.
55
+ * @param options - optional arguments to be used in the creation of the transaction
56
+ * @returns The resulting transaction
57
+ */
58
+ simulate(options: SendMethodOptions): Promise<Tx>;
59
+ protected getExecutionRequest(to: AztecAddress, from?: AztecAddress): ExecutionRequest;
60
+ /**
61
+ * Sends a transaction to the contract function with the specified options.
62
+ * This function throws an error if called on an unconstrained function.
63
+ * It creates and signs the transaction if necessary, and returns a SentTx instance,
64
+ * which can be used to track the transaction status, receipt, and events.
65
+ *
66
+ * @param options - An optional object containing 'from' property representing
67
+ * the AztecAddress of the sender. If not provided, the default address is used.
68
+ * @returns A SentTx instance for tracking the transaction status and information.
69
+ */
70
+ send(options?: SendMethodOptions): SentTx;
71
+ /**
72
+ * Execute a view (read-only) transaction on an unconstrained function.
73
+ * This method is used to call functions that do not modify the contract state and only return data.
74
+ * Throws an error if called on a non-unconstrained function.
75
+ *
76
+ * @param options - An optional object containing additional configuration for the transaction.
77
+ * @returns The result of the view transaction as returned by the contract function.
78
+ */
79
+ view(options?: ViewMethodOptions): Promise<any>;
80
+ }
81
+ //# sourceMappingURL=contract_function_interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,EAAE,EAA2B,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,2BAA2B;IAKpC,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,eAAe,EAAE,YAAY;IACvC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;IAPvB,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAClB,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;gBAG7B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,GAAG,EAAE;IAGvB;;;;;;;;OAQG;IACU,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAcjF;;;;OAIG;IACU,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC;IAO9D,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,gBAAgB;IAiBtF;;;;;;;;;OASG;IACI,IAAI,CAAC,OAAO,GAAE,iBAAsB;IAa3C;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE,iBAAsB;CAQ5C"}