@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,96 @@
1
+ import { encodeArguments } from '@aztec/acir-simulator';
2
+ import { generateFunctionSelector } from '@aztec/aztec-rpc';
3
+ import { AztecAddress, Fr, FunctionData, TxContext } from '@aztec/circuits.js';
4
+ import { FunctionType } from '@aztec/foundation/abi';
5
+ import { SentTx } from './sent_tx.js';
6
+ /**
7
+ * This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
8
+ * It contains available interactions one can call on a method.
9
+ */
10
+ export class ContractFunctionInteraction {
11
+ constructor(wallet, contractAddress, functionDao, args) {
12
+ this.wallet = wallet;
13
+ this.contractAddress = contractAddress;
14
+ this.functionDao = functionDao;
15
+ this.args = args;
16
+ }
17
+ /**
18
+ * Create an Aztec transaction instance by combining the transaction request and its signature.
19
+ * This function will first check if a signature exists, and if not, it will call the `sign` method
20
+ * to obtain the signature before creating the transaction. Throws an error if the function is
21
+ * of unconstrained type or if the transaction request and signature are missing.
22
+ *
23
+ * @param options - An optional object containing additional configuration for the transaction.
24
+ * @returns A Promise that resolves to a transaction instance.
25
+ */
26
+ async create(options = {}) {
27
+ if (this.functionDao.functionType === FunctionType.UNCONSTRAINED) {
28
+ throw new Error("Can't call `create` on an unconstrained function.");
29
+ }
30
+ if (!this.txRequest) {
31
+ const executionRequest = this.getExecutionRequest(this.contractAddress, options.from);
32
+ const nodeInfo = await this.wallet.getNodeInfo();
33
+ const txContext = TxContext.empty(new Fr(nodeInfo.chainId), new Fr(nodeInfo.version));
34
+ const txRequest = await this.wallet.createAuthenticatedTxRequest([executionRequest], txContext);
35
+ this.txRequest = txRequest;
36
+ }
37
+ return this.txRequest;
38
+ }
39
+ /**
40
+ * Simulates a transaction's execution.
41
+ * @param options - optional arguments to be used in the creation of the transaction
42
+ * @returns The resulting transaction
43
+ */
44
+ async simulate(options) {
45
+ const txRequest = this.txRequest ?? (await this.create(options));
46
+ // TODO: Why do we need from separately, and cannot get it from txRequest.origin? When would they differ?
47
+ this.tx = await this.wallet.simulateTx(txRequest, txRequest.origin);
48
+ return this.tx;
49
+ }
50
+ getExecutionRequest(to, from) {
51
+ const flatArgs = encodeArguments(this.functionDao, this.args);
52
+ const functionData = new FunctionData(generateFunctionSelector(this.functionDao.name, this.functionDao.parameters), this.functionDao.functionType === FunctionType.SECRET, this.functionDao.name === 'constructor');
53
+ return {
54
+ args: flatArgs,
55
+ functionData,
56
+ to,
57
+ from: from || AztecAddress.ZERO,
58
+ };
59
+ }
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 = {}) {
71
+ if (this.functionDao.functionType === FunctionType.UNCONSTRAINED) {
72
+ throw new Error("Can't call `send` on an unconstrained function.");
73
+ }
74
+ const promise = (async () => {
75
+ const tx = this.tx ?? (await this.simulate(options));
76
+ return this.wallet.sendTx(tx);
77
+ })();
78
+ return new SentTx(this.wallet, promise);
79
+ }
80
+ /**
81
+ * Execute a view (read-only) transaction on an unconstrained function.
82
+ * This method is used to call functions that do not modify the contract state and only return data.
83
+ * Throws an error if called on a non-unconstrained function.
84
+ *
85
+ * @param options - An optional object containing additional configuration for the transaction.
86
+ * @returns The result of the view transaction as returned by the contract function.
87
+ */
88
+ view(options = {}) {
89
+ if (this.functionDao.functionType !== FunctionType.UNCONSTRAINED) {
90
+ throw new Error('Can only call `view` on an unconstrained function.');
91
+ }
92
+ const { from } = options;
93
+ return this.wallet.viewTx(this.functionDao.name, this.args, this.contractAddress, from);
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25faW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvY29udHJhY3RfZnVuY3Rpb25faW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBTSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQTRCdEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQUl0QyxZQUNZLE1BQWMsRUFDZCxlQUE2QixFQUM3QixXQUF3QixFQUN4QixJQUFXO1FBSFgsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFjO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQU87SUFDcEIsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUE2QixFQUFFO1FBQ2pELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RixN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
@@ -0,0 +1,4 @@
1
+ export * from './contract.js';
2
+ export * from './contract_function_interaction.js';
3
+ export * from './sent_tx.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './contract.js';
2
+ export * from './contract_function_interaction.js';
3
+ export * from './sent_tx.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGNBQWMsQ0FBQyJ9
@@ -0,0 +1,36 @@
1
+ import { AztecRPC, TxReceipt, TxHash } from '@aztec/aztec-rpc';
2
+ /**
3
+ * The SentTx class represents a sent transaction through the AztecRPCClient, providing methods to fetch
4
+ * its hash, receipt, and mining status.
5
+ */
6
+ export declare class SentTx {
7
+ private arc;
8
+ private txHashPromise;
9
+ constructor(arc: AztecRPC, txHashPromise: Promise<TxHash>);
10
+ /**
11
+ * Retrieves the transaction hash of the SentTx instance.
12
+ * The function internally awaits for the 'txHashPromise' to resolve, and then returns the resolved transaction hash.
13
+ *
14
+ * @returns A promise that resolves to the transaction hash of the SentTx instance.
15
+ */
16
+ getTxHash(): Promise<TxHash>;
17
+ /**
18
+ * Retrieve the transaction receipt associated with the current SentTx instance.
19
+ * The function fetches the transaction hash using 'getTxHash' and then queries
20
+ * the AztecRPCClient to get the corresponding transaction receipt.
21
+ *
22
+ * @returns A promise that resolves to a TxReceipt object representing the fetched transaction receipt.
23
+ */
24
+ getReceipt(): Promise<TxReceipt>;
25
+ /**
26
+ * Checks whether the transaction is mined or not within the specified timeout and retry interval.
27
+ * Resolves to true if the transaction status is 'MINED', false otherwise.
28
+ * Throws an error if the transaction receipt cannot be fetched after the given timeout.
29
+ *
30
+ * @param timeout - The maximum time (in seconds) to wait for the transaction to be mined. A value of 0 means no timeout.
31
+ * @param interval - The time interval (in seconds) between retries to fetch the transaction receipt.
32
+ * @returns A Promise that resolves to a boolean indicating if the transaction is mined or not.
33
+ */
34
+ isMined(timeout?: number, interval?: number): Promise<boolean>;
35
+ }
36
+ //# sourceMappingURL=sent_tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sent_tx.d.ts","sourceRoot":"","sources":["../../src/contract/sent_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AAGzE;;;GAGG;AACH,qBAAa,MAAM;IACL,OAAO,CAAC,GAAG;IAAY,OAAO,CAAC,aAAa;gBAApC,GAAG,EAAE,QAAQ,EAAU,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC;IAEzE;;;;;OAKG;IACU,SAAS;IAItB;;;;;;OAMG;IACU,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAK7C;;;;;;;;OAQG;IACU,OAAO,CAAC,OAAO,SAAI,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC;CAalE"}
@@ -0,0 +1,50 @@
1
+ import { TxStatus } from '@aztec/aztec-rpc';
2
+ import { retryUntil } from '@aztec/foundation/retry';
3
+ /**
4
+ * The SentTx class represents a sent transaction through the AztecRPCClient, providing methods to fetch
5
+ * its hash, receipt, and mining status.
6
+ */
7
+ export class SentTx {
8
+ constructor(arc, txHashPromise) {
9
+ this.arc = arc;
10
+ this.txHashPromise = txHashPromise;
11
+ }
12
+ /**
13
+ * Retrieves the transaction hash of the SentTx instance.
14
+ * The function internally awaits for the 'txHashPromise' to resolve, and then returns the resolved transaction hash.
15
+ *
16
+ * @returns A promise that resolves to the transaction hash of the SentTx instance.
17
+ */
18
+ async getTxHash() {
19
+ return await this.txHashPromise;
20
+ }
21
+ /**
22
+ * Retrieve the transaction receipt associated with the current SentTx instance.
23
+ * The function fetches the transaction hash using 'getTxHash' and then queries
24
+ * the AztecRPCClient to get the corresponding transaction receipt.
25
+ *
26
+ * @returns A promise that resolves to a TxReceipt object representing the fetched transaction receipt.
27
+ */
28
+ async getReceipt() {
29
+ const txHash = await this.getTxHash();
30
+ return await this.arc.getTxReceipt(txHash);
31
+ }
32
+ /**
33
+ * Checks whether the transaction is mined or not within the specified timeout and retry interval.
34
+ * Resolves to true if the transaction status is 'MINED', false otherwise.
35
+ * Throws an error if the transaction receipt cannot be fetched after the given timeout.
36
+ *
37
+ * @param timeout - The maximum time (in seconds) to wait for the transaction to be mined. A value of 0 means no timeout.
38
+ * @param interval - The time interval (in seconds) between retries to fetch the transaction receipt.
39
+ * @returns A Promise that resolves to a boolean indicating if the transaction is mined or not.
40
+ */
41
+ async isMined(timeout = 0, interval = 1) {
42
+ const txHash = await this.getTxHash();
43
+ const receipt = await retryUntil(async () => {
44
+ const txReceipt = await this.arc.getTxReceipt(txHash);
45
+ return txReceipt.status != TxStatus.PENDING ? txReceipt : undefined;
46
+ }, 'isMined', timeout, interval);
47
+ return receipt.status === TxStatus.MINED;
48
+ }
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudF90eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9zZW50X3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBQ2pCLFlBQW9CLEdBQWEsRUFBVSxhQUE4QjtRQUFyRCxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWlCO0lBQUcsQ0FBQztJQUU3RTs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUM5QixLQUFLLElBQUksRUFBRTtZQUNULE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsT0FBTyxTQUFTLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RFLENBQUMsRUFDRCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsQ0FDVCxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDM0MsQ0FBQztDQUNGIn0=
@@ -0,0 +1,23 @@
1
+ import { AztecRPC, Point } from '@aztec/aztec-rpc';
2
+ import { ContractAbi } from '@aztec/foundation/abi';
3
+ import { DeployMethod } from './deploy_method.js';
4
+ /**
5
+ * A class for deploying contract.
6
+ */
7
+ export declare class ContractDeployer {
8
+ private abi;
9
+ private arc;
10
+ private publicKey?;
11
+ constructor(abi: ContractAbi, arc: AztecRPC, publicKey?: Point | undefined);
12
+ /**
13
+ * Deploy a contract using the provided ABI and constructor arguments.
14
+ * This function creates a new DeployMethod instance that can be used to send deployment transactions
15
+ * and query deployment status. The method accepts any number of constructor arguments, which will
16
+ * be passed to the contract's constructor during deployment.
17
+ *
18
+ * @param args - The constructor arguments for the contract being deployed.
19
+ * @returns A DeployMethod instance configured with the ABI, AztecRPCClient, and constructor arguments.
20
+ */
21
+ deploy(...args: any[]): DeployMethod;
22
+ }
23
+ //# sourceMappingURL=contract_deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_deployer.d.ts","sourceRoot":"","sources":["../../src/contract_deployer/contract_deployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;IAAe,OAAO,CAAC,GAAG;IAAY,OAAO,CAAC,SAAS,CAAC;gBAA3D,GAAG,EAAE,WAAW,EAAU,GAAG,EAAE,QAAQ,EAAU,SAAS,CAAC,mBAAW;IAE1F;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;CAG7B"}
@@ -0,0 +1,25 @@
1
+ import { Point } from '@aztec/aztec-rpc';
2
+ import { DeployMethod } from './deploy_method.js';
3
+ /**
4
+ * A class for deploying contract.
5
+ */
6
+ export class ContractDeployer {
7
+ constructor(abi, arc, publicKey) {
8
+ this.abi = abi;
9
+ this.arc = arc;
10
+ this.publicKey = publicKey;
11
+ }
12
+ /**
13
+ * Deploy a contract using the provided ABI and constructor arguments.
14
+ * This function creates a new DeployMethod instance that can be used to send deployment transactions
15
+ * and query deployment status. The method accepts any number of constructor arguments, which will
16
+ * be passed to the contract's constructor during deployment.
17
+ *
18
+ * @param args - The constructor arguments for the contract being deployed.
19
+ * @returns A DeployMethod instance configured with the ABI, AztecRPCClient, and constructor arguments.
20
+ */
21
+ deploy(...args) {
22
+ return new DeployMethod(this.publicKey ?? Point.ZERO, this.arc, this.abi, args);
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGVwbG95ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZGVwbG95ZXIvY29udHJhY3RfZGVwbG95ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsR0FBZ0IsRUFBVSxHQUFhLEVBQVUsU0FBcUI7UUFBdEUsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQVU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFZO0lBQUcsQ0FBQztJQUU5Rjs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxHQUFHLElBQVc7UUFDMUIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Q0FDRiJ9
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract_deployer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_deployer.test.d.ts","sourceRoot":"","sources":["../../src/contract_deployer/contract_deployer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { AztecAddress, EthAddress, Fr, Point } from '@aztec/circuits.js';
2
+ import { FunctionType } from '@aztec/foundation/abi';
3
+ import { randomBytes } from 'crypto';
4
+ import { mock } from 'jest-mock-extended';
5
+ import { ContractDeployer } from './contract_deployer.js';
6
+ describe.skip('Contract Deployer', () => {
7
+ let arc;
8
+ const abi = {
9
+ name: 'MyContract',
10
+ functions: [
11
+ {
12
+ name: 'constructor',
13
+ functionType: FunctionType.SECRET,
14
+ parameters: [],
15
+ returnTypes: [],
16
+ bytecode: '0af',
17
+ },
18
+ ],
19
+ };
20
+ const publicKey = Point.random();
21
+ const portalContract = new EthAddress(randomBytes(EthAddress.SIZE_IN_BYTES));
22
+ const contractAddressSalt = Fr.random();
23
+ const account = AztecAddress.random();
24
+ const args = [12, 345n];
25
+ const mockTx = { type: 'Tx' };
26
+ const mockTxHash = { type: 'TxHash' };
27
+ const mockTxReceipt = { type: 'TxReceipt' };
28
+ beforeEach(() => {
29
+ arc = mock();
30
+ arc.sendTx.mockResolvedValue(mockTxHash);
31
+ arc.getTxReceipt.mockResolvedValue(mockTxReceipt);
32
+ });
33
+ it('should create and send a contract deployment tx', async () => {
34
+ const deployer = new ContractDeployer(abi, arc, publicKey);
35
+ const sentTx = deployer.deploy(args[0], args[1]).send({
36
+ portalContract,
37
+ contractAddressSalt,
38
+ from: account,
39
+ });
40
+ const txHash = await sentTx.getTxHash();
41
+ const receipt = await sentTx.getReceipt();
42
+ expect(txHash).toBe(mockTxHash);
43
+ expect(receipt).toBe(mockTxReceipt);
44
+ expect(arc.sendTx).toHaveBeenCalledTimes(1);
45
+ expect(arc.sendTx).toHaveBeenCalledWith(mockTx);
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGVwbG95ZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9kZXBsb3llci9jb250cmFjdF9kZXBsb3llci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQWEsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDdEMsSUFBSSxHQUF3QixDQUFDO0lBRTdCLE1BQU0sR0FBRyxHQUFnQjtRQUN2QixJQUFJLEVBQUUsWUFBWTtRQUNsQixTQUFTLEVBQUU7WUFDVDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxNQUFNO2dCQUNqQyxVQUFVLEVBQUUsRUFBRTtnQkFDZCxXQUFXLEVBQUUsRUFBRTtnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNoQjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFjLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBZSxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBbUIsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQXNCLENBQUM7SUFFaEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxJQUFJLEVBQVksQ0FBQztRQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwRCxjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,72 @@
1
+ import { AztecRPC } from '@aztec/aztec-rpc';
2
+ import { ContractAbi } from '@aztec/foundation/abi';
3
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { Fr } from '@aztec/foundation/fields';
6
+ import { PublicKey } from '@aztec/key-store';
7
+ import { PartialContractAddress, Tx, TxExecutionRequest } from '@aztec/types';
8
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
9
+ import { Contract, ContractFunctionInteraction, SendMethodOptions } from '../contract/index.js';
10
+ /**
11
+ * Options for deploying a contract on the Aztec network.
12
+ * Allows specifying a portal contract, contract address salt, and additional send method options.
13
+ */
14
+ export interface DeployOptions extends SendMethodOptions {
15
+ /**
16
+ * The Ethereum address of the Portal contract.
17
+ */
18
+ portalContract?: EthAddress;
19
+ /**
20
+ * An optional salt value used to deterministically calculate the contract address.
21
+ */
22
+ contractAddressSalt?: Fr;
23
+ }
24
+ /**
25
+ * Creates a TxRequest from a contract ABI, for contract deployment.
26
+ * Extends the ContractFunctionInteraction class.
27
+ */
28
+ export declare class DeployMethod extends ContractFunctionInteraction {
29
+ private publicKey;
30
+ private abi;
31
+ /**
32
+ * The partially computed contract address. Known after creation of the deployment transaction.
33
+ */
34
+ partialContractAddress?: PartialContractAddress;
35
+ /**
36
+ * The complete contract address.
37
+ */
38
+ completeContractAddress?: AztecAddress;
39
+ constructor(publicKey: PublicKey, arc: AztecRPC, abi: ContractAbi, args?: any[]);
40
+ /**
41
+ * Create a contract deployment transaction, given the deployment options.
42
+ * This function internally calls `request()` and `sign()` methods to prepare
43
+ * the transaction for deployment. The resulting signed transaction can be
44
+ * later sent using the `send()` method.
45
+ *
46
+ * @param options - An object containing optional deployment settings, including portalContract, contractAddressSalt, and from.
47
+ * @returns A Promise resolving to an object containing the signed transaction data and other relevant information.
48
+ */
49
+ create(options?: DeployOptions): Promise<TxExecutionRequest>;
50
+ /**
51
+ * Send the contract deployment transaction using the provided options.
52
+ * This function extends the 'send' method from the ContractFunctionInteraction class,
53
+ * allowing us to send a transaction specifically for contract deployment.
54
+ *
55
+ * @param options - An object containing various deployment options such as portalContract, contractAddressSalt, and from.
56
+ * @returns A Promise that resolves to the transaction receipt upon successful deployment.
57
+ */
58
+ send(options?: DeployOptions): import("../contract/sent_tx.js").SentTx;
59
+ /**
60
+ * Simulate the request.
61
+ * @param options - Deployment options.
62
+ * @returns The simulated tx.
63
+ */
64
+ simulate(options: DeployOptions): Promise<Tx>;
65
+ /**
66
+ * Creates a contract abstraction given a wallet.
67
+ * @param withWallet - The wallet to provide to the contract abstraction
68
+ * @returns - The generated contract abstraction.
69
+ */
70
+ getContract(withWallet: Wallet): Contract;
71
+ }
72
+ //# sourceMappingURL=deploy_method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract_deployer/deploy_method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA6B,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAqC,sBAAsB,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjH,OAAO,EAAc,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEhG;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD;;OAEG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,CAAC;CAC1B;AAyBD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,2BAA2B;IAW/C,OAAO,CAAC,SAAS;IAA4B,OAAO,CAAC,GAAG;IAVpE;;OAEG;IACI,sBAAsB,CAAC,EAAE,sBAAsB,CAAa;IAEnE;;OAEG;IACI,uBAAuB,CAAC,EAAE,YAAY,CAAa;gBAEtC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAU,GAAG,EAAE,WAAW,EAAE,IAAI,GAAE,GAAG,EAAO;IASnG;;;;;;;;OAQG;IACU,MAAM,CAAC,OAAO,GAAE,aAAkB;IAqC/C;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE,aAAkB;IAIvC;;;;OAIG;IACU,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;IAiB1D;;;;OAIG;IACI,WAAW,CAAC,UAAU,EAAE,MAAM;CAMtC"}
@@ -0,0 +1,114 @@
1
+ import { getContractDeploymentInfo } from '@aztec/aztec-rpc';
2
+ import { CircuitsWasm, ContractDeploymentData, TxContext } from '@aztec/circuits.js';
3
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { Fr } from '@aztec/foundation/fields';
6
+ import { PackedArguments, TxExecutionRequest } from '@aztec/types';
7
+ import { BaseWallet } from '../aztec_rpc_client/wallet.js';
8
+ import { Contract, ContractFunctionInteraction } from '../contract/index.js';
9
+ /**
10
+ * Simple wallet implementation for use when deploying contracts only.
11
+ */
12
+ class DeployerWallet extends BaseWallet {
13
+ getAddress() {
14
+ return AztecAddress.ZERO;
15
+ }
16
+ async createAuthenticatedTxRequest(executions, txContext) {
17
+ if (executions.length !== 1) {
18
+ throw new Error(`Deployer wallet can only run one execution at a time (requested ${executions.length})`);
19
+ }
20
+ const [execution] = executions;
21
+ const wasm = await CircuitsWasm.get();
22
+ const packedArguments = await PackedArguments.fromArgs(execution.args, wasm);
23
+ return Promise.resolve(new TxExecutionRequest(execution.to, execution.functionData, packedArguments.hash, txContext, [packedArguments]));
24
+ }
25
+ }
26
+ /**
27
+ * Creates a TxRequest from a contract ABI, for contract deployment.
28
+ * Extends the ContractFunctionInteraction class.
29
+ */
30
+ export class DeployMethod extends ContractFunctionInteraction {
31
+ constructor(publicKey, arc, abi, args = []) {
32
+ const constructorAbi = abi.functions.find(f => f.name === 'constructor');
33
+ if (!constructorAbi) {
34
+ throw new Error('Cannot find constructor in the ABI.');
35
+ }
36
+ super(new DeployerWallet(arc), AztecAddress.ZERO, constructorAbi, args);
37
+ this.publicKey = publicKey;
38
+ this.abi = abi;
39
+ /**
40
+ * The partially computed contract address. Known after creation of the deployment transaction.
41
+ */
42
+ this.partialContractAddress = undefined;
43
+ /**
44
+ * The complete contract address.
45
+ */
46
+ this.completeContractAddress = undefined;
47
+ }
48
+ /**
49
+ * Create a contract deployment transaction, given the deployment options.
50
+ * This function internally calls `request()` and `sign()` methods to prepare
51
+ * the transaction for deployment. The resulting signed transaction can be
52
+ * later sent using the `send()` method.
53
+ *
54
+ * @param options - An object containing optional deployment settings, including portalContract, contractAddressSalt, and from.
55
+ * @returns A Promise resolving to an object containing the signed transaction data and other relevant information.
56
+ */
57
+ async create(options = {}) {
58
+ const { portalContract, contractAddressSalt } = Object.assign({ portalContract: EthAddress.ZERO, contractAddressSalt: Fr.random() }, options);
59
+ const { address, constructorHash, functionTreeRoot, partialAddress } = await getContractDeploymentInfo(this.abi, this.args, contractAddressSalt, this.publicKey);
60
+ const contractDeploymentData = new ContractDeploymentData(this.publicKey, constructorHash, functionTreeRoot, contractAddressSalt, portalContract);
61
+ const { chainId, version } = await this.wallet.getNodeInfo();
62
+ const txContext = new TxContext(false, false, true, contractDeploymentData, new Fr(chainId), new Fr(version));
63
+ const executionRequest = this.getExecutionRequest(address, AztecAddress.ZERO);
64
+ const txRequest = await this.wallet.createAuthenticatedTxRequest([executionRequest], txContext);
65
+ this.txRequest = txRequest;
66
+ this.partialContractAddress = partialAddress;
67
+ this.completeContractAddress = address;
68
+ // TODO: Should we add the contracts to the DB here, or once the tx has been sent or mined?
69
+ await this.wallet.addContracts([{ abi: this.abi, address, portalContract }]);
70
+ return this.txRequest;
71
+ }
72
+ /**
73
+ * Send the contract deployment transaction using the provided options.
74
+ * This function extends the 'send' method from the ContractFunctionInteraction class,
75
+ * allowing us to send a transaction specifically for contract deployment.
76
+ *
77
+ * @param options - An object containing various deployment options such as portalContract, contractAddressSalt, and from.
78
+ * @returns A Promise that resolves to the transaction receipt upon successful deployment.
79
+ */
80
+ send(options = {}) {
81
+ return super.send(options);
82
+ }
83
+ /**
84
+ * Simulate the request.
85
+ * @param options - Deployment options.
86
+ * @returns The simulated tx.
87
+ */
88
+ async simulate(options) {
89
+ const txRequest = this.txRequest ?? (await this.create(options));
90
+ // We need to tell the rpc server which account state to use to simulate
91
+ // the tx. In the context of a deployment, we need to use an account state
92
+ // that matches the account contract being deployed. But if what we deploy is
93
+ // an "application" contract, then there's no account state associated with it,
94
+ // so we just let the rpc server use whichever it wants. This is an accident
95
+ // of all simulations happening over an account state, which should not be necessary.
96
+ const rpcServerRegisteredAccounts = await this.wallet.getAccounts();
97
+ const deploymentAddress = this.completeContractAddress;
98
+ const accountStateAddress = rpcServerRegisteredAccounts.includes(deploymentAddress) ? deploymentAddress : undefined;
99
+ this.tx = await this.wallet.simulateTx(txRequest, accountStateAddress);
100
+ return this.tx;
101
+ }
102
+ /**
103
+ * Creates a contract abstraction given a wallet.
104
+ * @param withWallet - The wallet to provide to the contract abstraction
105
+ * @returns - The generated contract abstraction.
106
+ */
107
+ getContract(withWallet) {
108
+ if (!this.completeContractAddress) {
109
+ throw new Error(`Cannot get a contract instance for a contract not yet deployed`);
110
+ }
111
+ return new Contract(this.completeContractAddress, this.abi, withWallet);
112
+ }
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X21ldGhvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9kZXBsb3llci9kZXBsb3lfbWV0aG9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxFQUFvQixlQUFlLEVBQThCLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBaUJoRzs7R0FFRztBQUNILE1BQU0sY0FBZSxTQUFRLFVBQVU7SUFDckMsVUFBVTtRQUNSLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lBQ0QsS0FBSyxDQUFDLDRCQUE0QixDQUNoQyxVQUE4QixFQUM5QixTQUFvQjtRQUVwQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQzFHO1FBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGVBQWUsQ0FB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
@@ -0,0 +1,2 @@
1
+ export * from './contract_deployer.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_deployer/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './contract_deployer.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZGVwbG95ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyJ9
@@ -0,0 +1,8 @@
1
+ export * from './contract/index.js';
2
+ export * from './contract_deployer/index.js';
3
+ export * from './utils/index.js';
4
+ export * from './aztec_rpc_client/index.js';
5
+ export * from './auth/index.js';
6
+ export * from './account_impl/index.js';
7
+ export * from '@aztec/aztec-rpc';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,kBAAkB,CAAC"}
package/dest/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * from './contract/index.js';
2
+ export * from './contract_deployer/index.js';
3
+ export * from './utils/index.js';
4
+ export * from './aztec_rpc_client/index.js';
5
+ export * from './auth/index.js';
6
+ export * from './account_impl/index.js';
7
+ // TODO - only export necessary stuffs
8
+ export * from '@aztec/aztec-rpc';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsc0NBQXNDO0FBQ3RDLGNBQWMsa0JBQWtCLENBQUMifQ==
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { AztecRPC } from '@aztec/aztec-rpc';
3
+ import { Wallet } from '../aztec_rpc_client/wallet.js';
4
+ /**
5
+ * Creates an Aztec Account.
6
+ * @returns The account's address & public key.
7
+ */
8
+ export declare function createAccounts(aztecRpcClient: AztecRPC, privateKey?: Buffer, numberOfAccounts?: number, logger?: import("@aztec/foundation/log").DebugLogger): Promise<Wallet>;
9
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/utils/account.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAuC,MAAM,kBAAkB,CAAC;AAKjF,OAAO,EAAiB,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAStE;;;GAGG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,gBAAgB,SAAI,EACpB,MAAM,8CAA+C,GACpD,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
@@ -0,0 +1,38 @@
1
+ import { TxStatus, getContractDeploymentInfo } from '@aztec/aztec-rpc';
2
+ import { CircuitsWasm, Fr } from '@aztec/circuits.js';
3
+ import { randomBytes } from '@aztec/foundation/crypto';
4
+ import { createDebugLogger } from '@aztec/foundation/log';
5
+ import { EcdsaAccountContractAbi } from '@aztec/noir-contracts/examples';
6
+ import { AccountWallet } from '../aztec_rpc_client/wallet.js';
7
+ import { AccountCollection, AccountContract, ContractDeployer, EcdsaAuthProvider, generatePublicKey, } from '../index.js';
8
+ /**
9
+ * Creates an Aztec Account.
10
+ * @returns The account's address & public key.
11
+ */
12
+ export async function createAccounts(aztecRpcClient, privateKey, numberOfAccounts = 1, logger = createDebugLogger('aztec:aztec.js:accounts')) {
13
+ const accountImpls = new AccountCollection();
14
+ const results = [];
15
+ const wasm = await CircuitsWasm.get();
16
+ for (let i = 0; i < numberOfAccounts; ++i) {
17
+ // TODO(#662): Let the aztec rpc server generate the keypair rather than hardcoding the private key
18
+ const privKey = i == 0 && privateKey ? privateKey : randomBytes(32);
19
+ const accountAbi = EcdsaAccountContractAbi;
20
+ const publicKey = await generatePublicKey(privKey);
21
+ const salt = Fr.random();
22
+ const deploymentInfo = await getContractDeploymentInfo(accountAbi, [], salt, publicKey);
23
+ await aztecRpcClient.addAccount(privKey, deploymentInfo.address, deploymentInfo.partialAddress, accountAbi);
24
+ const contractDeployer = new ContractDeployer(accountAbi, aztecRpcClient, publicKey);
25
+ const tx = contractDeployer.deploy().send({ contractAddressSalt: salt });
26
+ await tx.isMined(0, 0.1);
27
+ const receipt = await tx.getReceipt();
28
+ if (receipt.status !== TxStatus.MINED) {
29
+ throw new Error(`Deployment tx not mined (status is ${receipt.status})`);
30
+ }
31
+ const address = receipt.contractAddress;
32
+ logger(`Created account ${address.toString()} with public key ${publicKey.toString()}`);
33
+ accountImpls.registerAccount(address, new AccountContract(address, publicKey, new EcdsaAuthProvider(privKey), deploymentInfo.partialAddress, accountAbi, wasm));
34
+ results.push([address, publicKey]);
35
+ }
36
+ return new AccountWallet(aztecRpcClient, accountImpls);
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRixPQUFPLEVBQWdCLFlBQVksRUFBRSxFQUFFLEVBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBRXJCOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxjQUF3QixFQUN4QixVQUFtQixFQUNuQixnQkFBZ0IsR0FBRyxDQUFDLEVBQ3BCLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQztJQUVyRCxNQUFNLFlBQVksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekMsbUdBQW1HO1FBQ25HLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixNQUFNLGNBQWMsR0FBRyxNQUFNLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekUsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUMxRTtRQUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFnQixDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxtQkFBbUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RixZQUFZLENBQUMsZUFBZSxDQUMxQixPQUFPLEVBQ1AsSUFBSSxlQUFlLENBQ2pCLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFDOUIsY0FBYyxDQUFDLGNBQWMsRUFDN0IsVUFBVSxFQUNWLElBQUksQ0FDTCxDQUNGLENBQUM7UUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDcEM7SUFDRCxPQUFPLElBQUksYUFBYSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN6RCxDQUFDIn0=
@@ -0,0 +1,4 @@
1
+ export * from './secrets.js';
2
+ export * from './account.js';
3
+ export * from './pub_key.js';
4
+ //# sourceMappingURL=index.d.ts.map