@rhinestone/sdk 0.12.2 → 0.12.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 (55) hide show
  1. package/dist/src/accounts/index.d.ts +5 -3
  2. package/dist/src/accounts/index.d.ts.map +1 -1
  3. package/dist/src/accounts/index.js +16 -15
  4. package/dist/src/accounts/kernel.d.ts +2 -1
  5. package/dist/src/accounts/kernel.d.ts.map +1 -1
  6. package/dist/src/accounts/kernel.js +7 -1
  7. package/dist/src/accounts/nexus.d.ts +2 -1
  8. package/dist/src/accounts/nexus.d.ts.map +1 -1
  9. package/dist/src/accounts/nexus.js +7 -1
  10. package/dist/src/accounts/safe.d.ts +2 -1
  11. package/dist/src/accounts/safe.d.ts.map +1 -1
  12. package/dist/src/accounts/safe.js +7 -1
  13. package/dist/src/accounts/utils.d.ts.map +1 -1
  14. package/dist/src/accounts/utils.js +15 -2
  15. package/dist/src/actions/index.d.ts +3 -1
  16. package/dist/src/actions/index.d.ts.map +1 -1
  17. package/dist/src/actions/index.js +5 -0
  18. package/dist/src/actions/registry.d.ts +7 -0
  19. package/dist/src/actions/registry.d.ts.map +1 -0
  20. package/dist/src/actions/registry.js +7 -0
  21. package/dist/src/actions/registry.test.d.ts +2 -0
  22. package/dist/src/actions/registry.test.d.ts.map +1 -0
  23. package/dist/src/actions/registry.test.js +25 -0
  24. package/dist/src/actions/smart-session.d.ts +5 -0
  25. package/dist/src/actions/smart-session.d.ts.map +1 -0
  26. package/dist/src/actions/smart-session.js +7 -0
  27. package/dist/src/execution/index.d.ts +2 -2
  28. package/dist/src/execution/index.d.ts.map +1 -1
  29. package/dist/src/execution/index.js +4 -1
  30. package/dist/src/execution/smart-session.d.ts +11 -1
  31. package/dist/src/execution/smart-session.d.ts.map +1 -1
  32. package/dist/src/execution/smart-session.js +264 -0
  33. package/dist/src/execution/smart-session.test.js +28 -0
  34. package/dist/src/execution/utils.d.ts +3 -3
  35. package/dist/src/execution/utils.d.ts.map +1 -1
  36. package/dist/src/execution/utils.js +76 -7
  37. package/dist/src/index.d.ts +11 -3
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +25 -1
  40. package/dist/src/modules/index.d.ts +6 -1
  41. package/dist/src/modules/index.d.ts.map +1 -1
  42. package/dist/src/modules/index.js +15 -6
  43. package/dist/src/modules/read.d.ts +10 -0
  44. package/dist/src/modules/read.d.ts.map +1 -0
  45. package/dist/src/modules/read.js +152 -0
  46. package/dist/src/modules/validators/core.d.ts +2 -1
  47. package/dist/src/modules/validators/core.d.ts.map +1 -1
  48. package/dist/src/modules/validators/core.js +2 -1
  49. package/dist/src/modules/validators/smart-sessions.d.ts +49 -5
  50. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  51. package/dist/src/modules/validators/smart-sessions.js +176 -4
  52. package/dist/src/orchestrator/registry.d.ts +1 -1
  53. package/dist/src/types.d.ts +11 -2
  54. package/dist/src/types.d.ts.map +1 -1
  55. package/package.json +1 -1
@@ -3,12 +3,276 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enableSmartSession = enableSmartSession;
4
4
  exports.hashErc7739 = hashErc7739;
5
5
  exports.getSessionSignature = getSessionSignature;
6
+ exports.getSessionDetails = getSessionDetails;
7
+ exports.getMultichainDigest = getMultichainDigest;
6
8
  const viem_1 = require("viem");
7
9
  const accounts_1 = require("../accounts");
8
10
  const utils_1 = require("../accounts/utils");
9
11
  const modules_1 = require("../modules");
10
12
  const validators_1 = require("../modules/validators");
13
+ const smart_sessions_1 = require("../modules/validators/smart-sessions");
11
14
  const utils_2 = require("../orchestrator/utils");
