@charterlabs/rhinestone-sdk 0.1.1 → 0.1.2

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 (194) hide show
  1. package/README.md +74 -181
  2. package/dist/src/accounts/error.d.ts +69 -0
  3. package/dist/src/accounts/error.d.ts.map +1 -0
  4. package/dist/src/accounts/error.js +109 -0
  5. package/dist/{accounts → src/accounts}/index.d.ts +14 -21
  6. package/dist/src/accounts/index.d.ts.map +1 -0
  7. package/dist/src/accounts/index.js +469 -0
  8. package/dist/src/accounts/index.test.d.ts +2 -0
  9. package/dist/src/accounts/index.test.d.ts.map +1 -0
  10. package/dist/src/accounts/index.test.js +36 -0
  11. package/dist/{accounts → src/accounts}/kernel.d.ts +7 -9
  12. package/dist/src/accounts/kernel.d.ts.map +1 -0
  13. package/dist/{accounts → src/accounts}/kernel.js +0 -8
  14. package/dist/src/accounts/kernel.test.d.ts +2 -0
  15. package/dist/src/accounts/kernel.test.d.ts.map +1 -0
  16. package/dist/src/accounts/kernel.test.js +105 -0
  17. package/dist/{accounts → src/accounts}/nexus.d.ts +14 -13
  18. package/dist/src/accounts/nexus.d.ts.map +1 -0
  19. package/dist/{accounts → src/accounts}/nexus.js +92 -88
  20. package/dist/src/accounts/nexus.test.d.ts +2 -0
  21. package/dist/src/accounts/nexus.test.d.ts.map +1 -0
  22. package/dist/src/accounts/nexus.test.js +87 -0
  23. package/dist/{accounts → src/accounts}/safe.d.ts +4 -6
  24. package/dist/src/accounts/safe.d.ts.map +1 -0
  25. package/dist/{accounts → src/accounts}/safe.js +20 -29
  26. package/dist/src/accounts/safe.test.d.ts +2 -0
  27. package/dist/src/accounts/safe.test.d.ts.map +1 -0
  28. package/dist/src/accounts/safe.test.js +87 -0
  29. package/dist/src/accounts/startale.d.ts +20 -0
  30. package/dist/src/accounts/startale.d.ts.map +1 -0
  31. package/dist/src/accounts/startale.js +100 -0
  32. package/dist/src/accounts/startale.test.d.ts +2 -0
  33. package/dist/src/accounts/startale.test.d.ts.map +1 -0
  34. package/dist/src/accounts/startale.test.js +99 -0
  35. package/dist/{accounts → src/accounts}/utils.d.ts +4 -3
  36. package/dist/src/accounts/utils.d.ts.map +1 -0
  37. package/dist/{accounts → src/accounts}/utils.js +44 -0
  38. package/dist/src/accounts/utils.test.d.ts +2 -0
  39. package/dist/src/accounts/utils.test.d.ts.map +1 -0
  40. package/dist/src/accounts/utils.test.js +49 -0
  41. package/dist/src/actions/index.d.ts +39 -0
  42. package/dist/src/actions/index.d.ts.map +1 -0
  43. package/dist/{actions → src/actions}/index.js +108 -15
  44. package/dist/src/actions/index.test.d.ts +2 -0
  45. package/dist/src/actions/index.test.d.ts.map +1 -0
  46. package/dist/src/actions/index.test.js +302 -0
  47. package/dist/{actions → src/actions}/smart-session.d.ts +2 -2
  48. package/dist/src/actions/smart-session.d.ts.map +1 -0
  49. package/dist/src/execution/compact.d.ts +8 -0
  50. package/dist/src/execution/compact.d.ts.map +1 -0
  51. package/dist/src/execution/compact.js +105 -0
  52. package/dist/src/execution/error.d.ts +54 -0
  53. package/dist/src/execution/error.d.ts.map +1 -0
  54. package/dist/src/execution/error.js +78 -0
  55. package/dist/{execution → src/execution}/index.d.ts +7 -6
  56. package/dist/src/execution/index.d.ts.map +1 -0
  57. package/dist/src/execution/index.js +150 -0
  58. package/dist/src/execution/smart-session.d.ts +15 -0
  59. package/dist/src/execution/smart-session.d.ts.map +1 -0
  60. package/dist/{execution → src/execution}/smart-session.js +16 -77
  61. package/dist/src/execution/smart-session.test.d.ts +2 -0
  62. package/dist/src/execution/smart-session.test.d.ts.map +1 -0
  63. package/dist/src/execution/smart-session.test.js +34 -0
  64. package/dist/src/execution/utils.d.ts +45 -0
  65. package/dist/src/execution/utils.d.ts.map +1 -0
  66. package/dist/src/execution/utils.js +433 -0
  67. package/dist/src/index.d.ts +41 -0
  68. package/dist/src/index.d.ts.map +1 -0
  69. package/dist/src/index.js +154 -0
  70. package/dist/src/modules/abi/smart-sessions.d.ts.map +1 -0
  71. package/dist/src/modules/common.d.ts.map +1 -0
  72. package/dist/{modules → src/modules}/index.d.ts +3 -11
  73. package/dist/src/modules/index.d.ts.map +1 -0
  74. package/dist/{modules → src/modules}/index.js +3 -45
  75. package/dist/src/modules/index.test.d.ts +2 -0
  76. package/dist/src/modules/index.test.d.ts.map +1 -0
  77. package/dist/src/modules/index.test.js +107 -0
  78. package/dist/src/modules/omni-account.d.ts +7 -0
  79. package/dist/src/modules/omni-account.d.ts.map +1 -0
  80. package/dist/src/modules/omni-account.js +11 -0
  81. package/dist/src/modules/read.d.ts +9 -0
  82. package/dist/src/modules/read.d.ts.map +1 -0
  83. package/dist/{modules → src/modules}/read.js +6 -37
  84. package/dist/{modules → src/modules}/validators/core.d.ts +6 -7
  85. package/dist/src/modules/validators/core.d.ts.map +1 -0
  86. package/dist/{modules → src/modules}/validators/core.js +83 -8
  87. package/dist/src/modules/validators/core.test.d.ts +2 -0
  88. package/dist/src/modules/validators/core.test.d.ts.map +1 -0
  89. package/dist/src/modules/validators/core.test.js +108 -0
  90. package/dist/src/modules/validators/index.d.ts +4 -0
  91. package/dist/src/modules/validators/index.d.ts.map +1 -0
  92. package/dist/{modules → src/modules}/validators/index.js +1 -3
  93. package/dist/{modules → src/modules}/validators/smart-sessions.d.ts +4 -15
  94. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -0
  95. package/dist/{modules → src/modules}/validators/smart-sessions.js +7 -61
  96. package/dist/src/modules/validators/smart-sessions.test.d.ts +2 -0
  97. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +1 -0
  98. package/dist/src/modules/validators/smart-sessions.test.js +226 -0
  99. package/dist/src/orchestrator/client.d.ts +21 -0
  100. package/dist/src/orchestrator/client.d.ts.map +1 -0
  101. package/dist/src/orchestrator/client.js +284 -0
  102. package/dist/src/orchestrator/consts.d.ts +5 -0
  103. package/dist/src/orchestrator/consts.d.ts.map +1 -0
  104. package/dist/src/orchestrator/consts.js +9 -0
  105. package/dist/src/orchestrator/error.d.ts +96 -0
  106. package/dist/src/orchestrator/error.d.ts.map +1 -0
  107. package/dist/src/orchestrator/error.js +132 -0
  108. package/dist/src/orchestrator/index.d.ts +11 -0
  109. package/dist/src/orchestrator/index.d.ts.map +1 -0
  110. package/dist/src/orchestrator/index.js +42 -0
  111. package/dist/src/orchestrator/registry.d.ts +39 -0
  112. package/dist/src/orchestrator/registry.d.ts.map +1 -0
  113. package/dist/src/orchestrator/registry.js +121 -0
  114. package/dist/src/orchestrator/registry.json +365 -0
  115. package/dist/src/orchestrator/registry.test.d.ts +2 -0
  116. package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
  117. package/dist/src/orchestrator/registry.test.js +137 -0
  118. package/dist/src/orchestrator/types.d.ts +275 -0
  119. package/dist/src/orchestrator/types.d.ts.map +1 -0
  120. package/dist/src/orchestrator/types.js +19 -0
  121. package/dist/src/orchestrator/utils.d.ts +5 -0
  122. package/dist/src/orchestrator/utils.d.ts.map +1 -0
  123. package/dist/src/orchestrator/utils.js +126 -0
  124. package/dist/{types.d.ts → src/types.d.ts} +42 -21
  125. package/dist/src/types.d.ts.map +1 -0
  126. package/dist/test/consts.d.ts +10 -0
  127. package/dist/test/consts.d.ts.map +1 -0
  128. package/dist/test/consts.js +22 -0
  129. package/package.json +11 -20
  130. package/dist/accounts/index.d.ts.map +0 -1
  131. package/dist/accounts/index.js +0 -419
  132. package/dist/accounts/kernel.d.ts.map +0 -1
  133. package/dist/accounts/nexus.d.ts.map +0 -1
  134. package/dist/accounts/safe.d.ts.map +0 -1
  135. package/dist/accounts/utils.d.ts.map +0 -1
  136. package/dist/actions/index.d.ts +0 -29
  137. package/dist/actions/index.d.ts.map +0 -1
  138. package/dist/actions/registry.d.ts +0 -7
  139. package/dist/actions/registry.d.ts.map +0 -1
  140. package/dist/actions/registry.js +0 -7
  141. package/dist/actions/smart-session.d.ts.map +0 -1
  142. package/dist/execution/index.d.ts.map +0 -1
  143. package/dist/execution/index.js +0 -149
  144. package/dist/execution/smart-session.d.ts +0 -23
  145. package/dist/execution/smart-session.d.ts.map +0 -1
  146. package/dist/execution/utils.d.ts +0 -68
  147. package/dist/execution/utils.d.ts.map +0 -1
  148. package/dist/execution/utils.js +0 -482
  149. package/dist/index.d.ts +0 -38
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/index.js +0 -119
  152. package/dist/modules/abi/smart-sessions.d.ts.map +0 -1
  153. package/dist/modules/common.d.ts.map +0 -1
  154. package/dist/modules/index.d.ts.map +0 -1
  155. package/dist/modules/omni-account.d.ts +0 -9
  156. package/dist/modules/omni-account.d.ts.map +0 -1
  157. package/dist/modules/omni-account.js +0 -15
  158. package/dist/modules/read.d.ts +0 -10
  159. package/dist/modules/read.d.ts.map +0 -1
  160. package/dist/modules/registry.d.ts +0 -9
  161. package/dist/modules/registry.d.ts.map +0 -1
  162. package/dist/modules/registry.js +0 -60
  163. package/dist/modules/validators/core.d.ts.map +0 -1
  164. package/dist/modules/validators/index.d.ts +0 -4
  165. package/dist/modules/validators/index.d.ts.map +0 -1
  166. package/dist/modules/validators/smart-sessions.d.ts.map +0 -1
  167. package/dist/orchestrator/client.d.ts +0 -29
  168. package/dist/orchestrator/client.d.ts.map +0 -1
  169. package/dist/orchestrator/client.js +0 -250
  170. package/dist/orchestrator/consts.d.ts +0 -5
  171. package/dist/orchestrator/consts.d.ts.map +0 -1
  172. package/dist/orchestrator/consts.js +0 -9
  173. package/dist/orchestrator/error.d.ts +0 -18
  174. package/dist/orchestrator/error.d.ts.map +0 -1
  175. package/dist/orchestrator/error.js +0 -33
  176. package/dist/orchestrator/index.d.ts +0 -11
  177. package/dist/orchestrator/index.d.ts.map +0 -1
  178. package/dist/orchestrator/index.js +0 -40
  179. package/dist/orchestrator/registry.d.ts +0 -20
  180. package/dist/orchestrator/registry.d.ts.map +0 -1
  181. package/dist/orchestrator/registry.js +0 -444
  182. package/dist/orchestrator/types.d.ts +0 -242
  183. package/dist/orchestrator/types.d.ts.map +0 -1
  184. package/dist/orchestrator/types.js +0 -19
  185. package/dist/orchestrator/utils.d.ts +0 -29
  186. package/dist/orchestrator/utils.d.ts.map +0 -1
  187. package/dist/orchestrator/utils.js +0 -319
  188. package/dist/types.d.ts.map +0 -1
  189. /package/dist/{actions → src/actions}/smart-session.js +0 -0
  190. /package/dist/{modules → src/modules}/abi/smart-sessions.d.ts +0 -0
  191. /package/dist/{modules → src/modules}/abi/smart-sessions.js +0 -0
  192. /package/dist/{modules → src/modules}/common.d.ts +0 -0
  193. /package/dist/{modules → src/modules}/common.js +0 -0
  194. /package/dist/{types.js → src/types.js} +0 -0
