@charterlabs/rhinestone-sdk 0.3.0 → 0.3.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 (129) hide show
  1. package/README.md +31 -200
  2. package/dist/src/accounts/error.d.ts +8 -1
  3. package/dist/src/accounts/error.d.ts.map +1 -1
  4. package/dist/src/accounts/error.js +10 -1
  5. package/dist/src/accounts/index.d.ts +11 -10
  6. package/dist/src/accounts/index.d.ts.map +1 -1
  7. package/dist/src/accounts/index.js +79 -50
  8. package/dist/src/accounts/kernel.d.ts +3 -5
  9. package/dist/src/accounts/kernel.d.ts.map +1 -1
  10. package/dist/src/accounts/kernel.js +8 -17
  11. package/dist/src/accounts/kernel.test.js +10 -3
  12. package/dist/src/accounts/nexus.d.ts +3 -5
  13. package/dist/src/accounts/nexus.d.ts.map +1 -1
  14. package/dist/src/accounts/nexus.js +108 -57
  15. package/dist/src/accounts/nexus.test.js +10 -3
  16. package/dist/src/accounts/passport.d.ts +4 -7
  17. package/dist/src/accounts/passport.d.ts.map +1 -1
  18. package/dist/src/accounts/passport.js +0 -91
  19. package/dist/src/accounts/safe.d.ts +9 -4
  20. package/dist/src/accounts/safe.d.ts.map +1 -1
  21. package/dist/src/accounts/safe.js +108 -38
  22. package/dist/src/accounts/safe.test.js +10 -3
  23. package/dist/src/accounts/signing/common.d.ts +3 -3
  24. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  25. package/dist/src/accounts/signing/common.js +29 -5
  26. package/dist/src/accounts/signing/message.js +2 -2
  27. package/dist/src/accounts/signing/typedData.d.ts.map +1 -1
  28. package/dist/src/accounts/signing/typedData.js +3 -3
  29. package/dist/src/accounts/startale.d.ts +2 -4
  30. package/dist/src/accounts/startale.d.ts.map +1 -1
  31. package/dist/src/accounts/startale.js +0 -4
  32. package/dist/src/accounts/utils.d.ts.map +1 -1
  33. package/dist/src/accounts/utils.js +10 -3
  34. package/dist/src/accounts/walletClient.d.ts.map +1 -1
  35. package/dist/src/accounts/walletClient.js +6 -0
  36. package/dist/src/actions/compact.d.ts +4 -2
  37. package/dist/src/actions/compact.d.ts.map +1 -1
  38. package/dist/src/actions/compact.js +4 -1
  39. package/dist/src/actions/deployment.d.ts +19 -0
  40. package/dist/src/actions/deployment.d.ts.map +1 -0
  41. package/dist/src/actions/deployment.js +78 -0
  42. package/dist/src/actions/index.d.ts +3 -1
  43. package/dist/src/actions/index.d.ts.map +1 -1
  44. package/dist/src/actions/index.js +12 -0
  45. package/dist/src/actions/smart-sessions.d.ts +17 -8
  46. package/dist/src/actions/smart-sessions.d.ts.map +1 -1
  47. package/dist/src/actions/smart-sessions.js +40 -4
  48. package/dist/src/errors/index.d.ts +3 -3
  49. package/dist/src/errors/index.d.ts.map +1 -1
  50. package/dist/src/errors/index.js +3 -1
  51. package/dist/src/execution/compact.d.ts +15 -18
  52. package/dist/src/execution/compact.d.ts.map +1 -1
  53. package/dist/src/execution/compact.js +15 -17
  54. package/dist/src/execution/error.d.ts +2 -8
  55. package/dist/src/execution/error.d.ts.map +1 -1
  56. package/dist/src/execution/error.js +1 -10
  57. package/dist/src/execution/index.d.ts +6 -6
  58. package/dist/src/execution/index.d.ts.map +1 -1
  59. package/dist/src/execution/index.js +22 -28
  60. package/dist/src/execution/permit2.d.ts +12 -17
  61. package/dist/src/execution/permit2.d.ts.map +1 -1
  62. package/dist/src/execution/permit2.js +10 -16
  63. package/dist/src/execution/singleChainOps.d.ts +15 -3
  64. package/dist/src/execution/singleChainOps.d.ts.map +1 -1
  65. package/dist/src/execution/singleChainOps.js +17 -3
  66. package/dist/src/execution/utils.d.ts +36 -12
  67. package/dist/src/execution/utils.d.ts.map +1 -1
  68. package/dist/src/execution/utils.js +180 -133
  69. package/dist/src/index.d.ts +26 -8
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +49 -16
  72. package/dist/src/modules/abi/smart-session-emissary.d.ts +696 -0
  73. package/dist/src/modules/abi/smart-session-emissary.d.ts.map +1 -0
  74. package/dist/src/modules/abi/smart-session-emissary.js +565 -0
  75. package/dist/src/modules/chain-abstraction.d.ts +5 -0
  76. package/dist/src/modules/chain-abstraction.d.ts.map +1 -0
  77. package/dist/src/modules/chain-abstraction.js +7 -0
  78. package/dist/src/modules/common.d.ts +7 -1
  79. package/dist/src/modules/common.d.ts.map +1 -1
  80. package/dist/src/modules/index.d.ts +3 -9
  81. package/dist/src/modules/index.d.ts.map +1 -1
  82. package/dist/src/modules/index.js +11 -8
  83. package/dist/src/modules/index.test.js +3 -9
  84. package/dist/src/modules/legacy.d.ts +10 -0
  85. package/dist/src/modules/legacy.d.ts.map +1 -0
  86. package/dist/src/modules/legacy.js +65 -0
  87. package/dist/src/modules/validators/core.d.ts +2 -1
  88. package/dist/src/modules/validators/core.d.ts.map +1 -1
  89. package/dist/src/modules/validators/core.js +4 -1
  90. package/dist/src/modules/validators/index.d.ts +2 -2
  91. package/dist/src/modules/validators/index.d.ts.map +1 -1
  92. package/dist/src/modules/validators/index.js +1 -6
  93. package/dist/src/modules/validators/smart-sessions.d.ts +112 -23
  94. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  95. package/dist/src/modules/validators/smart-sessions.js +426 -301
  96. package/dist/src/orchestrator/client.d.ts +3 -4
  97. package/dist/src/orchestrator/client.d.ts.map +1 -1
  98. package/dist/src/orchestrator/client.js +49 -53
  99. package/dist/src/orchestrator/error.d.ts +11 -1
  100. package/dist/src/orchestrator/error.d.ts.map +1 -1
  101. package/dist/src/orchestrator/error.js +16 -1
  102. package/dist/src/orchestrator/index.d.ts +5 -5
  103. package/dist/src/orchestrator/index.d.ts.map +1 -1
  104. package/dist/src/orchestrator/index.js +3 -1
  105. package/dist/src/orchestrator/registry.d.ts +3 -2
  106. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  107. package/dist/src/orchestrator/registry.js +15 -14
  108. package/dist/src/orchestrator/registry.test.js +18 -1
  109. package/dist/src/orchestrator/types.d.ts +33 -8
  110. package/dist/src/orchestrator/types.d.ts.map +1 -1
  111. package/dist/src/orchestrator/types.js +15 -1
  112. package/dist/src/types.d.ts +57 -28
  113. package/dist/src/types.d.ts.map +1 -1
  114. package/dist/src/utils/index.d.ts +14 -2
  115. package/dist/src/utils/index.d.ts.map +1 -1
  116. package/dist/src/utils/index.js +46 -4
  117. package/dist/test/utils/utils.d.ts +5 -0
  118. package/dist/test/utils/utils.d.ts.map +1 -0
  119. package/dist/test/utils/utils.js +20 -0
  120. package/package.json +33 -3
  121. package/dist/src/execution/smart-session.d.ts +0 -13
  122. package/dist/src/execution/smart-session.d.ts.map +0 -1
  123. package/dist/src/execution/smart-session.js +0 -178
  124. package/dist/src/modules/omni-account.d.ts +0 -8
  125. package/dist/src/modules/omni-account.d.ts.map +0 -1
  126. package/dist/src/modules/omni-account.js +0 -13
  127. package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
  128. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
  129. package/dist/src/modules/validators/smart-sessions.test.js +0 -222