15
+ async function getSessionDetails(config, sessions, sessionIndex, signature) {
16
+ const account = (0, accounts_1.getAccountProvider)(config);
17
+ const accountAddress = (0, accounts_1.getAddress)(config);
18
+ const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress);
19
+ const chain = sessions[sessionIndex].chain;
20
+ if (!chain) {
21
+ throw new Error('Session chain is required');
22
+ }
23
+ const validator = {
24
+ address: sessionDetails.enableSessionData.validator,
25
+ isRoot: true,
26
+ };
27
+ sessionDetails.enableSessionData.signature =
28
+ signature ??
29
+ (await (0, accounts_1.getPackedSignature)(config, config.owners, chain, validator, sessionDetails.permissionEnableHash));
30
+ return sessionDetails;
31
+ }
32
+ async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress) {
33
+ const chainDigests = [];
34
+ const chainSessions = [];
35
+ for (const session of sessions) {
36
+ const permissionId = (0, validators_1.getPermissionId)(session);
37
+ const publicClient = (0, viem_1.createPublicClient)({
38
+ chain: session.chain,
39
+ transport: (0, viem_1.http)(),
40
+ });
41
+ const sessionChain = session.chain;
42
+ if (!sessionChain) {
43
+ throw new Error('Session chain is required');
44
+ }
45
+ const sessionNonce = await getSessionNonce(publicClient, accountAddress, permissionId);
46
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session);
47
+ const sessionDigest = await getSessionDigest(publicClient, accountAddress, sessionData, permissionId, validators_1.SMART_SESSION_MODE_ENABLE);
48
+ chainDigests.push({
49
+ chainId: BigInt(sessionChain.id),
50
+ sessionDigest,
51
+ });
52
+ chainSessions.push({
53
+ chainId: BigInt(sessionChain.id),
54
+ session: {
55
+ permissions: {
56
+ permitGenericPolicy: false,
57
+ permitAdminAccess: false,
58
+ ignoreSecurityAttestations: false,
59
+ permitERC4337Paymaster: sessionData.permitERC4337Paymaster,
60
+ userOpPolicies: sessionData.userOpPolicies,
61
+ erc7739Policies: sessionData.erc7739Policies,
62
+ actions: sessionData.actions,
63
+ },
64
+ salt: sessionData.salt,
65
+ sessionValidator: sessionData.sessionValidator,
66
+ sessionValidatorInitData: sessionData.sessionValidatorInitData,
67
+ account: accountAddress,
68
+ smartSession: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
69
+ nonce: sessionNonce,
70
+ },
71
+ });
72
+ }
73
+ const permissionEnableHash = getMultichainDigest(chainDigests);
74
+ const sessionToEnable = sessions[sessionIndex || 0];
75
+ const sessionChain = sessionToEnable.chain;
76
+ if (!sessionChain) {
77
+ throw new Error('Session chain is required');
78
+ }
79
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable);
80
+ return {
81
+ permissionEnableHash,
82
+ mode: validators_1.SMART_SESSION_MODE_ENABLE,
83
+ hashesAndChainIds: chainDigests,
84
+ enableSessionData: {
85
+ permissionId: (0, validators_1.getPermissionId)(sessionToEnable),
86
+ validator: sessionData.sessionValidator,
87
+ accountType,
88
+ chainDigestIndex: sessionIndex,
89
+ hashesAndChainIds: chainDigests,
90
+ sessionToEnable: sessionData,
91
+ signature: '0x',
92
+ },
93
+ };
94
+ }
95
+ function getMultichainDigest(chainDigests) {
96
+ function hashChainDigestMimicRPC(chainDigest) {
97
+ const CHAIN_SESSION_TYPEHASH = '0x1ea7e4bc398fa0ccd68d92b5d8931a3fd93eebe1cf0391b4ba28935801af7c80';
98
+ return (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'uint256', 'bytes32'], [
99
+ CHAIN_SESSION_TYPEHASH,
100
+ chainDigest.chainId,
101
+ chainDigest.sessionDigest,
102
+ ]));
103
+ }
104
+ function hashChainDigestArray(chainDigests) {
105
+ const hashes = chainDigests.map((digest) => hashChainDigestMimicRPC(digest));
106
+ return (0, viem_1.keccak256)((0, viem_1.concat)(hashes));
107
+ }
108
+ const MULTICHAIN_SESSION_TYPEHASH = '0x0c9d02fb89a1da34d66ea2088dc9ee6a58efee71cef6f1bb849ed74fc6003d98';
109
+ const MULTICHAIN_DOMAIN_SEPARATOR = '0x057501e891776d1482927e5f094ae44049a4d893ba2d7b334dd7db8d38d3a0e1';
110
+ const structHash = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'bytes32'], [MULTICHAIN_SESSION_TYPEHASH, hashChainDigestArray(chainDigests)]));
111
+ return (0, viem_1.keccak256)((0, viem_1.concat)(['0x1901', MULTICHAIN_DOMAIN_SEPARATOR, structHash]));
112
+ }
113
+ async function getSessionNonce(client, account, permissionId) {
114
+ return (await client.readContract({
115
+ address: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
116
+ abi: [
117
+ {
118
+ type: 'function',
119
+ name: 'getNonce',
120
+ inputs: [
121
+ {
122
+ name: 'permissionId',
123
+ type: 'bytes32',
124
+ internalType: 'PermissionId',
125
+ },
126
+ { name: 'account', type: 'address', internalType: 'address' },
127
+ ],
128
+ outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
129
+ stateMutability: 'view',
130
+ },
131
+ ],
132
+ functionName: 'getNonce',
133
+ args: [permissionId, account],
134
+ }));
135
+ }
136
+ async function getSessionDigest(client, account, session, permissionId, mode) {
137
+ return (await client.readContract({
138
+ address: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
139
+ abi: [
140
+ {
141
+ type: 'function',
142
+ name: 'getSessionDigest',
143
+ inputs: [
144
+ {
145
+ name: 'permissionId',
146
+ type: 'bytes32',
147
+ internalType: 'PermissionId',
148
+ },
149
+ { name: 'account', type: 'address', internalType: 'address' },
150
+ {
151
+ name: 'data',
152
+ type: 'tuple',
153
+ internalType: 'struct Session',
154
+ components: [
155
+ {
156
+ name: 'sessionValidator',
157
+ type: 'address',
158
+ internalType: 'contract ISessionValidator',
159
+ },
160
+ {
161
+ name: 'sessionValidatorInitData',
162
+ type: 'bytes',
163
+ internalType: 'bytes',
164
+ },
165
+ { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
166
+ {
167
+ name: 'userOpPolicies',
168
+ type: 'tuple[]',
169
+ internalType: 'struct PolicyData[]',
170
+ components: [
171
+ {
172
+ name: 'policy',
173
+ type: 'address',
174
+ internalType: 'address',
175
+ },
176
+ { name: 'initData', type: 'bytes', internalType: 'bytes' },
177
+ ],
178
+ },
179
+ {
180
+ name: 'erc7739Policies',
181
+ type: 'tuple',
182
+ internalType: 'struct ERC7739Data',
183
+ components: [
184
+ {
185
+ name: 'allowedERC7739Content',
186
+ type: 'tuple[]',
187
+ internalType: 'struct ERC7739Context[]',
188
+ components: [
189
+ {
190
+ name: 'appDomainSeparator',
191
+ type: 'bytes32',
192
+ internalType: 'bytes32',
193
+ },
194
+ {
195
+ name: 'contentName',
196
+ type: 'string[]',
197
+ internalType: 'string[]',
198
+ },
199
+ ],
200
+ },
201
+ {
202
+ name: 'erc1271Policies',
203
+ type: 'tuple[]',
204
+ internalType: 'struct PolicyData[]',
205
+ components: [
206
+ {
207
+ name: 'policy',
208
+ type: 'address',
209
+ internalType: 'address',
210
+ },
211
+ {
212
+ name: 'initData',
213
+ type: 'bytes',
214
+ internalType: 'bytes',
215
+ },
216
+ ],
217
+ },
218
+ ],
219
+ },
220
+ {
221
+ name: 'actions',
222
+ type: 'tuple[]',
223
+ internalType: 'struct ActionData[]',
224
+ components: [
225
+ {
226
+ name: 'actionTargetSelector',
227
+ type: 'bytes4',
228
+ internalType: 'bytes4',
229
+ },
230
+ {
231
+ name: 'actionTarget',
232
+ type: 'address',
233
+ internalType: 'address',
234
+ },
235
+ {
236
+ name: 'actionPolicies',
237
+ type: 'tuple[]',
238
+ internalType: 'struct PolicyData[]',
239
+ components: [
240
+ {
241
+ name: 'policy',
242
+ type: 'address',
243
+ internalType: 'address',
244
+ },
245
+ {
246
+ name: 'initData',
247
+ type: 'bytes',
248
+ internalType: 'bytes',
249
+ },
250
+ ],
251
+ },
252
+ ],
253
+ },
254
+ {
255
+ name: 'permitERC4337Paymaster',
256
+ type: 'bool',
257
+ internalType: 'bool',
258
+ },
259
+ ],
260
+ },
261
+ {
262
+ name: 'mode',
263
+ type: 'uint8',
264
+ internalType: 'enum SmartSessionMode',
265
+ },
266
+ ],
267
+ outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],
268
+ stateMutability: 'view',
269
+ },
270
+ ],
271
+ functionName: 'getSessionDigest',
272
+ // @ts-ignore Viem fails to infer the type of "session"
273
+ args: [permissionId, account, session, Number(mode)],
274
+ }));
275
+ }
12
276
  async function enableSmartSession(chain, config, session) {
13
277
  const publicClient = (0, viem_1.createPublicClient)({
14
278
  chain,
@@ -133,4 +133,32 @@ const hash = (0, viem_1.keccak256)('0xabcd');
133
133
  (0, vitest_1.expect)(structHash).toEqual('0x6622d2a44c958ffed7b7b3746f4fc9c2e39543858f6f176cc58ccf7741c65b4a');
134
134
  });
135
135
  });