@@ -1,19 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
3
+ exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
4
4
  exports.getOwnerValidator = getOwnerValidator;
5
5
  exports.getOwnableValidator = getOwnableValidator;
6
6
  exports.getWebAuthnValidator = getWebAuthnValidator;
7
+ exports.getMultiFactorValidator = getMultiFactorValidator;
7
8
  exports.getSocialRecoveryValidator = getSocialRecoveryValidator;
8
9
  exports.getValidator = getValidator;
9
10
  exports.getMockSignature = getMockSignature;
10
11
  const viem_1 = require("viem");
11
12
  const common_1 = require("../common");
12
- const OWNABLE_VALIDATOR_ADDRESS = '0x2483DA3A338895199E5e538530213157e931Bf06';
13
+ const OWNABLE_VALIDATOR_ADDRESS = '0x0000000000E9E6E96Bcaa3c113187CdB7E38AED9';
13
14
  exports.OWNABLE_VALIDATOR_ADDRESS = OWNABLE_VALIDATOR_ADDRESS;
14
- const WEBAUTHN_VALIDATOR_ADDRESS = '0xb9E9CcF81464482897c687Dc876606961C547A77';
15
+ const WEBAUTHN_VALIDATOR_ADDRESS = '0x0000000000578c4cB0e472a5462da43C495C3F33';
15
16
  exports.WEBAUTHN_VALIDATOR_ADDRESS = WEBAUTHN_VALIDATOR_ADDRESS;