@@ -1,222 +0,0 @@
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 smart_sessions_1 = require("../abi/smart-sessions");
7
- const common_1 = require("../common");
8
- const smart_sessions_2 = require("./smart-sessions");
9
- (0, vitest_1.describe)('Smart Sessions', () => {
10
- (0, vitest_1.describe)('Permission ID', () => {
11
- (0, vitest_1.test)('default', () => {
12
- (0, vitest_1.expect)((0, smart_sessions_2.getPermissionId)({
13
- owners: {
14
- type: 'ecdsa',
15
- accounts: [consts_1.accountA, consts_1.accountB],
16
- },
17
- })).toBe('0xd3b39024e437b4cac278e33965b9a9326e81ee46bd45d890adbfc8eb45412fa1');
18
- });
19
- (0, vitest_1.test)('with salt', () => {
20
- (0, vitest_1.expect)((0, smart_sessions_2.getPermissionId)({
21
- owners: {
22
- type: 'ecdsa',
23
- accounts: [consts_1.accountA, consts_1.accountB],
24
- },
25
- salt: '0x97340e1cfff3319c76ef22b2bc9d3231071d550125d68c9d4a8972823f166320',
26
- })).toBe('0xeb47b4699298a847a0f6fb7365e56aefcc95630e7d0e3d9ca5917620c7dc3d08');
27
- });
28
- });
29
- (0, vitest_1.describe)('Smart Session Validator', () => {
30
- (0, vitest_1.test)('no session', () => {
31
- (0, vitest_1.expect)((0, smart_sessions_2.getSmartSessionValidator)({
32
- owners: {
33
- type: 'ecdsa',
34
- accounts: [consts_1.accountA],
35
- },
36
- })).toBeNull();
37
- });
38
- (0, vitest_1.test)('empty session list', () => {
39
- (0, vitest_1.expect)((0, smart_sessions_2.getSmartSessionValidator)({
40
- owners: {
41
- type: 'ecdsa',
42
- accounts: [consts_1.accountA],
43
- },
44
- sessions: [],
45
- })).not.toBeNull();
46
- });
47
- (0, vitest_1.test)('single session', () => {
48
- const validator = (0, smart_sessions_2.getSmartSessionValidator)({
49
- owners: {
50
- type: 'ecdsa',
51
- accounts: [consts_1.accountA],
52
- },
53
- sessions: [
54
- {
55
- owners: {
56
- type: 'ecdsa',
57
- accounts: [consts_1.accountA],
58
- },
59
- },
60
- ],
61
- });
62
- (0, vitest_1.expect)(validator).not.toBeNull();
63
- (0, vitest_1.expect)(validator?.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
64
- (0, vitest_1.expect)(validator && (0, viem_1.isAddress)(validator.address)).toEqual(true);
65
- });
66
- });
67
- (0, vitest_1.describe)('Enable Session Call', () => {
68
- vitest_1.vi.mock('viem', async (importOriginal) => {
69
- const actual = await importOriginal();
70
- return {
71
- // @ts-ignore
72
- ...actual,
73
- createPublicClient: vitest_1.vi.fn().mockReturnValue({
74
- readContract: vitest_1.vi.fn(),
75
- }),
76
- };
77
- });
78
- const client = viem_1.createPublicClient;
79
- client.mockImplementation((_) => {
80
- return {
81
- readContract: (params) => {
82
- if (params.functionName === 'DOMAIN_SEPARATOR') {
83
- return '0xf5f6dfa751763cc5278cba45d03ea9797c1660b2cb7f5ffd188fa3e8523abdca';
84
- }
85
- throw new Error('Unknown function call');
86
- },
87
- };
88
- });
89
- const TARGET = '0x063DFbDb1610EC7BbfA1fFBE603Ac5aA1B67a935';
90
- const SELECTOR = '0x12345678';
91
- const FALLBACK_TARGET = '0x0000000000000000000000000000000000000001';
92
- const FALLBACK_SELECTOR = '0x00000001';
93
- (0, vitest_1.test)('default', async () => {
94
- const call = await (0, smart_sessions_2.getEnableSessionCall)({
95
- owners: {
96
- type: 'ecdsa',
97
- accounts: [consts_1.accountA],
98
- },
99
- });
100
- const sessionData = toSessionData(call);
101
- // Should have a fallback action
102
- (0, vitest_1.expect)(sessionData.actions.some((action) => action.actionTarget === FALLBACK_TARGET &&
103
- action.actionTargetSelector === FALLBACK_SELECTOR)).toEqual(true);
104
- });
105
- (0, vitest_1.test)('with action', async () => {
106
- const call = await (0, smart_sessions_2.getEnableSessionCall)({
107
- owners: {
108
- type: 'ecdsa',
109
- accounts: [consts_1.accountA],
110
- },
111
- actions: [
112
- {
113
- target: TARGET,
114
- selector: SELECTOR,
115
- },
116
- ],
117
- });
118
- const sessionData = toSessionData(call);
119
- // Should have the action
120
- (0, vitest_1.expect)(sessionData.actions.some((action) => action.actionTarget === TARGET &&
121
- action.actionTargetSelector === SELECTOR)).toEqual(true);
122
- // Should not have the fallback action
123
- (0, vitest_1.expect)(sessionData.actions.some((action) => action.actionTarget === FALLBACK_TARGET &&
124
- action.actionTargetSelector === FALLBACK_SELECTOR)).toEqual(false);
125
- });
126
- (0, vitest_1.test)('with policy', async () => {
127
- const call = await (0, smart_sessions_2.getEnableSessionCall)({
128
- owners: {
129
- type: 'ecdsa',
130
- accounts: [consts_1.accountA],
131
- },
132
- policies: [
133
- {
134
- type: 'sudo',
135
- },
136
- {
137
- type: 'universal-action',
138
- rules: [
139
- {
140
- condition: 'equal',
141
- calldataOffset: 0n,
142
- referenceValue: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045',
143
- },
144
- ],
145
- },
146
- ],
147
- });
148
- const sessionData = toSessionData(call);
149
- // Should have two policies
150
- (0, vitest_1.expect)(sessionData.userOpPolicies.length).toEqual(2);
151
- (0, vitest_1.expect)((0, viem_1.isAddress)(sessionData.userOpPolicies[0].policy)).toEqual(true);
152
- (0, vitest_1.expect)((0, viem_1.isHex)(sessionData.userOpPolicies[0].initData)).toEqual(true);
153
- (0, vitest_1.expect)((0, viem_1.isAddress)(sessionData.userOpPolicies[1].policy)).toEqual(true);
154
- (0, vitest_1.expect)((0, viem_1.isHex)(sessionData.userOpPolicies[1].initData)).toEqual(true);
155
- });
156
- (0, vitest_1.test)('with action policy', async () => {
157
- const call = await (0, smart_sessions_2.getEnableSessionCall)({
158
- owners: {
159
- type: 'ecdsa',
160
- accounts: [consts_1.accountA],
161
- },
162
- actions: [
163
- {
164
- target: TARGET,
165
- selector: SELECTOR,
166
- policies: [
167
- {
168
- type: 'sudo',
169
- },
170
- {
171
- type: 'universal-action',
172
- rules: [
173
- {
174
- condition: 'equal',
175
- calldataOffset: 0n,
176
- referenceValue: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045',
177
- },
178
- ],
179
- },
180
- ],
181
- },
182
- ],
183
- });
184
- const sessionData = toSessionData(call);
185
- // Should have the action
186
- const action = sessionData.actions.find((action) => action.actionTarget === TARGET &&
187
- action.actionTargetSelector === SELECTOR);
188
- (0, vitest_1.expect)(action).toBeDefined();
189
- if (!action) {
190
- throw new Error('No action');
191
- }
192
- // Should have 2 policies
193
- const actionPolicies = action.actionPolicies;
194
- (0, vitest_1.expect)(actionPolicies.length).toEqual(2);
195
- (0, vitest_1.expect)((0, viem_1.isAddress)(actionPolicies[0].policy)).toEqual(true);
196
- (0, vitest_1.expect)((0, viem_1.isHex)(actionPolicies[0].initData)).toEqual(true);
197
- (0, vitest_1.expect)((0, viem_1.isAddress)(actionPolicies[1].policy)).toEqual(true);
198
- (0, vitest_1.expect)((0, viem_1.isHex)(actionPolicies[1].initData)).toEqual(true);
199
- });
200
- function toSessionData(call) {
201
- (0, vitest_1.expect)((0, viem_1.isHex)(call.data)).toEqual(true);
202
- (0, vitest_1.expect)((0, viem_1.isAddress)(call.to)).toEqual(true);
203
- const decoded = (0, viem_1.decodeFunctionData)({
204
- abi: smart_sessions_1.enableSessionsAbi,
205
- data: call.data,
206
- });
207
- (0, vitest_1.expect)(decoded.functionName).toEqual('enableSessions');
208
- (0, vitest_1.expect)(decoded.args.length).toEqual(1);
209
- (0, vitest_1.expect)(decoded.args[0].length).toEqual(1);
210
- const session = decoded.args[0][0];
211
- return session;
212
- }
213
- });
214
- (0, vitest_1.describe)('Encode Smart Session Signature', () => {
215
- (0, vitest_1.test)('use mode', () => {
216
- const permissionId = '0xd3b39024e437b4cac278e33965b9a9326e81ee46bd45d890adbfc8eb45412fa1';
217
- const signature = '0xabcdef';
218
- const sessionSignature = (0, smart_sessions_2.encodeSmartSessionSignature)(smart_sessions_2.SMART_SESSION_MODE_USE, permissionId, signature);
219
- (0, vitest_1.expect)(sessionSignature).toEqual('0x00d3b39024e437b4cac278e33965b9a9326e81ee46bd45d890adbfc8eb45412fa1abcdef');
220
- });
221
- });
222
- });