136
+ (0, vitest_1.describe)('Multichain Digest', () => {
137
+ (0, vitest_1.test)('Single', () => {
138
+ const digest = (0, smart_session_1.getMultichainDigest)([
139
+ {
140
+ chainId: 421614n,
141
+ sessionDigest: '0x971daa09e9deb42457fb008fce5a63987379b31fd67ec6c16ff8b52517bfb373',
142
+ },
143
+ ]);
144
+ (0, vitest_1.expect)(digest).toEqual('0xc0f5a263b2af5a01bc221835faf49b77459a5696f881c25fea9f8144c43f2326');
145
+ });
146
+ (0, vitest_1.test)('Multiple', () => {
147
+ const digest = (0, smart_session_1.getMultichainDigest)([
148
+ {
149
+ chainId: 84532n,
150
+ sessionDigest: '0xad3139c2b3ca57ba02e86ba3ad86dd18a05ba53650e3088ebd4fed71166d4bdd',
151
+ },
152
+ {
153
+ chainId: 84532n,
154
+ sessionDigest: '0x1e6cc59dee4aca4a0d9b1fccd6fde197c831d5bd51163746f1947b352732f3db',
155
+ },
156
+ {
157
+ chainId: 11155420n,
158
+ sessionDigest: '0x9b14ad37022e97faf4d9824c8d7e85b97f304839d24a3cd582575753df7d9239',
159
+ },
160
+ ]);
161
+ (0, vitest_1.expect)(digest).toEqual('0x02f738c7e916839b958b21cbf8bf3697ca06fcb7d5fd5eba85ad49c8f2756adb');
162
+ });
163
+ });
136
164
  });