16
17
  const SOCIAL_RECOVERY_VALIDATOR_ADDRESS = '0xA04D053b3C8021e8D5bF641816c42dAA75D8b597';
18
+ const MULTI_FACTOR_VALIDATOR_ADDRESS = '0xf6bDf42c9BE18cEcA5C06c42A43DAf7FBbe7896b';
19
+ exports.MULTI_FACTOR_VALIDATOR_ADDRESS = MULTI_FACTOR_VALIDATOR_ADDRESS;
17
20
  const ECDSA_MOCK_SIGNATURE = '0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b';
18
21
  const WEBAUTHN_MOCK_SIGNATURE = '0x00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001635bc6d0f68ff895cae8a288ecf7542a6a9cd555df784b73e1e2ea7e9104b1db15e9015d280cb19527881c625fee43fd3a405d5b0d199a8c8e6589a7381209e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f47b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22746278584e465339585f3442797231634d77714b724947422d5f3330613051685a36793775634d30424f45222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a33303030222c2263726f73734f726967696e223a66616c73652c20226f746865725f6b6579735f63616e5f62655f61646465645f68657265223a22646f206e6f7420636f6d7061726520636c69656e74446174614a534f4e20616761696e737420612074656d706c6174652e205365652068747470733a2f2f676f6f2e676c2f796162506578227d000000000000000000000000';
