@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,103 @@
1
+ {
2
+ "name": "SchnorrSingleKeyAccount",
3
+ "functions": [
4
+ {
5
+ "name": "constructor",
6
+ "functionType": "secret",
7
+ "isInternal": false,
8
+ "parameters": [],
9
+ "returnTypes": [],
10
+ "bytecode": "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",
11
+ "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
12
+ },
13
+ {
14
+ "name": "entrypoint",
15
+ "functionType": "secret",
16
+ "isInternal": false,
17
+ "parameters": [
18
+ {
19
+ "name": "payload",
20
+ "type": {
21
+ "kind": "struct",
22
+ "path": "aztec::entrypoint::EntrypointPayload",
23
+ "fields": [
24
+ {
25
+ "name": "flattened_args_hashes",
26
+ "type": {
27
+ "kind": "array",
28
+ "length": 4,
29
+ "type": {
30
+ "kind": "field"
31
+ }
32
+ }
33
+ },
34
+ {
35
+ "name": "flattened_selectors",
36
+ "type": {
37
+ "kind": "array",
38
+ "length": 4,
39
+ "type": {
40
+ "kind": "field"
41
+ }
42
+ }
43
+ },
44
+ {
45
+ "name": "flattened_targets",
46
+ "type": {
47
+ "kind": "array",
48
+ "length": 4,
49
+ "type": {
50
+ "kind": "field"
51
+ }
52
+ }
53
+ },
54
+ {
55
+ "name": "nonce",
56
+ "type": {
57
+ "kind": "field"
58
+ }
59
+ }
60
+ ]
61
+ },
62
+ "visibility": "public"
63
+ },
64
+ {
65
+ "name": "owner",
66
+ "type": {
67
+ "kind": "array",
68
+ "length": 64,
69
+ "type": {
70
+ "kind": "integer",
71
+ "sign": "unsigned",
72
+ "width": 8
73
+ }
74
+ },
75
+ "visibility": "public"
76
+ },
77
+ {
78
+ "name": "signature",
79
+ "type": {
80
+ "kind": "array",
81
+ "length": 64,
82
+ "type": {
83
+ "kind": "integer",
84
+ "sign": "unsigned",
85
+ "width": 8
86
+ }
87
+ },
88
+ "visibility": "public"
89
+ },
90
+ {
91
+ "name": "partial_address",
92
+ "type": {
93
+ "kind": "field"
94
+ },
95
+ "visibility": "public"
96
+ }
97
+ ],
98
+ "returnTypes": [],
99
+ "bytecode": "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",
100
+ "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
101
+ }
102
+ ]
103
+ }
@@ -0,0 +1,72 @@
1
+ import { Fr } from '@aztec/circuits.js';
2
+ import { AztecRPC, CompleteAddress, GrumpkinPrivateKey } from '@aztec/types';
3
+ import { AccountWallet, DeployMethod, WaitOpts } from '../index.js';
4
+ import { DeployAccountSentTx } from './deploy_account_sent_tx.js';
5
+ import { AccountContract, Entrypoint, Salt } from './index.js';
6
+ /**
7
+ * Manages a user account. Provides methods for calculating the account's address, deploying the account contract,
8
+ * and creating and registering the user wallet in the RPC server.
9
+ */
10
+ export declare class Account {
11
+ private rpc;
12
+ private encryptionPrivateKey;
13
+ private accountContract;
14
+ /** Deployment salt for the account contract. */
15
+ readonly salt?: Fr;
16
+ private completeAddress?;
17
+ private encryptionPublicKey?;
18
+ private deployMethod?;
19
+ constructor(rpc: AztecRPC, encryptionPrivateKey: GrumpkinPrivateKey, accountContract: AccountContract, saltOrAddress?: Salt | CompleteAddress);
20
+ protected getEncryptionPublicKey(): Promise<import("@aztec/circuits.js").Point>;
21
+ /**
22
+ * Returns the entrypoint for this account as defined by its account contract.
23
+ * @returns An entrypoint.
24
+ */
25
+ getEntrypoint(): Promise<Entrypoint>;
26
+ /**
27
+ * Gets the calculated complete address associated with this account.
28
+ * Does not require the account to be deployed or registered.
29
+ * @returns The address, partial address, and encryption public key.
30
+ */
31
+ getCompleteAddress(): Promise<CompleteAddress>;
32
+ /**
33
+ * Returns a Wallet instance associated with this account. Use it to create Contract
34
+ * instances to be interacted with from this account.
35
+ * @returns A Wallet instance.
36
+ */
37
+ getWallet(): Promise<AccountWallet>;
38
+ /**
39
+ * Registers this account in the RPC server and returns the associated wallet. Registering
40
+ * the account on the RPC server is required for managing private state associated with it.
41
+ * Use the returned wallet to create Contract instances to be interacted with from this account.
42
+ * @returns A Wallet instance.
43
+ */
44
+ register(): Promise<AccountWallet>;
45
+ /**
46
+ * Returns the pre-populated deployment method to deploy the account contract that backs this account.
47
+ * Typically you will not need this method and can call `deploy` directly. Use this for having finer
48
+ * grained control on when to create, simulate, and send the deployment tx.
49
+ * @returns A DeployMethod instance that deploys this account contract.
50
+ */
51
+ getDeployMethod(): Promise<DeployMethod<import("../index.js").Contract>>;
52
+ /**
53
+ * Deploys the account contract that backs this account.
54
+ * Uses the salt provided in the constructor or a randomly generated one.
55
+ * Note that if the Account is constructed with an explicit complete address
56
+ * it is assumed that the account contract has already been deployed and this method will throw.
57
+ * Registers the account in the RPC server before deploying the contract.
58
+ * @returns A SentTx object that can be waited to get the associated Wallet.
59
+ */
60
+ deploy(): Promise<DeployAccountSentTx>;
61
+ /**
62
+ * Deploys the account contract that backs this account and awaits the tx to be mined.
63
+ * Uses the salt provided in the constructor or a randomly generated one.
64
+ * Note that if the Account is constructed with an explicit complete address
65
+ * it is assumed that the account contract has already been deployed and this method will throw.
66
+ * Registers the account in the RPC server before deploying the contract.
67
+ * @param opts - Options to wait for the tx to be mined.
68
+ * @returns A Wallet instance.
69
+ */
70
+ waitDeploy(opts?: WaitOpts): Promise<AccountWallet>;
71
+ }
72
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAwC,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAoB,YAAY,EAAE,QAAQ,EAAqB,MAAM,aAAa,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE/D;;;GAGG;AACH,qBAAa,OAAO;IAShB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,eAAe;IAVzB,gDAAgD;IAChD,SAAgB,IAAI,CAAC,EAAE,EAAE,CAAC;IAE1B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,mBAAmB,CAAC,CAAY;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG1B,GAAG,EAAE,QAAQ,EACb,oBAAoB,EAAE,kBAAkB,EACxC,eAAe,EAAE,eAAe,EACxC,aAAa,CAAC,EAAE,IAAI,GAAG,eAAe;cASxB,sBAAsB;IAOtC;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAMjD;;;;OAIG;IACU,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAc3D;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAKhD;;;;;OAKG;IACU,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAM/C;;;;;OAKG;IACU,eAAe;IAY5B;;;;;;;OAOG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAOnD;;;;;;;;OAQG;IACU,UAAU,CAAC,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAIrE"}
@@ -0,0 +1,115 @@
1
+ import { Fr, getContractDeploymentInfo } from '@aztec/circuits.js';
2
+ import { CompleteAddress } from '@aztec/types';
3
+ import { AccountWallet, ContractDeployer, generatePublicKey } from '../index.js';
4
+ import { DeployAccountSentTx } from './deploy_account_sent_tx.js';
5
+ /**
6
+ * Manages a user account. Provides methods for calculating the account's address, deploying the account contract,
7
+ * and creating and registering the user wallet in the RPC server.
8
+ */
9
+ export class Account {
10
+ constructor(rpc, encryptionPrivateKey, accountContract, saltOrAddress) {
11
+ this.rpc = rpc;
12
+ this.encryptionPrivateKey = encryptionPrivateKey;
13
+ this.accountContract = accountContract;
14
+ if (saltOrAddress instanceof CompleteAddress) {
15
+ this.completeAddress = saltOrAddress;
16
+ }
17
+ else {
18
+ this.salt = saltOrAddress ? new Fr(saltOrAddress) : Fr.random();
19
+ }
20
+ }
21
+ async getEncryptionPublicKey() {
22
+ if (!this.encryptionPublicKey) {
23
+ this.encryptionPublicKey = await generatePublicKey(this.encryptionPrivateKey);
24
+ }
25
+ return this.encryptionPublicKey;
26
+ }
27
+ /**
28
+ * Returns the entrypoint for this account as defined by its account contract.
29
+ * @returns An entrypoint.
30
+ */
31
+ async getEntrypoint() {
32
+ const nodeInfo = await this.rpc.getNodeInfo();
33
+ const completeAddress = await this.getCompleteAddress();
34
+ return this.accountContract.getEntrypoint(completeAddress, nodeInfo);
35
+ }
36
+ /**
37
+ * Gets the calculated complete address associated with this account.
38
+ * Does not require the account to be deployed or registered.
39
+ * @returns The address, partial address, and encryption public key.
40
+ */
41
+ async getCompleteAddress() {
42
+ if (!this.completeAddress) {
43
+ const encryptionPublicKey = await generatePublicKey(this.encryptionPrivateKey);
44
+ const contractDeploymentInfo = await getContractDeploymentInfo(this.accountContract.getContractAbi(), await this.accountContract.getDeploymentArgs(), this.salt, encryptionPublicKey);
45
+ this.completeAddress = contractDeploymentInfo.completeAddress;
46
+ }
47
+ return this.completeAddress;
48
+ }
49
+ /**
50
+ * Returns a Wallet instance associated with this account. Use it to create Contract
51
+ * instances to be interacted with from this account.
52
+ * @returns A Wallet instance.
53
+ */
54
+ async getWallet() {
55
+ const entrypoint = await this.getEntrypoint();
56
+ return new AccountWallet(this.rpc, entrypoint, await this.getCompleteAddress());
57
+ }
58
+ /**
59
+ * Registers this account in the RPC server and returns the associated wallet. Registering
60
+ * the account on the RPC server is required for managing private state associated with it.
61
+ * Use the returned wallet to create Contract instances to be interacted with from this account.
62
+ * @returns A Wallet instance.
63
+ */
64
+ async register() {
65
+ const completeAddress = await this.getCompleteAddress();
66
+ await this.rpc.registerAccount(this.encryptionPrivateKey, completeAddress.partialAddress);
67
+ return this.getWallet();
68
+ }
69
+ /**
70
+ * Returns the pre-populated deployment method to deploy the account contract that backs this account.
71
+ * Typically you will not need this method and can call `deploy` directly. Use this for having finer
72
+ * grained control on when to create, simulate, and send the deployment tx.
73
+ * @returns A DeployMethod instance that deploys this account contract.
74
+ */
75
+ async getDeployMethod() {
76
+ if (!this.deployMethod) {
77
+ if (!this.salt)
78
+ throw new Error(`Cannot deploy account contract without known salt.`);
79
+ await this.register();
80
+ const encryptionPublicKey = await this.getEncryptionPublicKey();
81
+ const deployer = new ContractDeployer(this.accountContract.getContractAbi(), this.rpc, encryptionPublicKey);
82
+ const args = await this.accountContract.getDeploymentArgs();
83
+ this.deployMethod = deployer.deploy(...args);
84
+ }
85
+ return this.deployMethod;
86
+ }
87
+ /**
88
+ * Deploys the account contract that backs this account.
89
+ * Uses the salt provided in the constructor or a randomly generated one.
90
+ * Note that if the Account is constructed with an explicit complete address
91
+ * it is assumed that the account contract has already been deployed and this method will throw.
92
+ * Registers the account in the RPC server before deploying the contract.
93
+ * @returns A SentTx object that can be waited to get the associated Wallet.
94
+ */
95
+ async deploy() {
96
+ const deployMethod = await this.getDeployMethod();
97
+ const wallet = await this.getWallet();
98
+ const sentTx = deployMethod.send({ contractAddressSalt: this.salt });
99
+ return new DeployAccountSentTx(wallet, sentTx.getTxHash());
100
+ }
101
+ /**
102
+ * Deploys the account contract that backs this account and awaits the tx to be mined.
103
+ * Uses the salt provided in the constructor or a randomly generated one.
104
+ * Note that if the Account is constructed with an explicit complete address
105
+ * it is assumed that the account contract has already been deployed and this method will throw.
106
+ * Registers the account in the RPC server before deploying the contract.
107
+ * @param opts - Options to wait for the tx to be mined.
108
+ * @returns A Wallet instance.
109
+ */
110
+ async waitDeploy(opts = {}) {
111
+ await this.deploy().then(tx => tx.wait(opts));
112
+ return this.getWallet();
113
+ }
114
+ }
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY2NvdW50L2FjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBYSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlFLE9BQU8sRUFBWSxlQUFlLEVBQXNCLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2xFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBUWxCLFlBQ1UsR0FBYSxFQUNiLG9CQUF3QyxFQUN4QyxlQUFnQyxFQUN4QyxhQUFzQztRQUg5QixRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQ2IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHeEMsSUFBSSxhQUFhLFlBQVksZUFBZSxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsc0JBQXNCO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDL0U7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxD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
@@ -0,0 +1,17 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { CompleteAddress, GrumpkinPrivateKey, NodeInfo } from '@aztec/types';
3
+ import { AuthWitnessAccountEntrypoint } from '../entrypoint/auth_witness_account_entrypoint.js';
4
+ import { AccountContract } from './index.js';
5
+ /**
6
+ * Account contract that authenticates transactions using Schnorr signatures verified against
7
+ * the note encryption key, relying on a single private key for both encryption and authentication.
8
+ * Extended to pull verification data from the oracle instead of passed as arguments.
9
+ */
10
+ export declare class AuthWitnessAccountContract implements AccountContract {
11
+ private encryptionPrivateKey;
12
+ constructor(encryptionPrivateKey: GrumpkinPrivateKey);
13
+ getDeploymentArgs(): Promise<never[]>;
14
+ getEntrypoint({ address, partialAddress }: CompleteAddress, { chainId, version }: NodeInfo): Promise<AuthWitnessAccountEntrypoint>;
15
+ getContractAbi(): ContractAbi;
16
+ }
17
+ //# sourceMappingURL=auth_witness_account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth_witness_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/auth_witness_account_contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IACpD,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,kBAAkB;IAErD,iBAAiB;IAIX,aAAa,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAWhG,cAAc,IAAI,WAAW;CAGrC"}
@@ -0,0 +1,23 @@
1
+ import { Schnorr } from '@aztec/circuits.js/barretenberg';
2
+ import AuthWitnessAccountContractAbi from '../../abis/schnorr_auth_witness_account_contract.json' assert { type: 'json' };
3
+ import { AuthWitnessAccountEntrypoint } from '../entrypoint/auth_witness_account_entrypoint.js';
4
+ /**
5
+ * Account contract that authenticates transactions using Schnorr signatures verified against
6
+ * the note encryption key, relying on a single private key for both encryption and authentication.
7
+ * Extended to pull verification data from the oracle instead of passed as arguments.
8
+ */
9
+ export class AuthWitnessAccountContract {
10
+ constructor(encryptionPrivateKey) {
11
+ this.encryptionPrivateKey = encryptionPrivateKey;
12
+ }
13
+ getDeploymentArgs() {
14
+ return Promise.resolve([]);
15
+ }
16
+ async getEntrypoint({ address, partialAddress }, { chainId, version }) {
17
+ return new AuthWitnessAccountEntrypoint(address, partialAddress, this.encryptionPrivateKey, await Schnorr.new(), chainId, version);
18
+ }
19
+ getContractAbi() {
20
+ return AuthWitnessAccountContractAbi;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aF93aXRuZXNzX2FjY291bnRfY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9jb250cmFjdC9hdXRoX3dpdG5lc3NfYWNjb3VudF9jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJMUQsT0FBTyw2QkFBNkIsTUFBTSx1REFBdUQsQ0FBQyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUdoRzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixvQkFBd0M7UUFBeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtJQUFHLENBQUM7SUFFekQsaUJBQWlCO1FBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFZO1FBQ3JHLE9BQU8sSUFBSSw0QkFBNEIsQ0FDckMsT0FBTyxFQUNQLGNBQWMsRUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUNuQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLDZCQUF1RCxDQUFDO0lBQ2pFLENBQUM7Q0FDRiJ9
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { ContractAbi } from '@aztec/foundation/abi';
3
+ import { CompleteAddress, NodeInfo } from '@aztec/types';
4
+ import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
5
+ import { AccountContract } from './index.js';
6
+ /**
7
+ * Account contract that authenticates transactions using ECDSA signatures
8
+ * verified against a secp256k1 public key stored in an immutable encrypted note.
9
+ */ export declare class EcdsaAccountContract implements AccountContract {
10
+ private signingPrivateKey;
11
+ constructor(signingPrivateKey: Buffer);
12
+ getDeploymentArgs(): Promise<Buffer[]>;
13
+ getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
14
+ getContractAbi(): ContractAbi;
15
+ }
16
+ //# sourceMappingURL=ecdsa_account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsa_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/ecdsa_account_contract.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG,CAAC,qBAAa,oBAAqB,YAAW,eAAe;IAClD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,MAAM;IAEhC,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAMhF,cAAc,IAAI,WAAW;CAGrC"}
@@ -0,0 +1,24 @@
1
+ import { Ecdsa } from '@aztec/circuits.js/barretenberg';
2
+ import EcdsaAccountContractAbi from '../../abis/ecdsa_account_contract.json' assert { type: 'json' };
3
+ import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
+ /**
5
+ * Account contract that authenticates transactions using ECDSA signatures
6
+ * verified against a secp256k1 public key stored in an immutable encrypted note.
7
+ */ export class EcdsaAccountContract {
8
+ constructor(signingPrivateKey) {
9
+ this.signingPrivateKey = signingPrivateKey;
10
+ }
11
+ async getDeploymentArgs() {
12
+ const signingPublicKey = await Ecdsa.new().then(e => e.computePublicKey(this.signingPrivateKey));
13
+ return [signingPublicKey.subarray(0, 32), signingPublicKey.subarray(32, 64)];
14
+ }
15
+ async getEntrypoint({ address }, { chainId, version }) {
16
+ const ecdsa = await Ecdsa.new();
17
+ const signClosure = (msg) => ecdsa.constructSignature(msg, this.signingPrivateKey);
18
+ return new StoredKeyAccountEntrypoint(address, signClosure, chainId, version);
19
+ }
20
+ getContractAbi() {
21
+ return EcdsaAccountContractAbi;
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FfYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY2NvdW50L2NvbnRyYWN0L2VjZHNhX2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXhELE9BQU8sdUJBQXVCLE1BQU0sd0NBQXdDLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDckcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHNUY7OztHQUdHLENBQUMsTUFBTSxPQUFPLG9CQUFvQjtJQUNuQyxZQUFvQixpQkFBeUI7UUFBekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO0lBQUcsQ0FBQztJQUUxQyxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDakcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBWTtRQUNyRixNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyx1QkFBaUQsQ0FBQztJQUMzRCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,28 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { CompleteAddress, NodeInfo } from '@aztec/types';
3
+ import { Entrypoint } from '../index.js';
4
+ export * from './ecdsa_account_contract.js';
5
+ export * from './schnorr_account_contract.js';
6
+ export * from './single_key_account_contract.js';
7
+ export * from './auth_witness_account_contract.js';
8
+ /**
9
+ * An account contract instance. Knows its ABI, deployment arguments, and to create
10
+ * transaction execution requests out of function calls through an entrypoint.
11
+ */
12
+ export interface AccountContract {
13
+ /**
14
+ * Returns the ABI of this account contract.
15
+ */
16
+ getContractAbi(): ContractAbi;
17
+ /**
18
+ * Returns the deployment arguments for this instance.
19
+ */
20
+ getDeploymentArgs(): Promise<any[]>;
21
+ /**
22
+ * Creates an entrypoint for creating transaction execution requests for this account contract.
23
+ * @param address - Complete address of the deployed account contract.
24
+ * @param nodeInfo - Chain id and protocol version where the account contract is deployed.
25
+ */
26
+ getEntrypoint(address: CompleteAddress, nodeInfo: NodeInfo): Promise<Entrypoint>;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAGnD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,IAAI,WAAW,CAAC;IAC9B;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF"}
@@ -0,0 +1,6 @@
1
+ export * from './ecdsa_account_contract.js';
2
+ export * from './schnorr_account_contract.js';
3
+ export * from './single_key_account_contract.js';
4
+ export * from './auth_witness_account_contract.js';
5
+ // docs:end:account-contract-interface
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9jb250cmFjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9DQUFvQyxDQUFDO0FBdUJuRCxzQ0FBc0MifQ==
@@ -0,0 +1,16 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { CompleteAddress, GrumpkinPrivateKey, NodeInfo } from '@aztec/types';
3
+ import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
+ import { AccountContract } from './index.js';
5
+ /**
6
+ * Account contract that authenticates transactions using Schnorr signatures
7
+ * verified against a Grumpkin public key stored in an immutable encrypted note.
8
+ */
9
+ export declare class SchnorrAccountContract implements AccountContract {
10
+ private signingPrivateKey;
11
+ constructor(signingPrivateKey: GrumpkinPrivateKey);
12
+ getDeploymentArgs(): Promise<import("@aztec/circuits.js").Fr[]>;
13
+ getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
14
+ getContractAbi(): ContractAbi;
15
+ }
16
+ //# sourceMappingURL=schnorr_account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schnorr_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/schnorr_account_contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,kBAAkB;IAE5C,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAMhF,cAAc,IAAI,WAAW;CAGrC"}
@@ -0,0 +1,25 @@
1
+ import { Schnorr } from '@aztec/circuits.js/barretenberg';
2
+ import SchnorrAccountContractAbi from '../../abis/schnorr_account_contract.json' assert { type: 'json' };
3
+ import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
+ /**
5
+ * Account contract that authenticates transactions using Schnorr signatures
6
+ * verified against a Grumpkin public key stored in an immutable encrypted note.
7
+ */
8
+ export class SchnorrAccountContract {
9
+ constructor(signingPrivateKey) {
10
+ this.signingPrivateKey = signingPrivateKey;
11
+ }
12
+ async getDeploymentArgs() {
13
+ const signingPublicKey = await Schnorr.new().then(e => e.computePublicKey(this.signingPrivateKey));
14
+ return [signingPublicKey.x, signingPublicKey.y];
15
+ }
16
+ async getEntrypoint({ address }, { chainId, version }) {
17
+ const schnorr = await Schnorr.new();
18
+ const signClosure = (msg) => schnorr.constructSignature(msg, this.signingPrivateKey);
19
+ return new StoredKeyAccountEntrypoint(address, signClosure, chainId, version);
20
+ }
21
+ getContractAbi() {
22
+ return SchnorrAccountContractAbi;
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLHlCQUF5QixNQUFNLDBDQUEwQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRzVGOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBWTtRQUNyRixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixPQUFPLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyx5QkFBbUQsQ0FBQztJQUM3RCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,16 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { CompleteAddress, GrumpkinPrivateKey, NodeInfo } from '@aztec/types';
3
+ import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
4
+ import { AccountContract } from './index.js';
5
+ /**
6
+ * Account contract that authenticates transactions using Schnorr signatures verified against
7
+ * the note encryption key, relying on a single private key for both encryption and authentication.
8
+ */
9
+ export declare class SingleKeyAccountContract implements AccountContract {
10
+ private encryptionPrivateKey;
11
+ constructor(encryptionPrivateKey: GrumpkinPrivateKey);
12
+ getDeploymentArgs(): Promise<never[]>;
13
+ getEntrypoint({ address, partialAddress }: CompleteAddress, { chainId, version }: NodeInfo): Promise<SingleKeyAccountEntrypoint>;
14
+ getContractAbi(): ContractAbi;
15
+ }
16
+ //# sourceMappingURL=single_key_account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/single_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,kBAAkB;IAErD,iBAAiB;IAIjB,aAAa,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAM1F,cAAc,IAAI,WAAW;CAGrC"}
@@ -0,0 +1,21 @@
1
+ import SchnorrSingleKeyAccountContractAbi from '../../abis/schnorr_single_key_account_contract.json' assert { type: 'json' };
2
+ import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
3
+ /**
4
+ * Account contract that authenticates transactions using Schnorr signatures verified against
5
+ * the note encryption key, relying on a single private key for both encryption and authentication.
6
+ */
7
+ export class SingleKeyAccountContract {
8
+ constructor(encryptionPrivateKey) {
9
+ this.encryptionPrivateKey = encryptionPrivateKey;
10
+ }
11
+ getDeploymentArgs() {
12
+ return Promise.resolve([]);
13
+ }
14
+ getEntrypoint({ address, partialAddress }, { chainId, version }) {
15
+ return Promise.resolve(new SingleKeyAccountEntrypoint(address, partialAddress, this.encryptionPrivateKey, chainId, version));
16
+ }
17
+ getContractAbi() {
18
+ return SchnorrSingleKeyAccountContractAbi;
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sa0NBQWtDLE1BQU0scURBQXFELENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDN0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHNUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUFvQixvQkFBd0M7UUFBeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtJQUFHLENBQUM7SUFFekQsaUJBQWlCO1FBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQVk7UUFDL0YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixJQUFJLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FDckcsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sa0NBQTRELENBQUM7SUFDdEUsQ0FBQztDQUNGIn0=