@@ -15,7 +15,7 @@ type TransactionResult = {
15
15
  };
16
16
  interface BundleData {
17
17
  hash: Hex;
18
- orderPath: OrderPath;
18
+ orderPath?: OrderPath;
19
19
  userOp?: UserOperation;
20
20
  }
21
21
  interface PreparedTransactionData {
@@ -30,8 +30,8 @@ declare function signTransaction(config: RhinestoneAccountConfig, preparedTransa
30
30
  declare function submitTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData): Promise<TransactionResult>;
31
31
  declare function prepareTransactionAsIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, calls: Call[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address): Promise<BundleData>;
32
32
  declare function signIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, bundleHash: Hex, signers?: SignerSet): Promise<`0x${string}`>;
33
- declare function signUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, accountAddress: Address, signers: SignerSet | undefined, userOp: UserOperation, orderPath: OrderPath): Promise<`0x${string}`>;
34
- declare function submitUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, userOp: UserOperation, orderPath: OrderPath, signature: Hex): Promise<TransactionResult>;
33
+ declare function signUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, accountAddress: Address, signers: SignerSet | undefined, userOp: UserOperation, orderPath?: OrderPath): Promise<`0x${string}`>;
34
+ declare function submitUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, userOp: UserOperation, signature: Hex, orderPath?: OrderPath): Promise<TransactionResult>;
35
35
  declare function getOrchestratorByChain(chainId: number, apiKey: string): import("../orchestrator").Orchestrator;
36
36
  declare function getUserOpOrderPath(sourceChain: Chain, targetChain: Chain, tokenRequests: TokenRequest[], accountAddress: Address, gasLimit: bigint | undefined, rhinestoneApiKey: string): Promise<OrderPath>;