19
22
  function getOwnerValidator(config) {
@@ -28,23 +31,52 @@ function getMockSignature(ownerSet) {
28
31
  }
29
32
  case 'passkey':
30
33
  return WEBAUTHN_MOCK_SIGNATURE;
34
+ case 'multi-factor': {
35
+ const mockValidators = ownerSet.validators.map((validator, index) => {
36
+ const validatorModule = getValidator(validator);
37
+ const signature = getMockSignature(validator);
38
+ return {
39
+ packedValidatorAndId: (0, viem_1.encodePacked)(['bytes12', 'address'], [
40
+ (0, viem_1.pad)((0, viem_1.toHex)(index), {
41
+ size: 12,
42
+ }),
43
+ validatorModule.address,
44
+ ]),
45
+ data: signature,
46
+ };
47
+ });
48
+ return (0, viem_1.encodeAbiParameters)([
49
+ {
50
+ components: [
51
+ {
52
+ internalType: 'bytes32',
53
+ name: 'packedValidatorAndId',
54
+ type: 'bytes32',
55
+ },
56
+ { internalType: 'bytes', name: 'data', type: 'bytes' },
57
+ ],
58
+ name: 'validators',
59
+ type: 'tuple[]',
60
+ },
61
+ ], [mockValidators]);
62
+ }
31
63
  }
