@rhinestone/sdk 1.0.41-alpha.0 → 1.0.41

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 (208) hide show
  1. package/dist/src/accounts/error.d.ts +114 -0
  2. package/dist/src/accounts/error.d.ts.map +1 -0
  3. package/dist/src/accounts/error.js +174 -0
  4. package/dist/src/accounts/index.d.ts +50 -0
  5. package/dist/src/accounts/index.d.ts.map +1 -0
  6. package/dist/src/accounts/index.js +669 -0
  7. package/dist/src/accounts/index.test.d.ts +2 -0
  8. package/dist/src/accounts/index.test.d.ts.map +1 -0
  9. package/dist/src/accounts/index.test.js +33 -0
  10. package/dist/src/accounts/json-rpc/index.d.ts +5 -0
  11. package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
  12. package/dist/src/accounts/json-rpc/index.js +20 -0
  13. package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
  14. package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
  15. package/dist/src/accounts/json-rpc/index.test.js +33 -0
  16. package/dist/src/accounts/json-rpc/providers.d.ts +5 -0
  17. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
  18. package/dist/src/accounts/json-rpc/providers.js +22 -0
  19. package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
  20. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
  21. package/dist/src/accounts/json-rpc/providers.test.js +43 -0
  22. package/dist/src/accounts/kernel.d.ts +29 -0
  23. package/dist/src/accounts/kernel.d.ts.map +1 -0
  24. package/dist/src/accounts/kernel.js +297 -0
  25. package/dist/src/accounts/kernel.test.d.ts +2 -0
  26. package/dist/src/accounts/kernel.test.d.ts.map +1 -0
  27. package/dist/src/accounts/kernel.test.js +132 -0
  28. package/dist/src/accounts/nexus.d.ts +35 -0
  29. package/dist/src/accounts/nexus.d.ts.map +1 -0
  30. package/dist/src/accounts/nexus.js +471 -0
  31. package/dist/src/accounts/nexus.test.d.ts +2 -0
  32. package/dist/src/accounts/nexus.test.d.ts.map +1 -0
  33. package/dist/src/accounts/nexus.test.js +118 -0
  34. package/dist/src/accounts/passport.d.ts +12 -0
  35. package/dist/src/accounts/passport.d.ts.map +1 -0
  36. package/dist/src/accounts/passport.js +173 -0
  37. package/dist/src/accounts/safe.d.ts +35 -0
  38. package/dist/src/accounts/safe.d.ts.map +1 -0
  39. package/dist/src/accounts/safe.js +365 -0
  40. package/dist/src/accounts/safe.test.d.ts +2 -0
  41. package/dist/src/accounts/safe.test.d.ts.map +1 -0
  42. package/dist/src/accounts/safe.test.js +118 -0
  43. package/dist/src/accounts/signing/common.d.ts +27 -0
  44. package/dist/src/accounts/signing/common.d.ts.map +1 -0
  45. package/dist/src/accounts/signing/common.js +183 -0
  46. package/dist/src/accounts/signing/message.d.ts +5 -0
  47. package/dist/src/accounts/signing/message.d.ts.map +1 -0
  48. package/dist/src/accounts/signing/message.js +47 -0
  49. package/dist/src/accounts/signing/passkeys.d.ts +36 -0
  50. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
  51. package/dist/src/accounts/signing/passkeys.js +125 -0
  52. package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
  53. package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
  54. package/dist/src/accounts/signing/passkeys.test.js +88 -0
  55. package/dist/src/accounts/signing/typedData.d.ts +5 -0
  56. package/dist/src/accounts/signing/typedData.d.ts.map +1 -0
  57. package/dist/src/accounts/signing/typedData.js +35 -0
  58. package/dist/src/accounts/startale.d.ts +27 -0
  59. package/dist/src/accounts/startale.d.ts.map +1 -0
  60. package/dist/src/accounts/startale.js +116 -0
  61. package/dist/src/accounts/startale.test.d.ts +2 -0
  62. package/dist/src/accounts/startale.test.d.ts.map +1 -0
  63. package/dist/src/accounts/startale.test.js +92 -0
  64. package/dist/src/accounts/utils.d.ts +33 -0
  65. package/dist/src/accounts/utils.d.ts.map +1 -0
  66. package/dist/src/accounts/utils.js +208 -0
  67. package/dist/src/accounts/utils.test.d.ts +2 -0
  68. package/dist/src/accounts/utils.test.d.ts.map +1 -0
  69. package/dist/src/accounts/utils.test.js +49 -0
  70. package/dist/src/accounts/walletClient.d.ts +34 -0
  71. package/dist/src/accounts/walletClient.d.ts.map +1 -0
  72. package/dist/src/accounts/walletClient.js +121 -0
  73. package/dist/src/actions/compact.d.ts +13 -0
  74. package/dist/src/actions/compact.d.ts.map +1 -0
  75. package/dist/src/actions/compact.js +210 -0
  76. package/dist/src/actions/deployment.d.ts +19 -0
  77. package/dist/src/actions/deployment.d.ts.map +1 -0
  78. package/dist/src/actions/deployment.js +78 -0
  79. package/dist/src/actions/ecdsa.d.ts +35 -0
  80. package/dist/src/actions/ecdsa.d.ts.map +1 -0
  81. package/dist/src/actions/ecdsa.js +114 -0
  82. package/dist/src/actions/ecdsa.test.d.ts +2 -0
  83. package/dist/src/actions/ecdsa.test.d.ts.map +1 -0
  84. package/dist/src/actions/ecdsa.test.js +99 -0
  85. package/dist/src/actions/index.d.ts +17 -0
  86. package/dist/src/actions/index.d.ts.map +1 -0
  87. package/dist/src/actions/index.js +53 -0
  88. package/dist/src/actions/mfa.d.ts +37 -0
  89. package/dist/src/actions/mfa.d.ts.map +1 -0
  90. package/dist/src/actions/mfa.js +133 -0
  91. package/dist/src/actions/passkeys.d.ts +37 -0
  92. package/dist/src/actions/passkeys.d.ts.map +1 -0
  93. package/dist/src/actions/passkeys.js +129 -0
  94. package/dist/src/actions/passkeys.test.d.ts +2 -0
  95. package/dist/src/actions/passkeys.test.d.ts.map +1 -0
  96. package/dist/src/actions/passkeys.test.js +54 -0
  97. package/dist/src/actions/recovery.d.ts +33 -0
  98. package/dist/src/actions/recovery.d.ts.map +1 -0
  99. package/dist/src/actions/recovery.js +193 -0
  100. package/dist/src/actions/recovery.test.d.ts +2 -0
  101. package/dist/src/actions/recovery.test.d.ts.map +1 -0
  102. package/dist/src/actions/recovery.test.js +168 -0
  103. package/dist/src/actions/smart-sessions.d.ts +14 -0
  104. package/dist/src/actions/smart-sessions.d.ts.map +1 -0
  105. package/dist/src/actions/smart-sessions.js +16 -0
  106. package/dist/src/errors/index.d.ts +5 -0
  107. package/dist/src/errors/index.d.ts.map +1 -0
  108. package/dist/src/errors/index.js +53 -0
  109. package/dist/src/execution/compact.d.ts +151 -0
  110. package/dist/src/execution/compact.d.ts.map +1 -0
  111. package/dist/src/execution/compact.js +122 -0
  112. package/dist/src/execution/error.d.ts +61 -0
  113. package/dist/src/execution/error.d.ts.map +1 -0
  114. package/dist/src/execution/error.js +87 -0
  115. package/dist/src/execution/index.d.ts +41 -0
  116. package/dist/src/execution/index.d.ts.map +1 -0
  117. package/dist/src/execution/index.js +233 -0
  118. package/dist/src/execution/permit2.d.ts +148 -0
  119. package/dist/src/execution/permit2.d.ts.map +1 -0
  120. package/dist/src/execution/permit2.js +291 -0
  121. package/dist/src/execution/singleChainOps.d.ts +28 -0
  122. package/dist/src/execution/singleChainOps.d.ts.map +1 -0
  123. package/dist/src/execution/singleChainOps.js +32 -0
  124. package/dist/src/execution/smart-session.d.ts +13 -0
  125. package/dist/src/execution/smart-session.d.ts.map +1 -0
  126. package/dist/src/execution/smart-session.js +178 -0
  127. package/dist/src/execution/types.d.ts +36 -0
  128. package/dist/src/execution/types.d.ts.map +1 -0
  129. package/dist/src/execution/types.js +2 -0
  130. package/dist/src/execution/utils.d.ts +83 -0
  131. package/dist/src/execution/utils.d.ts.map +1 -0
  132. package/dist/src/execution/utils.js +705 -0
  133. package/dist/src/index.d.ts +74 -0
  134. package/dist/src/index.d.ts.map +1 -0
  135. package/dist/src/index.js +317 -0
  136. package/dist/src/modules/abi/smart-sessions.d.ts +104 -0
  137. package/dist/src/modules/abi/smart-sessions.d.ts.map +1 -0
  138. package/dist/src/modules/abi/smart-sessions.js +131 -0
  139. package/dist/src/modules/chain-abstraction.d.ts +5 -0
  140. package/dist/src/modules/chain-abstraction.d.ts.map +1 -0
  141. package/dist/src/modules/chain-abstraction.js +7 -0
  142. package/dist/src/modules/common.d.ts +30 -0
  143. package/dist/src/modules/common.d.ts.map +1 -0
  144. package/dist/src/modules/common.js +42 -0
  145. package/dist/src/modules/index.d.ts +10 -0
  146. package/dist/src/modules/index.d.ts.map +1 -0
  147. package/dist/src/modules/index.js +94 -0
  148. package/dist/src/modules/index.test.d.ts +2 -0
  149. package/dist/src/modules/index.test.d.ts.map +1 -0
  150. package/dist/src/modules/index.test.js +81 -0
  151. package/dist/src/modules/legacy.d.ts +10 -0
  152. package/dist/src/modules/legacy.d.ts.map +1 -0
  153. package/dist/src/modules/legacy.js +65 -0
  154. package/dist/src/modules/read.d.ts +9 -0
  155. package/dist/src/modules/read.d.ts.map +1 -0
  156. package/dist/src/modules/read.js +125 -0
  157. package/dist/src/modules/validators/core.d.ts +29 -0
  158. package/dist/src/modules/validators/core.d.ts.map +1 -0
  159. package/dist/src/modules/validators/core.js +278 -0
  160. package/dist/src/modules/validators/core.test.d.ts +2 -0
  161. package/dist/src/modules/validators/core.test.d.ts.map +1 -0
  162. package/dist/src/modules/validators/core.test.js +101 -0
  163. package/dist/src/modules/validators/index.d.ts +4 -0
  164. package/dist/src/modules/validators/index.d.ts.map +1 -0
  165. package/dist/src/modules/validators/index.js +15 -0
  166. package/dist/src/modules/validators/smart-sessions.d.ts +96 -0
  167. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -0
  168. package/dist/src/modules/validators/smart-sessions.js +497 -0
  169. package/dist/src/modules/validators/smart-sessions.test.d.ts +2 -0
  170. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +1 -0
  171. package/dist/src/modules/validators/smart-sessions.test.js +219 -0
  172. package/dist/src/orchestrator/client.d.ts +27 -0
  173. package/dist/src/orchestrator/client.d.ts.map +1 -0
  174. package/dist/src/orchestrator/client.js +354 -0
  175. package/dist/src/orchestrator/consts.d.ts +5 -0
  176. package/dist/src/orchestrator/consts.d.ts.map +1 -0
  177. package/dist/src/orchestrator/consts.js +9 -0
  178. package/dist/src/orchestrator/error.d.ts +232 -0
  179. package/dist/src/orchestrator/error.d.ts.map +1 -0
  180. package/dist/src/orchestrator/error.js +268 -0
  181. package/dist/src/orchestrator/index.d.ts +10 -0
  182. package/dist/src/orchestrator/index.d.ts.map +1 -0
  183. package/dist/src/orchestrator/index.js +57 -0
  184. package/dist/src/orchestrator/registry.d.ts +22 -0
  185. package/dist/src/orchestrator/registry.d.ts.map +1 -0
  186. package/dist/src/orchestrator/registry.js +121 -0
  187. package/dist/src/orchestrator/registry.test.d.ts +2 -0
  188. package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
  189. package/dist/src/orchestrator/registry.test.js +150 -0
  190. package/dist/src/orchestrator/types.d.ts +295 -0
  191. package/dist/src/orchestrator/types.d.ts.map +1 -0
  192. package/dist/src/orchestrator/types.js +17 -0
  193. package/dist/src/orchestrator/utils.d.ts +3 -0
  194. package/dist/src/orchestrator/utils.d.ts.map +1 -0
  195. package/dist/src/orchestrator/utils.js +24 -0
  196. package/dist/src/types.d.ts +284 -0
  197. package/dist/src/types.d.ts.map +1 -0
  198. package/dist/src/types.js +2 -0
  199. package/dist/src/utils/index.d.ts +26 -0
  200. package/dist/src/utils/index.d.ts.map +1 -0
  201. package/dist/src/utils/index.js +63 -0
  202. package/dist/test/consts.d.ts +10 -0
  203. package/dist/test/consts.d.ts.map +1 -0
  204. package/dist/test/consts.js +22 -0
  205. package/dist/test/utils/utils.d.ts +5 -0
  206. package/dist/test/utils/utils.d.ts.map +1 -0
  207. package/dist/test/utils/utils.js +20 -0
  208. package/package.json +1 -1
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WEBAUTHN_V0_VALIDATOR_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.ENS_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
4
+ exports.getOwnerValidator = getOwnerValidator;
5
+ exports.getOwnableValidator = getOwnableValidator;
6
+ exports.getENSValidator = getENSValidator;
7
+ exports.getWebAuthnValidator = getWebAuthnValidator;
8
+ exports.getMultiFactorValidator = getMultiFactorValidator;
9
+ exports.getSocialRecoveryValidator = getSocialRecoveryValidator;
10
+ exports.getValidator = getValidator;
11
+ exports.getMockSignature = getMockSignature;
12
+ exports.supportsEip712 = supportsEip712;
13
+ const viem_1 = require("viem");
14
+ const error_1 = require("../../accounts/error");
15
+ const common_1 = require("../common");
16
+ const OWNABLE_VALIDATOR_ADDRESS = '0x000000000013fdb5234e4e3162a810f54d9f7e98';
17
+ exports.OWNABLE_VALIDATOR_ADDRESS = OWNABLE_VALIDATOR_ADDRESS;
18
+ const ENS_VALIDATOR_ADDRESS = '0xdc38f07b060374b6480c4bf06231e7d10955bca4';
19
+ exports.ENS_VALIDATOR_ADDRESS = ENS_VALIDATOR_ADDRESS;
20
+ const WEBAUTHN_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f33';
21
+ exports.WEBAUTHN_VALIDATOR_ADDRESS = WEBAUTHN_VALIDATOR_ADDRESS;
22
+ const SOCIAL_RECOVERY_VALIDATOR_ADDRESS = '0xa04d053b3c8021e8d5bf641816c42daa75d8b597';
23
+ const MULTI_FACTOR_VALIDATOR_ADDRESS = '0xf6bdf42c9be18ceca5c06c42a43daf7fbbe7896b';
24
+ exports.MULTI_FACTOR_VALIDATOR_ADDRESS = MULTI_FACTOR_VALIDATOR_ADDRESS;
25
+ // Legacy
26
+ const OWNABLE_V0_VALIDATOR_ADDRESS = '0x2483da3a338895199e5e538530213157e931bf06';
27
+ const OWNABLE_BETA_VALIDATOR_ADDRESS = '0x0000000000e9e6e96bcaa3c113187cdb7e38aed9';
28
+ const WEBAUTHN_V0_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f33';
29
+ exports.WEBAUTHN_V0_VALIDATOR_ADDRESS = WEBAUTHN_V0_VALIDATOR_ADDRESS;
30
+ const ECDSA_MOCK_SIGNATURE = '0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b';
31
+ const WEBAUTHN_MOCK_SIGNATURE = '0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001b9b86eb98fda3ed4d797d9e690588dfadf17b329a76a47cec935bebf92d7ddc80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000019b2e9410bb6850f9f660a03d609d5a844fb96bcdc87a15139b03ee22c70f469100d2b865a215c3bf786387064effa8fcedcb1d625b5148f8a1236d5e3ff11acf000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22396a4546696a75684557724d34534f572d7443684a625545484550343456636a634a2d42716f3166544d38222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a38303830222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000';
32
+ function getOwnerValidator(config) {
33
+ if (!config.owners) {
34
+ throw new error_1.OwnersFieldRequiredError();
35
+ }
36
+ return getValidator(config.owners);
37
+ }
38
+ function getMockSignature(ownerSet) {
39
+ switch (ownerSet.type) {
40
+ case 'ecdsa':
41
+ case 'ens': {
42
+ // ENS validator uses same mock signature format as ECDSA for UserOps
43
+ const owners = ownerSet.accounts.map((account) => account.address);
44
+ const signatures = owners.map(() => ECDSA_MOCK_SIGNATURE);
45
+ return (0, viem_1.concat)(signatures);
46
+ }
47
+ case 'passkey':
48
+ return WEBAUTHN_MOCK_SIGNATURE;
49
+ case 'multi-factor': {
50
+ const mockValidators = ownerSet.validators.map((validator, index) => {
51
+ const validatorModule = getValidator(validator);
52
+ const signature = getMockSignature(validator);
53
+ return {
54
+ packedValidatorAndId: (0, viem_1.encodePacked)(['bytes12', 'address'], [
55
+ (0, viem_1.pad)((0, viem_1.toHex)(index), {
56
+ size: 12,
57
+ }),
58
+ validatorModule.address,
59
+ ]),
60
+ data: signature,
61
+ };
62
+ });
63
+ return (0, viem_1.encodeAbiParameters)([
64
+ {
65
+ components: [
66
+ {
67
+ internalType: 'bytes32',
68
+ name: 'packedValidatorAndId',
69
+ type: 'bytes32',
70
+ },
71
+ { internalType: 'bytes', name: 'data', type: 'bytes' },
72
+ ],
73
+ name: 'validators',
74
+ type: 'tuple[]',
75
+ },
76
+ ], [mockValidators]);
77
+ }
78
+ }
79
+ }
80
+ function getValidator(owners) {
81
+ switch (owners.type) {
82
+ case 'ecdsa':
83
+ return getOwnableValidator(owners.threshold ?? 1, owners.accounts.map((account) => account.address), owners.module);
84
+ case 'ens':
85
+ return getENSValidator(owners.threshold ?? 1, owners.accounts.map((account) => account.address), owners.ownerExpirations, owners.module);
86
+ case 'passkey':
87
+ return getWebAuthnValidator(owners.threshold ?? 1, owners.accounts.map((account) => ({
88
+ pubKey: account.publicKey,
89
+ authenticatorId: account.id,
90
+ })));
91
+ case 'multi-factor': {
92
+ return getMultiFactorValidator(owners.threshold ?? 1, owners.validators);
93
+ }
94
+ }
95
+ }
96
+ function getOwnableValidator(threshold, owners, address) {
97
+ return {
98
+ address: address ?? OWNABLE_VALIDATOR_ADDRESS,
99
+ initData: (0, viem_1.encodeAbiParameters)([
100
+ { name: 'threshold', type: 'uint256' },
101
+ { name: 'owners', type: 'address[]' },
102
+ ], [
103
+ BigInt(threshold),
104
+ owners.map((owner) => owner.toLowerCase()).sort(),
105
+ ]),
106
+ deInitData: '0x',
107
+ additionalContext: '0x',
108
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
109
+ };
110
+ }
111
+ function getENSValidator(threshold, owners, ownerExpirations, address) {
112
+ // format: (uint256 threshold, Owner[] owners)
113
+ // where Owner is a tuple of (address addr, uint48 expiration)
114
+ const ownerPairs = owners.map((owner, index) => ({
115
+ addr: owner.toLowerCase(),
116
+ expiration: ownerExpirations[index] ?? viem_1.maxUint48,
117
+ }));
118
+ // Sort by address to match ENS validator's expectations
119
+ const sortedPairs = ownerPairs.sort((a, b) => a.addr.localeCompare(b.addr));
120
+ const ownersWithExpiration = sortedPairs;
121
+ const initData = (0, viem_1.encodeAbiParameters)([
122
+ { name: 'threshold', type: 'uint256' },
123
+ {
124
+ name: 'owners',
125
+ type: 'tuple[]',
126
+ components: [
127
+ { name: 'addr', type: 'address' },
128
+ { name: 'expiration', type: 'uint48' },
129
+ ],
130
+ },
131
+ ], [BigInt(threshold), ownersWithExpiration]);
132
+ const moduleAddress = address ?? ENS_VALIDATOR_ADDRESS;
133
+ return {
134
+ address: moduleAddress,
135
+ initData,
136
+ deInitData: '0x',
137
+ additionalContext: '0x',
138
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
139
+ };
140
+ }
141
+ function getWebAuthnValidator(threshold, webAuthnCredentials, address) {
142
+ function getPublicKey(webAuthnCredential) {
143
+ if (typeof webAuthnCredential.pubKey === 'string' ||
144
+ webAuthnCredential.pubKey instanceof Uint8Array) {
145
+ // It's a P256Credential
146
+ const { x, y, prefix } = parsePublicKey(webAuthnCredential.pubKey);
147
+ if (prefix && prefix !== 4) {
148
+ throw new Error('Only uncompressed public keys are supported');
149
+ }
150
+ return {
151
+ x,
152
+ y,
153
+ };
154
+ }
155
+ else {
156
+ // It's already a PublicKey
157
+ return webAuthnCredential.pubKey;
158
+ }
159
+ }
160
+ const publicKeys = webAuthnCredentials.map(getPublicKey);
161
+ return {
162
+ address: address ?? WEBAUTHN_VALIDATOR_ADDRESS,
163
+ initData: (0, viem_1.encodeAbiParameters)([
164
+ { name: 'threshold', type: 'uint256' },
165
+ {
166
+ name: 'credentials',
167
+ type: 'tuple[]',
168
+ components: [
169
+ {
170
+ name: 'pubKeyX',
171
+ type: 'uint256',
172
+ },
173
+ {
174
+ name: 'pubKeyY',
175
+ type: 'uint256',
176
+ },
177
+ {
178
+ name: 'requireUV',
179
+ type: 'bool',
180
+ },
181
+ ],
182
+ },
183
+ ], [
184
+ BigInt(threshold),
185
+ publicKeys.map((publicKey) => ({
186
+ pubKeyX: publicKey.x,
187
+ pubKeyY: publicKey.y,
188
+ requireUV: false,
189
+ })),
190
+ ]),
191
+ deInitData: '0x',
192
+ additionalContext: '0x',
193
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
194
+ };
195
+ }
196
+ function getMultiFactorValidator(threshold, validators) {
197
+ return {
198
+ address: MULTI_FACTOR_VALIDATOR_ADDRESS,
199
+ initData: (0, viem_1.encodePacked)(['uint8', 'bytes'], [
200
+ threshold,
201
+ (0, viem_1.encodeAbiParameters)([
202
+ {
203
+ components: [
204
+ {
205
+ internalType: 'bytes32',
206
+ name: 'packedValidatorAndId',
207
+ type: 'bytes32',
208
+ },
209
+ { internalType: 'bytes', name: 'data', type: 'bytes' },
210
+ ],
211
+ name: 'validators',
212
+ type: 'tuple[]',
213
+ },
214
+ ], [
215
+ validators
216
+ .map((validator, index) => {
217
+ if (validator === null) {
218
+ return null;
219
+ }
220
+ const validatorModule = getValidator(validator);
221
+ return {
222
+ packedValidatorAndId: (0, viem_1.concat)([
223
+ (0, viem_1.pad)((0, viem_1.toHex)(index), {
224
+ size: 12,
225
+ }),
226
+ validatorModule.address,
227
+ ]),
228
+ data: validatorModule.initData,
229
+ };
230
+ })
231
+ .filter((validator) => validator !== null),
232
+ ]),
233
+ ]),
234
+ deInitData: '0x',
235
+ additionalContext: '0x',
236
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
237
+ };
238
+ }
239
+ function getSocialRecoveryValidator(guardians, threshold = 1) {
240
+ const guardianAddresses = guardians.map((guardian) => guardian.address);
241
+ guardianAddresses.sort();
242
+ return {
243
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
244
+ address: SOCIAL_RECOVERY_VALIDATOR_ADDRESS,
245
+ initData: (0, viem_1.encodeAbiParameters)([
246
+ {
247
+ type: 'uint256',
248
+ name: 'threshold',
249
+ },
250
+ {
251
+ type: 'address[]',
252
+ name: 'guardians',
253
+ },
254
+ ], [BigInt(threshold), guardianAddresses]),
255
+ deInitData: '0x',
256
+ additionalContext: '0x',
257
+ };
258
+ }
259
+ function parsePublicKey(publicKey) {
260
+ const bytes = typeof publicKey === 'string' ? (0, viem_1.hexToBytes)(publicKey) : publicKey;
261
+ const offset = bytes.length === 65 ? 1 : 0;
262
+ const x = bytes.slice(offset, 32 + offset);
263
+ const y = bytes.slice(32 + offset, 64 + offset);
264
+ return {
265
+ prefix: bytes.length === 65 ? bytes[0] : undefined,
266
+ x: BigInt((0, viem_1.bytesToHex)(x)),
267
+ y: BigInt((0, viem_1.bytesToHex)(y)),
268
+ };
269
+ }
270
+ function supportsEip712(validator) {
271
+ switch (validator.address.toLowerCase()) {
272
+ case OWNABLE_BETA_VALIDATOR_ADDRESS: // Ownable Validator V1-beta
273
+ case OWNABLE_V0_VALIDATOR_ADDRESS: // Ownable Validator V0
274
+ return false;
275
+ default:
276
+ return true;
277
+ }
278
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=core.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.test.d.ts","sourceRoot":"","sources":["../../../../modules/validators/core.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const viem_1 = require("viem");
4
+ const vitest_1 = require("vitest");
5
+ const consts_1 = require("../../../test/consts");
6
+ const common_1 = require("../common");
7
+ const core_1 = require("./core");
8
+ (0, vitest_1.describe)('Validators Core', () => {
9
+ (0, vitest_1.describe)('Validator', () => {
10
+ (0, vitest_1.test)('ECDSA: single address', () => {
11
+ const validator = (0, core_1.getValidator)({
12
+ type: 'ecdsa',
13
+ accounts: [consts_1.accountA],
14
+ });
15
+ (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
16
+ (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
17
+ (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
18
+ (0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
19
+ });
20
+ (0, vitest_1.test)('ECDSA: two addresses', () => {
21
+ const validator = (0, core_1.getValidator)({
22
+ type: 'ecdsa',
23
+ accounts: [consts_1.accountA, consts_1.accountB],
24
+ });
25
+ (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
26
+ (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
27
+ (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
28
+ (0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
29
+ });
30
+ (0, vitest_1.test)('ECDSA: three addresses, custom threshold', () => {
31
+ const validator = (0, core_1.getValidator)({
32
+ type: 'ecdsa',
33
+ accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
34
+ threshold: 2,
35
+ });
36
+ (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
37
+ (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
38
+ (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
39
+ (0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000c27b7578151c5ef713c62c65db09763d57ac3596000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
40
+ });
41
+ (0, vitest_1.test)('Passkey', () => {
42
+ const validator = (0, core_1.getValidator)({
43
+ type: 'passkey',
44
+ accounts: [consts_1.passkeyAccount],
45
+ });
46
+ (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
47
+ (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
48
+ (0, vitest_1.expect)(validator.address).toEqual('0x0000000000578c4cb0e472a5462da43c495c3f33');
49
+ (0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d10000000000000000000000000000000000000000000000000000000000000000');
50
+ });
51
+ });
52
+ (0, vitest_1.describe)('Mock Signature', () => {
53
+ (0, vitest_1.test)('ECDSA: single address', () => {
54
+ const signature = (0, core_1.getMockSignature)({
55
+ type: 'ecdsa',
56
+ accounts: [consts_1.accountA],
57
+ });
58
+ (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(65);
59
+ });
60
+ (0, vitest_1.test)('ECDSA: multiple addresses', () => {
61
+ const signature = (0, core_1.getMockSignature)({
62
+ type: 'ecdsa',
63
+ accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
64
+ });
65
+ (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(3 * 65);
66
+ });
67
+ (0, vitest_1.test)('Passkey', () => {
68
+ const signature = (0, core_1.getMockSignature)({
69
+ type: 'passkey',
70
+ accounts: [consts_1.passkeyAccount],
71
+ });
72
+ // Should have the proper schema
73
+ (0, viem_1.decodeAbiParameters)([
74
+ {
75
+ type: 'bytes',
76
+ name: 'authenticatorData',
77
+ },
78
+ {
79
+ type: 'string',
80
+ name: 'clientDataJSON',
81
+ },
82
+ {
83
+ type: 'uint256',
84
+ name: 'challengeIndex',
85
+ },
86
+ {
87
+ type: 'uint256',
88
+ name: 'typeIndex',
89
+ },
90
+ {
91
+ type: 'uint256',
92
+ name: 'r',
93
+ },
94
+ {
95
+ type: 'uint256',
96
+ name: 's',
97
+ },
98
+ ], signature);
99
+ });
100
+ });
101
+ });
@@ -0,0 +1,4 @@
1
+ import { getMockSignature, getOwnerValidator } from './core';
2
+ import { encodeSmartSessionSignature, getEnableSessionCall, getPermissionId, getSmartSessionValidator, isSessionEnabled, SMART_SESSION_MODE_ENABLE, SMART_SESSION_MODE_USE, SMART_SESSIONS_VALIDATOR_ADDRESS } from './smart-sessions';
3
+ export { SMART_SESSION_MODE_USE, SMART_SESSION_MODE_ENABLE, SMART_SESSIONS_VALIDATOR_ADDRESS, getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, encodeSmartSessionSignature, getPermissionId, getMockSignature, isSessionEnabled, };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSessionEnabled = exports.getMockSignature = exports.getPermissionId = exports.encodeSmartSessionSignature = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = exports.SMART_SESSIONS_VALIDATOR_ADDRESS = exports.SMART_SESSION_MODE_ENABLE = exports.SMART_SESSION_MODE_USE = void 0;
4
+ const core_1 = require("./core");
5
+ Object.defineProperty(exports, "getMockSignature", { enumerable: true, get: function () { return core_1.getMockSignature; } });
6
+ Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return core_1.getOwnerValidator; } });
7
+ const smart_sessions_1 = require("./smart-sessions");
8
+ Object.defineProperty(exports, "encodeSmartSessionSignature", { enumerable: true, get: function () { return smart_sessions_1.encodeSmartSessionSignature; } });
9
+ Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
10
+ Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
11
+ Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
12
+ Object.defineProperty(exports, "isSessionEnabled", { enumerable: true, get: function () { return smart_sessions_1.isSessionEnabled; } });
13
+ Object.defineProperty(exports, "SMART_SESSION_MODE_ENABLE", { enumerable: true, get: function () { return smart_sessions_1.SMART_SESSION_MODE_ENABLE; } });
14
+ Object.defineProperty(exports, "SMART_SESSION_MODE_USE", { enumerable: true, get: function () { return smart_sessions_1.SMART_SESSION_MODE_USE; } });
15
+ Object.defineProperty(exports, "SMART_SESSIONS_VALIDATOR_ADDRESS", { enumerable: true, get: function () { return smart_sessions_1.SMART_SESSIONS_VALIDATOR_ADDRESS; } });
@@ -0,0 +1,96 @@
1
+ import { type Address, type Hex, type PublicClient } from 'viem';
2
+ import type { RhinestoneAccountConfig, Session } from '../../types';
3
+ import { type Module } from '../common';
4
+ interface SessionData {
5
+ sessionValidator: Address;
6
+ sessionValidatorInitData: Hex;
7
+ salt: Hex;
8
+ userOpPolicies: readonly UserOpPolicy[];
9
+ erc7739Policies: {
10
+ allowedERC7739Content: readonly AllowedERC7739Content[];
11
+ erc1271Policies: readonly ERC1271Policy[];
12
+ };
13
+ actions: readonly ActionData[];
14
+ permitERC4337Paymaster: boolean;
15
+ }
16
+ interface UserOpPolicy {
17
+ policy: Address;
18
+ initData: Hex;
19
+ }
20
+ interface ERC1271Policy {
21
+ policy: Address;
22
+ initData: Hex;
23
+ }
24
+ interface AllowedERC7739Content {
25
+ appDomainSeparator: Hex;
26
+ contentName: readonly string[];
27
+ }
28
+ interface ActionData {
29
+ actionTargetSelector: Hex;
30
+ actionTarget: Address;
31
+ actionPolicies: readonly PolicyData[];
32
+ }
33
+ interface PolicyData {
34
+ policy: Address;
35
+ initData: Hex;
36
+ }
37
+ type SmartSessionModeType = typeof SMART_SESSION_MODE_USE | typeof SMART_SESSION_MODE_ENABLE | typeof SMART_SESSION_MODE_UNSAFE_ENABLE;
38
+ interface ChainDigest {
39
+ chainId: bigint;
40
+ sessionDigest: Hex;
41
+ }
42
+ interface SignedPermissions {
43
+ permitGenericPolicy: boolean;
44
+ permitAdminAccess: boolean;
45
+ ignoreSecurityAttestations: boolean;
46
+ permitERC4337Paymaster: boolean;
47
+ userOpPolicies: readonly PolicyData[];
48
+ erc7739Policies: ERC7739Data;
49
+ actions: readonly ActionData[];
50
+ }
51
+ interface SignedSession {
52
+ account: Address;
53
+ permissions: SignedPermissions;
54
+ sessionValidator: Address;
55
+ sessionValidatorInitData: Hex;
56
+ salt: Hex;
57
+ smartSession: Address;
58
+ nonce: bigint;
59
+ }
60
+ interface ChainSession {
61
+ chainId: bigint;
62
+ session: SignedSession;
63
+ }
64
+ interface ERC7739Data {
65
+ allowedERC7739Content: readonly ERC7739Context[];
66
+ erc1271Policies: readonly PolicyData[];
67
+ }
68
+ interface ERC7739Context {
69
+ appDomainSeparator: Hex;
70
+ contentName: readonly string[];
71
+ }
72
+ interface EnableSessionData {
73
+ chainDigestIndex: number;
74
+ hashesAndChainIds: ChainDigest[];
75
+ sessionToEnable: SessionData;
76
+ signature: Hex;
77
+ }
78
+ declare const SMART_SESSIONS_VALIDATOR_ADDRESS: Address;
79
+ declare const SMART_SESSION_MODE_USE = "0x00";
80
+ declare const SMART_SESSION_MODE_ENABLE = "0x01";
81
+ declare const SMART_SESSION_MODE_UNSAFE_ENABLE = "0x02";
82
+ declare const SMART_SESSIONS_FALLBACK_TARGET_FLAG: Address;
83
+ declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG: Hex;
84
+ declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION: Hex;
85
+ declare function getEnableSessionCall(session: Session): Promise<{
86
+ to: `0x${string}`;
87
+ data: `0x${string}`;
88
+ }>;
89
+ declare function getSmartSessionData(session: Session): SessionData;
90
+ declare function getSmartSessionValidator(config: RhinestoneAccountConfig): Module | null;
91
+ declare function isSessionEnabled(client: PublicClient, address: Address, permissionId: Hex): Promise<boolean>;
92
+ declare function encodeSmartSessionSignature(mode: SmartSessionModeType, permissionId: Hex, signature: Hex, enableSessionData?: EnableSessionData): `0x${string}`;
93
+ declare function getPermissionId(session: Session): `0x${string}`;
94
+ export { SMART_SESSION_MODE_USE, SMART_SESSION_MODE_ENABLE, SMART_SESSIONS_VALIDATOR_ADDRESS, SMART_SESSIONS_FALLBACK_TARGET_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION, getSmartSessionData, getSmartSessionValidator, getEnableSessionCall, encodeSmartSessionSignature, getPermissionId, isSessionEnabled, };
95
+ export type { EnableSessionData, ChainSession, ChainDigest, SessionData, SmartSessionModeType, };
96
+ //# sourceMappingURL=smart-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"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"}