37
37
  declare function getUserOp(config: RhinestoneAccountConfig, targetChain: Chain, signers: SignerSet | undefined, orderPath: OrderPath, calls: Call[], tokenRequests: TokenRequest[], accountAddress: Address): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAGL,GAAG,EAOJ,MAAM,MAAM,CAAA;AACb,OAAO,EAGL,aAAa,EACd,MAAM,0BAA0B,CAAA;AA6BjC,OAAO,EAEL,SAAS,EAGV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,IAAI,EAEJ,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAA;AAGjB,KAAK,iBAAiB,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,GAAG,CAAA;IACT,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAEL,UAAU,UAAU;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AAED,UAAU,uBAAuB;IAC/B,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,UAAU,qBAAsB,SAAQ,uBAAuB;IAC7D,SAAS,EAAE,GAAG,CAAA;CACf;AAED,iBAAe,kBAAkB,CAC/B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,uBAAuB,CAAC,CAwClC;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,uBAAuB,EAC/B,mBAAmB,EAAE,uBAAuB,GAC3C,OAAO,CAAC,qBAAqB,CAAC,CA4ChC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,iBAAiB,EAAE,qBAAqB,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAsC5B;AAsGD,iBAAe,0BAA0B,CACvC,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,GAAG,SAAS,EAC9B,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,OAAO,uBAwCxB;AAED,iBAAe,UAAU,CACvB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,GAAG,SAAS,EAC9B,WAAW,EAAE,KAAK,EAClB,UAAU,EAAE,GAAG,EACf,OAAO,CAAC,EAAE,SAAS,0BAwBpB;AAED,iBAAe,UAAU,CACvB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,MAAM,EAAE,aAAa,EACrB,SAAS,CAAC,EAAE,SAAS,0BA+DtB;AAED,iBAAe,YAAY,CACzB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,GAAG,EACd,SAAS,CAAC,EAAE,SAAS,8BAiEtB;AAmBD,iBAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0CAK9D;AAED,iBAAe,kBAAkB,CAC/B,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,MAAM,sBAuBzB;AAED,iBAAe,SAAS,CACtB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI,EAAE,EACb,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CxB;AAED,iBAAe,oBAAoB,CACjC,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,KAAK,GAAG,SAAS,EAC9B,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,OAAO,8BA6BhB;AAED,iBAAe,mBAAmB,CAChC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,YAAY,EAAE,GAAG,EACjB,KAAK,EAAE,KAAK,yKAuBb;AA0FD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,GACpB,CAAA;AACD,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,CAAA"}
@@ -80,10 +80,14 @@ async function submitTransaction(config, signedTransaction) {
80
80
  throw new Error(`User operation is required when using smart sessions`);
81
81
  }
82
82
  // Smart sessions require a UserOp flow
83
- return await submitUserOp(config, sourceChain, targetChain, userOp, bundleData.orderPath, signature);
83
+ return await submitUserOp(config, sourceChain, targetChain, userOp, signature, bundleData.orderPath);
84
84
  }
85
85
  else {
86
- return await submitIntent(config, sourceChain, targetChain, bundleData.orderPath, signature);
86
+ const orderPath = bundleData.orderPath;
87
+ if (!orderPath) {
88
+ throw new Error('Order path is required when using intents');
89
+ }
90
+ return await submitIntent(config, sourceChain, targetChain, orderPath, signature);
87
91
  }
88
92
  }