32
64
  }
33
65
  function getValidator(owners) {
34
66
  switch (owners.type) {
35
67
  case 'ecdsa':
36
- return getOwnableValidator({
37
- threshold: owners.threshold ?? 1,
38
- owners: owners.accounts.map((account) => account.address),
39
- });
68
+ return getOwnableValidator(owners.threshold ?? 1, owners.accounts.map((account) => account.address));
40
69
  case 'passkey':
41
70
  return getWebAuthnValidator({
42
71
  pubKey: owners.account.publicKey,
43
72
  authenticatorId: owners.account.id,
44
73
  });
74
+ case 'multi-factor': {
75
+ return getMultiFactorValidator(owners.threshold ?? 1, owners.validators);
76
+ }
45
77
  }
46
78
  }
47
- function getOwnableValidator({ threshold, owners, }) {
79
+ function getOwnableValidator(threshold, owners) {
48
80
  return {
49
81
  address: OWNABLE_VALIDATOR_ADDRESS,
50
82
  initData: (0, viem_1.encodeAbiParameters)([
@@ -102,6 +134,49 @@ function getWebAuthnValidator(webAuthnCredential) {
102
134
  type: common_1.MODULE_TYPE_ID_VALIDATOR,
103
135
  };
104
136
  }
137
+ function getMultiFactorValidator(threshold, validators) {
138
+ return {
139
+ address: MULTI_FACTOR_VALIDATOR_ADDRESS,
140
+ initData: (0, viem_1.encodePacked)(['uint8', 'bytes'], [
141
+ threshold,
142
+ (0, viem_1.encodeAbiParameters)([
143
+ {
144
+ components: [
145
+ {
146
+ internalType: 'bytes32',
147
+ name: 'packedValidatorAndId',
148
+ type: 'bytes32',
149
+ },
150
+ { internalType: 'bytes', name: 'data', type: 'bytes' },
151
+ ],
152
+ name: 'validators',
153
+ type: 'tuple[]',
154
+ },
155
+ ], [
156
+ validators
157
+ .map((validator, index) => {
158
+ if (validator === null) {
159
+ return null;
160
+ }
161
+ const validatorModule = getValidator(validator);
162
+ return {
163
+ packedValidatorAndId: (0, viem_1.concat)([
164
+ (0, viem_1.pad)((0, viem_1.toHex)(index), {
165
+ size: 12,
166
+ }),
167
+ validatorModule.address,
168
+ ]),
169
+ data: validatorModule.initData,
170
+ };
171
+ })
172
+ .filter((validator) => validator !== null),
173
+ ]),
174
+ ]),
175
+ deInitData: '0x',
176
+ additionalContext: '0x',
177
+ type: common_1.MODULE_TYPE_ID_VALIDATOR,
178
+ };
179
+ }
105
180
  function getSocialRecoveryValidator(guardians, threshold = 1) {
106
181
  const guardianAddresses = guardians.map((guardian) => guardian.address);
107
182
  guardianAddresses.sort();
@@ -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,108 @@
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('0x0000000000E9E6E96Bcaa3c113187CdB7E38AED9');
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('0x0000000000E9E6E96Bcaa3c113187CdB7E38AED9');
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('0x0000000000E9E6E96Bcaa3c113187CdB7E38AED9');
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
+ account: consts_1.passkeyAccount,
45
+ credentialIds: ['0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'],
46
+ });
47
+ (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
48
+ (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
49
+ (0, vitest_1.expect)(validator.address).toEqual('0x0000000000578c4cB0e472a5462da43C495C3F33');
50
+ (0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000001' +
51
+ '0000000000000000000000000000000000000000000000000000000000000040' +
52
+ '0000000000000000000000000000000000000000000000000000000000000001' +
53
+ '580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d373763' +
54
+ '7d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d1' +
55
+ '0000000000000000000000000000000000000000000000000000000000000000');
56
+ });
57
+ });
58
+ (0, vitest_1.describe)('Mock Signature', () => {
59
+ (0, vitest_1.test)('ECDSA: single address', () => {
60
+ const signature = (0, core_1.getMockSignature)({
61
+ type: 'ecdsa',
62
+ accounts: [consts_1.accountA],
63
+ });
64
+ (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(65);
65
+ });
66
+ (0, vitest_1.test)('ECDSA: multiple addresses', () => {
67
+ const signature = (0, core_1.getMockSignature)({
68
+ type: 'ecdsa',
69
+ accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
70
+ });
71
+ (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(3 * 65);
72
+ });
73
+ (0, vitest_1.test)('Passkey', () => {
74
+ const signature = (0, core_1.getMockSignature)({
75
+ type: 'passkey',
76
+ account: consts_1.passkeyAccount,
77
+ credentialIds: ['0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'],
78
+ });
79
+ // Should have the proper schema
80
+ (0, viem_1.decodeAbiParameters)([
81
+ {
82
+ type: 'bytes',
83
+ name: 'authenticatorData',
84
+ },
85
+ {
86
+ type: 'string',
87
+ name: 'clientDataJSON',
88
+ },
89
+ {
90
+ type: 'uint256',
91
+ name: 'challengeIndex',
92
+ },
93
+ {
94
+ type: 'uint256',
95
+ name: 'typeIndex',
96
+ },
97
+ {
98
+ type: 'uint256',
99
+ name: 'r',
100
+ },
101
+ {
102
+ type: 'uint256',
103
+ name: 's',
104
+ },
105
+ ], signature);
106
+ });
107
+ });
108
+ });
@@ -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"}
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSessionAllowedERC7739Content = exports.isSessionEnabled = exports.getAccountEIP712Domain = 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;
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
4
  const core_1 = require("./core");
5
5
  Object.defineProperty(exports, "getMockSignature", { enumerable: true, get: function () { return core_1.getMockSignature; } });
6
6
  Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return core_1.getOwnerValidator; } });