89
93
  function getTransactionParams(transaction) {
@@ -109,7 +113,29 @@ function getTransactionParams(transaction) {
109
113
  }
110
114
  async function prepareTransactionAsUserOp(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, signers) {
111
115
  if (sourceChain.id === targetChain.id) {
112
- throw new Error('Source and target chains cannot be the same when using user operations');
116
+ const chain = sourceChain;
117
+ const publicClient = (0, viem_1.createPublicClient)({
118
+ chain,
119
+ transport: (0, viem_1.http)(),
120
+ });
121
+ const validatorAccount = await getValidatorAccount(config, signers, publicClient, chain);
122
+ if (!validatorAccount) {
123
+ throw new Error('No validator account found');
124
+ }
125
+ const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
126
+ const userOp = await bundlerClient.prepareUserOperation({
127
+ account: validatorAccount,
128
+ calls,
129
+ });
130
+ return {
131
+ userOp,
132
+ hash: (0, account_abstraction_1.getUserOperationHash)({
133
+ userOperation: userOp,
134
+ chainId: chain.id,
135
+ entryPointAddress: account_abstraction_1.entryPoint07Address,
136
+ entryPointVersion: '0.7',
137
+ }),
138
+ };
113
139
  }
114
140
  const orderPath = await getUserOpOrderPath(sourceChain, targetChain, tokenRequests, accountAddress, gasLimit, config.rhinestoneApiKey);
115
141
  const userOp = await getUserOp(config, targetChain, signers, orderPath, calls, tokenRequests, accountAddress);
@@ -189,6 +215,9 @@ async function signUserOp(config, sourceChain, targetChain, accountAddress, sign
189
215
  throw new Error('No account found');
190
216
  }
191
217
  userOp.signature = await targetAccount.signUserOperation(userOp);
218
+ if (!orderPath) {
219
+ return userOp.signature;
220
+ }
192
221
  const userOpHash = (0, account_abstraction_1.getUserOperationHash)({
193
222
  userOperation: userOp,
194
223
  chainId: targetChain.id,
@@ -212,7 +241,47 @@ async function signUserOp(config, sourceChain, targetChain, accountAddress, sign
212
241
  });
213
242
  return signature;
214
243
  }
215
- async function submitUserOp(config, sourceChain, targetChain, userOp, orderPath, signature) {
244
+ async function submitUserOp(config, sourceChain, targetChain, userOp, signature, orderPath) {
245
+ if (!orderPath) {
246
+ const publicClient = (0, viem_1.createPublicClient)({
247
+ chain: sourceChain,
248
+ transport: (0, viem_1.http)(),
249
+ });
250
+ const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
251
+ const hash = await bundlerClient.request({
252
+ method: 'eth_sendUserOperation',
253
+ params: [
254
+ {
255
+ sender: userOp.sender,
256
+ nonce: (0, viem_1.toHex)(userOp.nonce),
257
+ factory: userOp.factory,
258
+ factoryData: userOp.factoryData,
259
+ callData: userOp.callData,
260
+ callGasLimit: (0, viem_1.toHex)(userOp.callGasLimit),
261
+ verificationGasLimit: (0, viem_1.toHex)(userOp.verificationGasLimit),
262
+ preVerificationGas: (0, viem_1.toHex)(userOp.preVerificationGas),
263
+ maxPriorityFeePerGas: (0, viem_1.toHex)(userOp.maxPriorityFeePerGas),
264
+ maxFeePerGas: (0, viem_1.toHex)(userOp.maxFeePerGas),
265
+ paymaster: userOp.paymaster,
266
+ paymasterVerificationGasLimit: userOp.paymasterVerificationGasLimit
267
+ ? (0, viem_1.toHex)(userOp.paymasterVerificationGasLimit)
268
+ : undefined,
269
+ paymasterPostOpGasLimit: userOp.paymasterPostOpGasLimit
270
+ ? (0, viem_1.toHex)(userOp.paymasterPostOpGasLimit)
271
+ : undefined,
272
+ paymasterData: userOp.paymasterData,
273
+ signature,
274
+ },
275
+ account_abstraction_1.entryPoint07Address,
276
+ ],
277
+ });
278
+ return {
279
+ type: 'userop',
280
+ hash,
281
+ sourceChain: sourceChain.id,
282
+ targetChain: targetChain.id,
283
+ };
284
+ }
216
285
  const signedOrderBundle = {
217
286
  ...orderPath[0].orderBundle,
218
287
  originSignatures: Array(orderPath[0].orderBundle.segments.length).fill(signature),
@@ -280,7 +349,7 @@ async function getUserOp(config, targetChain, signers, orderPath, calls, tokenRe
280
349
  const rootBalanceSlot = (0, registry_1.getTokenRootBalanceSlot)(targetChain, request.address);
281
350
  const balanceSlot = rootBalanceSlot
282
351
  ? (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'address' }, { type: 'uint256' }], [accountAddress, rootBalanceSlot]))
283
- : '0x';
352
+ : viem_1.zeroHash;
284
353
  return {
285
354
  address: request.address,
286
355
  stateDiff: [
@@ -322,10 +391,10 @@ async function getValidatorAccount(config, signers, publicClient, chain) {
322
391
  if (!signers) {
323
392
  return undefined;
324
393
  }
325
- const withSession = signers.type === 'session' ? signers.session : null;
394
+ const withSession = signers.type === 'session' ? signers : null;
326
395
  const withGuardians = signers.type === 'guardians' ? signers : null;
327
396
  return withSession
328
- ? await (0, accounts_1.getSmartSessionSmartAccount)(config, publicClient, chain, withSession)
397
+ ? await (0, accounts_1.getSmartSessionSmartAccount)(config, publicClient, chain, withSession.session, withSession.enableData || null)
329
398
  : withGuardians
330
399
  ? await (0, accounts_1.getGuardianSmartAccount)(config, publicClient, chain, {
331
400
  type: 'ecdsa',
@@ -1,7 +1,8 @@
1
- import type { Address, Chain } from 'viem';
1
+ import type { Address, Chain, Hex } from 'viem';
2
2
  import { UserOperationReceipt } from 'viem/account-abstraction';
3
- import { addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery } from './actions';
3
+ import { addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, encodeSmartSessionSignature, recover, removeOwner, setUpRecovery, trustAttester } from './actions';
4
4
  import type { TransactionResult } from './execution';
5
+ import { SessionDetails } from './execution/smart-session';
5
6
  import { BundleData, PreparedTransactionData, SignedTransactionData } from './execution/utils';
6
7
  import type { BundleResult, BundleStatus, MetaIntent, MultiChainCompact, PostOrderBundleResult, SignedMultiChainCompact, UserTokenBalance } from './orchestrator';
7
8
  import type { Call, Execution, RhinestoneAccountConfig, Session, Transaction } from './types';
@@ -16,6 +17,13 @@ interface RhinestoneAccount {
16
17
  getAddress: () => Address;
17
18
  getPortfolio: (onTestnets?: boolean) => Promise<UserTokenBalance[]>;
18
19
  getMaxSpendableAmount: (chain: Chain, tokenAddress: Address, gasUnits: bigint) => Promise<bigint>;
20
+ getSessionDetails: (sessions: Session[], sessionIndex: number, signature?: Hex) => Promise<SessionDetails>;
21
+ areAttestersTrusted: (chain: Chain) => Promise<boolean>;
22
+ getOwners: (chain: Chain) => Promise<{
23
+ accounts: Address[];
24
+ threshold: number;
25
+ } | null>;
26
+ getValidators: (chain: Chain) => Promise<Address[]>;
19
27
  }
20
28
  /**
21
29
  * Initialize a Rhinestone account
@@ -24,6 +32,6 @@ interface RhinestoneAccount {
24
32
  * @returns account
25
33
  */
26
34
  declare function createRhinestoneAccount(config: RhinestoneAccountConfig): Promise<RhinestoneAccount>;
27
- export { createRhinestoneAccount, addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery, };
35
+ export { createRhinestoneAccount, addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery, encodeSmartSessionSignature, trustAttester, };
28
36
  export type { RhinestoneAccount, BundleStatus, Session, Call, Execution, MetaIntent, MultiChainCompact, PostOrderBundleResult, SignedMultiChainCompact, BundleData, PreparedTransactionData, SignedTransactionData, TransactionResult, };
29
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAK/D,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,aAAa,EACd,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,EACL,UAAU,EACV,uBAAuB,EAEvB,qBAAqB,EAGtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,UAAU,iBAAiB;IACzB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,kBAAkB,EAAE,CAClB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,eAAe,EAAE,CACf,mBAAmB,EAAE,uBAAuB,KACzC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACnC,iBAAiB,EAAE,CACjB,iBAAiB,EAAE,qBAAqB,KACrC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/B,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACzE,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,uBAAuB,CAAC,EAAE,OAAO,KAC9B,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAA;IACjD,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACnE,qBAAqB,EAAE,CACrB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,CAAA;CACrB;AAED;;;;;GAKG;AACH,iBAAe,uBAAuB,CACpC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAmF5B;AAED,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,aAAa,GACd,CAAA;AACD,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setUpRecovery = exports.removeOwner = exports.recover = exports.enablePasskeys = exports.enableEcdsa = exports.disablePasskeys = exports.disableEcdsa = exports.changeThreshold = exports.addOwner = void 0;
3
+ exports.trustAttester = exports.encodeSmartSessionSignature = exports.setUpRecovery = exports.removeOwner = exports.recover = exports.enablePasskeys = exports.enableEcdsa = exports.disablePasskeys = exports.disableEcdsa = exports.changeThreshold = exports.addOwner = void 0;
4
4
  exports.createRhinestoneAccount = createRhinestoneAccount;
5
5
  const accounts_1 = require("./accounts");
6
6
  const actions_1 = require("./actions");
@@ -10,11 +10,15 @@ Object.defineProperty(exports, "disableEcdsa", { enumerable: true, get: function
10
10
  Object.defineProperty(exports, "disablePasskeys", { enumerable: true, get: function () { return actions_1.disablePasskeys; } });
11
11
  Object.defineProperty(exports, "enableEcdsa", { enumerable: true, get: function () { return actions_1.enableEcdsa; } });
12
12
  Object.defineProperty(exports, "enablePasskeys", { enumerable: true, get: function () { return actions_1.enablePasskeys; } });
13
+ Object.defineProperty(exports, "encodeSmartSessionSignature", { enumerable: true, get: function () { return actions_1.encodeSmartSessionSignature; } });
13
14
  Object.defineProperty(exports, "recover", { enumerable: true, get: function () { return actions_1.recover; } });
14
15
  Object.defineProperty(exports, "removeOwner", { enumerable: true, get: function () { return actions_1.removeOwner; } });
15
16
  Object.defineProperty(exports, "setUpRecovery", { enumerable: true, get: function () { return actions_1.setUpRecovery; } });
17
+ Object.defineProperty(exports, "trustAttester", { enumerable: true, get: function () { return actions_1.trustAttester; } });
16
18
  const execution_1 = require("./execution");
19
+ const smart_session_1 = require("./execution/smart-session");
17
20
  const utils_1 = require("./execution/utils");
21
+ const modules_1 = require("./modules");
18
22
  /**
19
23
  * Initialize a Rhinestone account
20
24
  * Note: accounts are deployed onchain only when the first transaction is sent.
@@ -76,6 +80,22 @@ async function createRhinestoneAccount(config) {
76
80
  function getMaxSpendableAmount(chain, tokenAddress, gasUnits) {
77
81
  return (0, execution_1.getMaxSpendableAmount)(config, chain, tokenAddress, gasUnits);
78
82
  }
83
+ function getSessionDetails(sessions, sessionIndex, signature) {
84
+ return (0, smart_session_1.getSessionDetails)(config, sessions, sessionIndex, signature);
85
+ }
86
+ function areAttestersTrusted(chain) {
87
+ const account = getAddress();
88
+ return (0, modules_1.areAttestersTrusted)(account, chain);
89
+ }
90
+ function getOwners(chain) {
91
+ const account = getAddress();
92
+ return (0, modules_1.getOwners)(account, chain);
93
+ }
94
+ function getValidators(chain) {
95
+ const accountType = config.account?.type || 'nexus';
96
+ const account = getAddress();
97
+ return (0, modules_1.getValidators)(accountType, account, chain);
98
+ }
79
99
  return {
80
100
  config,
81
101
  deploy,
@@ -87,5 +107,9 @@ async function createRhinestoneAccount(config) {
87
107
  getAddress,
88
108
  getPortfolio,
89
109
  getMaxSpendableAmount,
110
+ getSessionDetails,
111
+ areAttestersTrusted,
112
+ getOwners,
113
+ getValidators,
90
114
  };
91
115
  }
@@ -2,6 +2,7 @@ import { type Address, type Chain, type Hex } from 'viem';
2
2
  import type { RhinestoneAccountConfig } from '../types';
3
3
  import { type Module } from './common';
4
4
  import { HOOK_ADDRESS } from './omni-account';
5
+ import { areAttestersTrusted, getOwners, getValidators } from './read';
5
6
  import { getTrustAttesterCall, getTrustedAttesters } from './registry';
6
7
  import { getOwnerValidator } from './validators';
7
8
  interface WebAuthnData {
@@ -30,5 +31,9 @@ interface ModeleSetup {
30
31
  declare function getSetup(config: RhinestoneAccountConfig): ModeleSetup;
31
32
  declare function getWebauthnValidatorSignature({ webauthn, signature, usePrecompiled, }: WebauthnValidatorSignature): `0x${string}`;
32
33
  declare function isRip7212SupportedNetwork(chain: Chain): boolean;
33
- export { HOOK_ADDRESS, getSetup, getTrustAttesterCall, getTrustedAttesters, getOwnerValidator, getWebauthnValidatorSignature, isRip7212SupportedNetwork, };
34
+ declare function getAttesters(): {
35
+ list: Address[];
36
+ threshold: number;
37
+ };
38
+ export { HOOK_ADDRESS, getSetup, getTrustAttesterCall, getTrustedAttesters, getOwnerValidator, getWebauthnValidatorSignature, getAttesters, areAttestersTrusted, getOwners, getValidators, isRip7212SupportedNetwork, };
34
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AAYb,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,YAAY,EAMb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAM1E,UAAU,YAAY;IACpB,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,iBAAiB,GAAG,GAAG,GAAG,UAAU,CAAA;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,UAAU,iBAAiB;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CA2F9D;AAED,iBAAS,6BAA6B,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,cAAsB,GACvB,EAAE,0BAA0B,iBA6C5B;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,WAa9C;AAaD,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,6BAA6B,EAC7B,yBAAyB,GAC1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AAYb,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,YAAY,EAMb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAM1E,UAAU,YAAY;IACpB,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,iBAAiB,GAAG,GAAG,GAAG,UAAU,CAAA;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,UAAU,iBAAiB;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CA0F9D;AAED,iBAAS,6BAA6B,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,cAAsB,GACvB,EAAE,0BAA0B,iBA6C5B;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,WAa9C;AAaD,iBAAS,YAAY,IAAI;IACvB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAKA;AAED,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,6BAA6B,EAC7B,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,yBAAyB,GAC1B,CAAA"}