7
7
  const smart_sessions_1 = require("./smart-sessions");
8
8
  Object.defineProperty(exports, "encodeSmartSessionSignature", { enumerable: true, get: function () { return smart_sessions_1.encodeSmartSessionSignature; } });
9
- Object.defineProperty(exports, "getAccountEIP712Domain", { enumerable: true, get: function () { return smart_sessions_1.getAccountEIP712Domain; } });
10
9
  Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
11
10
  Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
12
- Object.defineProperty(exports, "getSessionAllowedERC7739Content", { enumerable: true, get: function () { return smart_sessions_1.getSessionAllowedERC7739Content; } });
13
11
  Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
14
12
  Object.defineProperty(exports, "isSessionEnabled", { enumerable: true, get: function () { return smart_sessions_1.isSessionEnabled; } });
15
13
  Object.defineProperty(exports, "SMART_SESSION_MODE_ENABLE", { enumerable: true, get: function () { return smart_sessions_1.SMART_SESSION_MODE_ENABLE; } });
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Chain, type Hex, type PublicClient } from 'viem';
2
- import type { AccountType, RhinestoneAccountConfig, Session } from '../../types';
2
+ import type { AccountType, ProviderConfig, RhinestoneAccountConfig, Session } from '../../types';
3
3
  import { type Module } from '../common';
4
4
  interface SessionData {
5
5
  sessionValidator: Address;
@@ -82,26 +82,15 @@ declare const SMART_SESSIONS_VALIDATOR_ADDRESS: Address;
82
82
  declare const SMART_SESSION_MODE_USE = "0x00";
83
83
  declare const SMART_SESSION_MODE_ENABLE = "0x01";
84
84
  declare const SMART_SESSION_MODE_UNSAFE_ENABLE = "0x02";
85
- declare function getSessionData(chain: Chain, session: Session): Promise<SessionData>;
86
- declare function getEnableSessionCall(chain: Chain, session: Session): Promise<{
85
+ declare function getSessionData(chain: Chain, session: Session, provider?: ProviderConfig): Promise<SessionData>;
86
+ declare function getEnableSessionCall(chain: Chain, session: Session, provider?: ProviderConfig): Promise<{
87
87
  to: `0x${string}`;
88
88
  data: `0x${string}`;
89
89
  }>;
90
- declare function getSessionAllowedERC7739Content(chain: Chain): Promise<{
91
- appDomainSeparator: `0x${string}`;
92
- contentsType: string;
93
- }>;
94
90
  declare function getSmartSessionValidator(config: RhinestoneAccountConfig): Module | null;
95
91
  declare function isSessionEnabled(client: PublicClient, address: Address, permissionId: Hex): Promise<boolean>;
96
92
  declare function encodeSmartSessionSignature(mode: SmartSessionModeType, permissionId: Hex, signature: Hex, enableSessionData?: EnableSessionData): `0x${string}`;
97
93
  declare function getPermissionId(session: Session): `0x${string}`;
98
- declare function getAccountEIP712Domain(client: PublicClient, account: Address): Promise<{
99
- name: string;
100
- version: string;
101
- chainId: bigint;
102
- verifyingContract: `0x${string}`;
103
- salt: `0x${string}`;
104
- }>;
105
- export { SMART_SESSION_MODE_USE, SMART_SESSION_MODE_ENABLE, SMART_SESSIONS_VALIDATOR_ADDRESS, getSessionData, getSmartSessionValidator, getEnableSessionCall, encodeSmartSessionSignature, getPermissionId, getAccountEIP712Domain, isSessionEnabled, getSessionAllowedERC7739Content, };
94
+ export { SMART_SESSION_MODE_USE, SMART_SESSION_MODE_ENABLE, SMART_SESSIONS_VALIDATOR_ADDRESS, getSessionData, getSmartSessionValidator, getEnableSessionCall, encodeSmartSessionSignature, getPermissionId, isSessionEnabled, };
106
95
  export type { EnableSessionData, ChainSession, ChainDigest, SessionData, SmartSessionModeType, };
107
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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"}
@@ -6,11 +6,10 @@ exports.getSmartSessionValidator = getSmartSessionValidator;
6
6
  exports.getEnableSessionCall = getEnableSessionCall;
7
7
  exports.encodeSmartSessionSignature = encodeSmartSessionSignature;
8
8
  exports.getPermissionId = getPermissionId;
9
- exports.getAccountEIP712Domain = getAccountEIP712Domain;
10
9
  exports.isSessionEnabled = isSessionEnabled;
11
- exports.getSessionAllowedERC7739Content = getSessionAllowedERC7739Content;
12
10
  const solady_1 = require("solady");
13
11
  const viem_1 = require("viem");
12
+ const utils_1 = require("../../accounts/utils");
14
13
  const orchestrator_1 = require("../../orchestrator");
15
14
  const smart_sessions_1 = require("../abi/smart-sessions");
16
15
  const common_1 = require("../common");
@@ -38,8 +37,8 @@ const ACTION_CONDITION_GREATER_THAN_OR_EQUAL = 3;
38
37
  const ACTION_CONDITION_LESS_THAN_OR_EQUAL = 4;
39
38
  const ACTION_CONDITION_NOT_EQUAL = 5;
40
39
  const ACTION_CONDITION_IN_RANGE = 6;
41
- async function getSessionData(chain, session) {
42
- const { appDomainSeparator, contentsType } = await getSessionAllowedERC7739Content(chain);
40
+ async function getSessionData(chain, session, provider) {
41
+ const { appDomainSeparator, contentsType } = await getSessionAllowedERC7739Content(chain, provider);
43
42
  const allowedERC7739Content = [
44
43
  {
45
44
  appDomainSeparator,
@@ -48,8 +47,8 @@ async function getSessionData(chain, session) {
48
47
  ];
49
48
  return getSmartSessionData(chain, session, allowedERC7739Content);
50
49
  }
51
- async function getEnableSessionCall(chain, session) {
52
- const { appDomainSeparator, contentsType } = await getSessionAllowedERC7739Content(chain);
50
+ async function getEnableSessionCall(chain, session, provider) {
51
+ const { appDomainSeparator, contentsType } = await getSessionAllowedERC7739Content(chain, provider);
53
52
  const allowedERC7739Content = [
54
53
  {
55
54
  appDomainSeparator,
@@ -92,10 +91,10 @@ function getOmniAccountActions(chain) {
92
91
  ];
93
92
  return omniActions;
94
93
  }
95
- async function getSessionAllowedERC7739Content(chain) {
94
+ async function getSessionAllowedERC7739Content(chain, provider) {
96
95
  const publicClient = (0, viem_1.createPublicClient)({
97
96
  chain,
98
- transport: (0, viem_1.http)(),
97
+ transport: (0, utils_1.createTransport)(chain, provider),
99
98
  });
100
99
  const appDomainSeparator = await publicClient.readContract({
101
100
  address: omni_account_1.HOOK_ADDRESS,
@@ -543,56 +542,3 @@ function getPermissionId(session) {
543
542
  session.salt ?? viem_1.zeroHash,
544
543
  ]));
545
544
  }
546
- async function getAccountEIP712Domain(client, account) {
547
- const data = await client.readContract({
548
- address: account,
549
- abi: [
550
- {
551
- type: 'function',
552
- name: 'eip712Domain',
553
- inputs: [],
554
- outputs: [
555
- {
556
- type: 'bytes1',
557
- name: 'fields,',
558
- },
559
- {
560
- type: 'string',
561
- name: 'name',
562
- },
563
- {
564
- type: 'string',
565
- name: 'version',
566
- },
567
- {
568
- type: 'uint256',
569
- name: 'chainId',
570
- },
571
- {
572
- type: 'address',
573
- name: 'verifyingContract',
574
- },
575
- {
576
- type: 'bytes32',
577
- name: 'salt',
578
- },
579
- {
580
- type: 'uint256[]',
581
- name: 'extensions',
582
- },
583
- ],
584
- stateMutability: 'view',
585
- constant: true,
586
- },
587
- ],
588
- functionName: 'eip712Domain',
589
- args: [],
590
- });
591
- return {
592
- name: data[1],
593
- version: data[2],
594
- chainId: data[3],
595
- verifyingContract: data[4],
596
- salt: data[5],
597
- };
598
- }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smart-sessions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-sessions.test.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.test.ts"],"names":[],"mappings":""}