@rhinestone/sdk 0.7.10 → 0.8.1
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.
- package/dist/{src/accounts → accounts}/index.d.ts +2 -2
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/{src/accounts → accounts}/index.js +55 -45
- package/dist/accounts/nexus.d.ts.map +1 -0
- package/dist/{src/accounts → accounts}/nexus.js +48 -42
- package/dist/accounts/safe.d.ts.map +1 -0
- package/dist/{src/accounts → accounts}/safe.js +35 -29
- package/dist/accounts/utils.d.ts.map +1 -0
- package/dist/{src/accounts → accounts}/utils.js +23 -19
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/{src/execution → execution}/index.js +72 -61
- package/dist/execution/smart-session.d.ts.map +1 -0
- package/dist/execution/smart-session.js +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +10 -8
- package/dist/modules/abi/smart-sessions.d.ts.map +1 -0
- package/dist/modules/common.d.ts.map +1 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/omni-account.d.ts.map +1 -0
- package/dist/modules/validators/core.d.ts.map +1 -0
- package/dist/modules/validators/index.d.ts.map +1 -0
- package/dist/modules/validators/smart-sessions.d.ts.map +1 -0
- package/dist/orchestrator/client.d.ts.map +1 -0
- package/dist/{cjs/orchestrator → orchestrator}/consts.d.ts +2 -2
- package/dist/orchestrator/consts.d.ts.map +1 -0
- package/dist/{cjs/orchestrator → orchestrator}/consts.js +2 -2
- package/dist/orchestrator/error.d.ts.map +1 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/registry.d.ts.map +1 -0
- package/dist/{src/orchestrator → orchestrator}/types.d.ts +14 -15
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/utils.d.ts.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +13 -13
- package/dist/cjs/modules/abi/smart-sessions.d.ts.map +0 -1
- package/dist/cjs/modules/common.d.ts.map +0 -1
- package/dist/cjs/modules/index.d.ts.map +0 -1
- package/dist/cjs/modules/omni-account.d.ts.map +0 -1
- package/dist/cjs/modules/validators/core.d.ts.map +0 -1
- package/dist/cjs/modules/validators/index.d.ts.map +0 -1
- package/dist/cjs/modules/validators/smart-sessions.d.ts.map +0 -1
- package/dist/cjs/orchestrator/client.d.ts.map +0 -1
- package/dist/cjs/orchestrator/consts.d.ts.map +0 -1
- package/dist/cjs/orchestrator/error.d.ts.map +0 -1
- package/dist/cjs/orchestrator/index.d.ts.map +0 -1
- package/dist/cjs/orchestrator/registry.d.ts.map +0 -1
- package/dist/cjs/orchestrator/types.d.ts +0 -222
- package/dist/cjs/orchestrator/types.d.ts.map +0 -1
- package/dist/cjs/orchestrator/utils.d.ts.map +0 -1
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/src/accounts/index.d.ts.map +0 -1
- package/dist/src/accounts/nexus.d.ts.map +0 -1
- package/dist/src/accounts/safe.d.ts.map +0 -1
- package/dist/src/accounts/utils.d.ts.map +0 -1
- package/dist/src/execution/index.d.ts.map +0 -1
- package/dist/src/execution/smart-session.d.ts.map +0 -1
- package/dist/src/execution/smart-session.js +0 -81
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/modules/abi/smart-sessions.d.ts +0 -42
- package/dist/src/modules/abi/smart-sessions.d.ts.map +0 -1
- package/dist/src/modules/abi/smart-sessions.js +0 -128
- package/dist/src/modules/common.d.ts +0 -16
- package/dist/src/modules/common.d.ts.map +0 -1
- package/dist/src/modules/common.js +0 -5
- package/dist/src/modules/index.d.ts +0 -33
- package/dist/src/modules/index.d.ts.map +0 -1
- package/dist/src/modules/index.js +0 -146
- package/dist/src/modules/omni-account.d.ts +0 -9
- package/dist/src/modules/omni-account.d.ts.map +0 -1
- package/dist/src/modules/omni-account.js +0 -7
- package/dist/src/modules/validators/core.d.ts +0 -23
- package/dist/src/modules/validators/core.d.ts.map +0 -1
- package/dist/src/modules/validators/core.js +0 -112
- package/dist/src/modules/validators/index.d.ts +0 -4
- package/dist/src/modules/validators/index.d.ts.map +0 -1
- package/dist/src/modules/validators/index.js +0 -3
- package/dist/src/modules/validators/smart-sessions.d.ts +0 -29
- package/dist/src/modules/validators/smart-sessions.d.ts.map +0 -1
- package/dist/src/modules/validators/smart-sessions.js +0 -414
- package/dist/src/orchestrator/client.d.ts +0 -29
- package/dist/src/orchestrator/client.d.ts.map +0 -1
- package/dist/src/orchestrator/client.js +0 -243
- package/dist/src/orchestrator/consts.d.ts +0 -5
- package/dist/src/orchestrator/consts.d.ts.map +0 -1
- package/dist/src/orchestrator/consts.js +0 -4
- package/dist/src/orchestrator/error.d.ts +0 -18
- package/dist/src/orchestrator/error.d.ts.map +0 -1
- package/dist/src/orchestrator/error.js +0 -28
- package/dist/src/orchestrator/index.d.ts +0 -11
- package/dist/src/orchestrator/index.d.ts.map +0 -1
- package/dist/src/orchestrator/index.js +0 -10
- package/dist/src/orchestrator/registry.d.ts +0 -17
- package/dist/src/orchestrator/registry.d.ts.map +0 -1
- package/dist/src/orchestrator/registry.js +0 -344
- package/dist/src/orchestrator/types.d.ts.map +0 -1
- package/dist/src/orchestrator/types.js +0 -9
- package/dist/src/orchestrator/utils.d.ts +0 -29
- package/dist/src/orchestrator/utils.d.ts.map +0 -1
- package/dist/src/orchestrator/utils.js +0 -303
- package/dist/src/types.d.ts +0 -113
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -1
- package/dist/test/modules/validators/smart-sessions.test.d.ts +0 -2
- package/dist/test/modules/validators/smart-sessions.test.d.ts.map +0 -1
- package/dist/test/modules/validators/smart-sessions.test.js +0 -20
- /package/dist/{src/accounts → accounts}/nexus.d.ts +0 -0
- /package/dist/{src/accounts → accounts}/safe.d.ts +0 -0
- /package/dist/{src/accounts → accounts}/utils.d.ts +0 -0
- /package/dist/{src/execution → execution}/index.d.ts +0 -0
- /package/dist/{src/execution → execution}/smart-session.d.ts +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{cjs/modules → modules}/abi/smart-sessions.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/abi/smart-sessions.js +0 -0
- /package/dist/{cjs/modules → modules}/common.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/common.js +0 -0
- /package/dist/{cjs/modules → modules}/index.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/index.js +0 -0
- /package/dist/{cjs/modules → modules}/omni-account.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/omni-account.js +0 -0
- /package/dist/{cjs/modules → modules}/validators/core.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/validators/core.js +0 -0
- /package/dist/{cjs/modules → modules}/validators/index.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/validators/index.js +0 -0
- /package/dist/{cjs/modules → modules}/validators/smart-sessions.d.ts +0 -0
- /package/dist/{cjs/modules → modules}/validators/smart-sessions.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/client.d.ts +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/client.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/error.d.ts +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/error.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/index.d.ts +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/index.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/registry.d.ts +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/registry.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/types.js +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/utils.d.ts +0 -0
- /package/dist/{cjs/orchestrator → orchestrator}/utils.js +0 -0
- /package/dist/{cjs/types.d.ts → types.d.ts} +0 -0
- /package/dist/{cjs/types.js → types.js} +0 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encode7579Calls = encode7579Calls;
|
|
4
|
+
exports.getAccountNonce = getAccountNonce;
|
|
5
|
+
exports.getBundlerClient = getBundlerClient;
|
|
6
|
+
const viem_1 = require("viem");
|
|
7
|
+
const account_abstraction_1 = require("viem/account-abstraction");
|
|
8
|
+
const actions_1 = require("viem/actions");
|
|
9
|
+
const utils_1 = require("viem/utils");
|
|
5
10
|
function parseCallType(callType) {
|
|
6
11
|
switch (callType) {
|
|
7
12
|
case 'call':
|
|
@@ -13,12 +18,12 @@ function parseCallType(callType) {
|
|
|
13
18
|
}
|
|
14
19
|
}
|
|
15
20
|
function encodeExecutionMode({ type, revertOnError, selector, context, }) {
|
|
16
|
-
return encodePacked(['bytes1', 'bytes1', 'bytes4', 'bytes4', 'bytes22'], [
|
|
17
|
-
toHex(toBytes(parseCallType(type), { size: 1 })),
|
|
18
|
-
toHex(toBytes(revertOnError ? '0x01' : '0x00', { size: 1 })),
|
|
19
|
-
toHex(toBytes('0x0', { size: 4 })),
|
|
20
|
-
toHex(toBytes(selector ?? '0x', { size: 4 })),
|
|
21
|
-
toHex(toBytes(context ?? '0x', { size: 22 })),
|
|
21
|
+
return (0, viem_1.encodePacked)(['bytes1', 'bytes1', 'bytes4', 'bytes4', 'bytes22'], [
|
|
22
|
+
(0, viem_1.toHex)((0, viem_1.toBytes)(parseCallType(type), { size: 1 })),
|
|
23
|
+
(0, viem_1.toHex)((0, viem_1.toBytes)(revertOnError ? '0x01' : '0x00', { size: 1 })),
|
|
24
|
+
(0, viem_1.toHex)((0, viem_1.toBytes)('0x0', { size: 4 })),
|
|
25
|
+
(0, viem_1.toHex)((0, viem_1.toBytes)(selector ?? '0x', { size: 4 })),
|
|
26
|
+
(0, viem_1.toHex)((0, viem_1.toBytes)(context ?? '0x', { size: 22 })),
|
|
22
27
|
]);
|
|
23
28
|
}
|
|
24
29
|
function encode7579Calls({ mode, callData, }) {
|
|
@@ -46,12 +51,12 @@ function encode7579Calls({ mode, callData, }) {
|
|
|
46
51
|
},
|
|
47
52
|
];
|
|
48
53
|
if (callData.length > 1) {
|
|
49
|
-
return encodeFunctionData({
|
|
54
|
+
return (0, viem_1.encodeFunctionData)({
|
|
50
55
|
abi: executeAbi,
|
|
51
56
|
functionName: 'execute',
|
|
52
57
|
args: [
|
|
53
58
|
encodeExecutionMode(mode),
|
|
54
|
-
encodeAbiParameters([
|
|
59
|
+
(0, viem_1.encodeAbiParameters)([
|
|
55
60
|
{
|
|
56
61
|
name: 'executionBatch',
|
|
57
62
|
type: 'tuple[]',
|
|
@@ -86,14 +91,14 @@ function encode7579Calls({ mode, callData, }) {
|
|
|
86
91
|
if (!call) {
|
|
87
92
|
throw new Error('No calls to encode');
|
|
88
93
|
}
|
|
89
|
-
return encodeFunctionData({
|
|
94
|
+
return (0, viem_1.encodeFunctionData)({
|
|
90
95
|
abi: executeAbi,
|
|
91
96
|
functionName: 'execute',
|
|
92
97
|
args: [
|
|
93
98
|
encodeExecutionMode(mode),
|
|
94
|
-
concatHex([
|
|
99
|
+
(0, viem_1.concatHex)([
|
|
95
100
|
call.to,
|
|
96
|
-
toHex(call.value ?? 0n, { size: 32 }),
|
|
101
|
+
(0, viem_1.toHex)(call.value ?? 0n, { size: 32 }),
|
|
97
102
|
call.data ?? '0x',
|
|
98
103
|
]),
|
|
99
104
|
],
|
|
@@ -101,7 +106,7 @@ function encode7579Calls({ mode, callData, }) {
|
|
|
101
106
|
}
|
|
102
107
|
async function getAccountNonce(client, args) {
|
|
103
108
|
const { address, entryPointAddress, key = 0n } = args;
|
|
104
|
-
return await getAction(client, readContract, 'readContract')({
|
|
109
|
+
return await (0, utils_1.getAction)(client, actions_1.readContract, 'readContract')({
|
|
105
110
|
address: entryPointAddress,
|
|
106
111
|
abi: [
|
|
107
112
|
{
|
|
@@ -145,9 +150,9 @@ function getBundlerClient(config, client) {
|
|
|
145
150
|
const endpoint = bundler
|
|
146
151
|
? getBundlerEndpoint(bundler, chainId)
|
|
147
152
|
: `https://public.pimlico.io/v2/${chainId}/rpc`;
|
|
148
|
-
return createBundlerClient({
|
|
153
|
+
return (0, account_abstraction_1.createBundlerClient)({
|
|
149
154
|
client,
|
|
150
|
-
transport: http(endpoint),
|
|
155
|
+
transport: (0, viem_1.http)(endpoint),
|
|
151
156
|
paymaster: true,
|
|
152
157
|
userOperation: {
|
|
153
158
|
estimateFeesPerGas: () => getGasPriceEstimate(endpoint),
|
|
@@ -174,4 +179,3 @@ async function getGasPriceEstimate(bundlerUrl) {
|
|
|
174
179
|
maxPriorityFeePerGas: BigInt(json.result.fast.maxPriorityFeePerGas),
|
|
175
180
|
};
|
|
176
181
|
}
|
|
177
|
-
export { encode7579Calls, getAccountNonce, getBundlerClient };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAIV,KAAK,GAAG,EAMT,MAAM,MAAM,CAAA;AAmBb,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,iBAAiB,CAAA;AAiBxB,OAAO,KAAK,EAEV,uBAAuB,EAIvB,WAAW,EACZ,MAAM,UAAU,CAAA;AASjB,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,iBAAe,eAAe,CAC5B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,WAAW,8BAyBzB;AA8RD,iBAAe,gBAAgB,CAC7B,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,iBAAiB,EACzB,uBAAuB,EAAE,OAAO;;;;;;;;;;;;GAwCjC;AAED,iBAAe,qBAAqB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,iBAAe,YAAY,CACzB,MAAM,EAAE,uBAAuB,EAC/B,UAAU,EAAE,OAAO,yDAMpB;AASD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,GACb,CAAA;AACD,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendTransaction = sendTransaction;
|
|
4
|
+
exports.waitForExecution = waitForExecution;
|
|
5
|
+
exports.getMaxSpendableAmount = getMaxSpendableAmount;
|
|
6
|
+
exports.getPortfolio = getPortfolio;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const account_abstraction_1 = require("viem/account-abstraction");
|
|
9
|
+
const chains_1 = require("viem/chains");
|
|
10
|
+
const accounts_1 = require("../accounts");
|
|
11
|
+
const utils_1 = require("../accounts/utils");
|
|
12
|
+
const modules_1 = require("../modules");
|
|
13
|
+
const validators_1 = require("../modules/validators");
|
|
14
|
+
const orchestrator_1 = require("../orchestrator");
|
|
15
|
+
const consts_1 = require("../orchestrator/consts");
|
|
16
|
+
const registry_1 = require("../orchestrator/registry");
|
|
17
|
+
const smart_session_1 = require("./smart-session");
|
|
12
18
|
const POLLING_INTERVAL = 500;
|
|
13
19
|
async function sendTransaction(config, transaction) {
|
|
14
20
|
if ('chain' in transaction) {
|
|
@@ -22,18 +28,18 @@ async function sendTransaction(config, transaction) {
|
|
|
22
28
|
}
|
|
23
29
|
async function sendTransactionInternal(config, sourceChain, targetChain, calls, gasLimit, initialTokenRequests, signers) {
|
|
24
30
|
if (sourceChain) {
|
|
25
|
-
const isAccountDeployed = await isDeployed(sourceChain, config);
|
|
31
|
+
const isAccountDeployed = await (0, accounts_1.isDeployed)(sourceChain, config);
|
|
26
32
|
if (!isAccountDeployed) {
|
|
27
|
-
await deploySource(sourceChain, config);
|
|
33
|
+
await (0, accounts_1.deploySource)(sourceChain, config);
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
|
-
const accountAddress = getAddress(config);
|
|
36
|
+
const accountAddress = (0, accounts_1.getAddress)(config);
|
|
31
37
|
const withSession = signers?.type === 'session' ? signers.session : null;
|
|
32
38
|
// Across requires passing some value to repay the solvers
|
|
33
39
|
const tokenRequests = initialTokenRequests.length === 0
|
|
34
40
|
? [
|
|
35
41
|
{
|
|
36
|
-
address: zeroAddress,
|
|
42
|
+
address: viem_1.zeroAddress,
|
|
37
43
|
amount: 1n,
|
|
38
44
|
},
|
|
39
45
|
]
|
|
@@ -42,7 +48,7 @@ async function sendTransactionInternal(config, sourceChain, targetChain, calls,
|
|
|
42
48
|
if (!sourceChain) {
|
|
43
49
|
throw new Error(`Specifying source chain is required when using smart sessions`);
|
|
44
50
|
}
|
|
45
|
-
await enableSmartSession(sourceChain, config, withSession);
|
|
51
|
+
await (0, smart_session_1.enableSmartSession)(sourceChain, config, withSession);
|
|
46
52
|
// Smart sessions require a UserOp flow
|
|
47
53
|
return await sendTransactionAsUserOp(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, withSession);
|
|
48
54
|
}
|
|
@@ -51,20 +57,20 @@ async function sendTransactionInternal(config, sourceChain, targetChain, calls,
|
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
59
|
async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, withSession) {
|
|
54
|
-
const publicClient = createPublicClient({
|
|
60
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
55
61
|
chain: sourceChain,
|
|
56
|
-
transport: http(),
|
|
62
|
+
transport: (0, viem_1.http)(),
|
|
57
63
|
});
|
|
58
|
-
const sessionAccount = await getSmartSessionSmartAccount(config, publicClient, sourceChain, withSession);
|
|
59
|
-
const bundlerClient = getBundlerClient(config, publicClient);
|
|
60
|
-
const targetPublicClient = createPublicClient({
|
|
64
|
+
const sessionAccount = await (0, accounts_1.getSmartSessionSmartAccount)(config, publicClient, sourceChain, withSession);
|
|
65
|
+
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
66
|
+
const targetPublicClient = (0, viem_1.createPublicClient)({
|
|
61
67
|
chain: targetChain,
|
|
62
|
-
transport: http(),
|
|
68
|
+
transport: (0, viem_1.http)(),
|
|
63
69
|
});
|
|
64
|
-
const targetSessionAccount = await getSmartSessionSmartAccount(config, targetPublicClient, targetChain, withSession);
|
|
65
|
-
const targetBundlerClient = getBundlerClient(config, targetPublicClient);
|
|
70
|
+
const targetSessionAccount = await (0, accounts_1.getSmartSessionSmartAccount)(config, targetPublicClient, targetChain, withSession);
|
|
71
|
+
const targetBundlerClient = (0, utils_1.getBundlerClient)(config, targetPublicClient);
|
|
66
72
|
if (sourceChain.id === targetChain.id) {
|
|
67
|
-
await enableSmartSession(targetChain, config, withSession);
|
|
73
|
+
await (0, smart_session_1.enableSmartSession)(targetChain, config, withSession);
|
|
68
74
|
const hash = await bundlerClient.sendUserOperation({
|
|
69
75
|
account: sessionAccount,
|
|
70
76
|
calls,
|
|
@@ -84,28 +90,28 @@ async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls,
|
|
|
84
90
|
})),
|
|
85
91
|
targetAccount: accountAddress,
|
|
86
92
|
targetGasUnits: gasLimit,
|
|
87
|
-
userOp: getEmptyUserOp(),
|
|
93
|
+
userOp: (0, orchestrator_1.getEmptyUserOp)(),
|
|
88
94
|
};
|
|
89
95
|
const orchestrator = getOrchestratorByChain(targetChain.id, config.rhinestoneApiKey);
|
|
90
96
|
const orderPath = await orchestrator.getOrderPath(metaIntent, accountAddress);
|
|
91
97
|
// Deploy the account on the target chain
|
|
92
|
-
await deployTarget(targetChain, config, true);
|
|
93
|
-
await enableSmartSession(targetChain, config, withSession);
|
|
98
|
+
await (0, accounts_1.deployTarget)(targetChain, config, true);
|
|
99
|
+
await (0, smart_session_1.enableSmartSession)(targetChain, config, withSession);
|
|
94
100
|
const userOp = await targetBundlerClient.prepareUserOperation({
|
|
95
101
|
account: targetSessionAccount,
|
|
96
102
|
calls: [...orderPath[0].injectedExecutions, ...calls],
|
|
97
103
|
stateOverride: [
|
|
98
104
|
...tokenRequests.map((request) => {
|
|
99
|
-
const rootBalanceSlot = getTokenRootBalanceSlot(targetChain, request.address);
|
|
105
|
+
const rootBalanceSlot = (0, orchestrator_1.getTokenRootBalanceSlot)(targetChain, request.address);
|
|
100
106
|
const balanceSlot = rootBalanceSlot
|
|
101
|
-
? keccak256(encodeAbiParameters([{ type: 'address' }, { type: 'uint256' }], [accountAddress, rootBalanceSlot]))
|
|
107
|
+
? (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'address' }, { type: 'uint256' }], [accountAddress, rootBalanceSlot]))
|
|
102
108
|
: '0x';
|
|
103
109
|
return {
|
|
104
110
|
address: request.address,
|
|
105
111
|
stateDiff: [
|
|
106
112
|
{
|
|
107
113
|
slot: balanceSlot,
|
|
108
|
-
value: pad(toHex(request.amount)),
|
|
114
|
+
value: (0, viem_1.pad)((0, viem_1.toHex)(request.amount)),
|
|
109
115
|
},
|
|
110
116
|
],
|
|
111
117
|
};
|
|
@@ -113,21 +119,21 @@ async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls,
|
|
|
113
119
|
],
|
|
114
120
|
});
|
|
115
121
|
userOp.signature = await targetSessionAccount.signUserOperation(userOp);
|
|
116
|
-
const userOpHash = getUserOperationHash({
|
|
122
|
+
const userOpHash = (0, account_abstraction_1.getUserOperationHash)({
|
|
117
123
|
userOperation: userOp,
|
|
118
124
|
chainId: targetChain.id,
|
|
119
|
-
entryPointAddress: entryPoint07Address,
|
|
125
|
+
entryPointAddress: account_abstraction_1.entryPoint07Address,
|
|
120
126
|
entryPointVersion: '0.7',
|
|
121
127
|
});
|
|
122
128
|
orderPath[0].orderBundle.segments[0].witness.userOpHash = userOpHash;
|
|
123
|
-
const { hash, appDomainSeparator, contentsType, structHash } = await hashErc7739(sourceChain, orderPath, accountAddress);
|
|
124
|
-
const signature = await sign(withSession.owners, targetChain, hash);
|
|
125
|
-
const sessionSignature = getSessionSignature(signature, appDomainSeparator, structHash, contentsType, withSession);
|
|
126
|
-
const smartSessionValidator = getSmartSessionValidator(config);
|
|
129
|
+
const { hash, appDomainSeparator, contentsType, structHash } = await (0, smart_session_1.hashErc7739)(sourceChain, orderPath, accountAddress);
|
|
130
|
+
const signature = await (0, accounts_1.sign)(withSession.owners, targetChain, hash);
|
|
131
|
+
const sessionSignature = (0, smart_session_1.getSessionSignature)(signature, appDomainSeparator, structHash, contentsType, withSession);
|
|
132
|
+
const smartSessionValidator = (0, validators_1.getSmartSessionValidator)(config);
|
|
127
133
|
if (!smartSessionValidator) {
|
|
128
134
|
throw new Error('Smart session validator not available');
|
|
129
135
|
}
|
|
130
|
-
const packedSig = encodePacked(['address', 'bytes'], [smartSessionValidator.address, sessionSignature]);
|
|
136
|
+
const packedSig = (0, viem_1.encodePacked)(['address', 'bytes'], [smartSessionValidator.address, sessionSignature]);
|
|
131
137
|
const signedOrderBundle = {
|
|
132
138
|
...orderPath[0].orderBundle,
|
|
133
139
|
originSignatures: Array(orderPath[0].orderBundle.segments.length).fill(packedSig),
|
|
@@ -147,6 +153,11 @@ async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls,
|
|
|
147
153
|
};
|
|
148
154
|
}
|
|
149
155
|
async function sendTransactionAsIntent(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress) {
|
|
156
|
+
const accountAccessList = sourceChain
|
|
157
|
+
? {
|
|
158
|
+
chainIds: [sourceChain.id],
|
|
159
|
+
}
|
|
160
|
+
: undefined;
|
|
150
161
|
const metaIntent = {
|
|
151
162
|
targetChainId: targetChain.id,
|
|
152
163
|
tokenTransfers: tokenRequests.map((tokenRequest) => ({
|
|
@@ -160,6 +171,7 @@ async function sendTransactionAsIntent(config, sourceChain, targetChain, calls,
|
|
|
160
171
|
data: call.data ?? '0x',
|
|
161
172
|
})),
|
|
162
173
|
targetGasUnits: gasLimit,
|
|
174
|
+
accountAccessList,
|
|
163
175
|
};
|
|
164
176
|
const orchestrator = getOrchestratorByChain(targetChain.id, config.rhinestoneApiKey);
|
|
165
177
|
const orderPath = await orchestrator.getOrderPath(metaIntent, accountAddress);
|
|
@@ -167,17 +179,17 @@ async function sendTransactionAsIntent(config, sourceChain, targetChain, calls,
|
|
|
167
179
|
...orderPath[0].injectedExecutions,
|
|
168
180
|
...metaIntent.targetExecutions,
|
|
169
181
|
];
|
|
170
|
-
const orderBundleHash = getOrderBundleHash(orderPath[0].orderBundle);
|
|
171
|
-
const bundleSignature = await sign(config.owners, sourceChain || targetChain, orderBundleHash);
|
|
172
|
-
const validatorModule = getOwnerValidator(config);
|
|
173
|
-
const packedSig = encodePacked(['address', 'bytes'], [validatorModule.address, bundleSignature]);
|
|
182
|
+
const orderBundleHash = (0, orchestrator_1.getOrderBundleHash)(orderPath[0].orderBundle);
|
|
183
|
+
const bundleSignature = await (0, accounts_1.sign)(config.owners, sourceChain || targetChain, orderBundleHash);
|
|
184
|
+
const validatorModule = (0, modules_1.getOwnerValidator)(config);
|
|
185
|
+
const packedSig = (0, viem_1.encodePacked)(['address', 'bytes'], [validatorModule.address, bundleSignature]);
|
|
174
186
|
const signedOrderBundle = {
|
|
175
187
|
...orderPath[0].orderBundle,
|
|
176
188
|
originSignatures: Array(orderPath[0].orderBundle.segments.length).fill(packedSig),
|
|
177
189
|
targetSignature: packedSig,
|
|
178
190
|
};
|
|
179
|
-
await deployTarget(targetChain, config, false);
|
|
180
|
-
const initCode = getBundleInitCode(config);
|
|
191
|
+
await (0, accounts_1.deployTarget)(targetChain, config, false);
|
|
192
|
+
const initCode = (0, accounts_1.getBundleInitCode)(config);
|
|
181
193
|
const bundleResults = await orchestrator.postSignedOrderBundle([
|
|
182
194
|
{
|
|
183
195
|
signedOrderBundle,
|
|
@@ -193,12 +205,12 @@ async function sendTransactionAsIntent(config, sourceChain, targetChain, calls,
|
|
|
193
205
|
}
|
|
194
206
|
async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
195
207
|
const validStatuses = new Set([
|
|
196
|
-
BUNDLE_STATUS_FAILED,
|
|
197
|
-
BUNDLE_STATUS_COMPLETED,
|
|
198
|
-
BUNDLE_STATUS_FILLED,
|
|
208
|
+
orchestrator_1.BUNDLE_STATUS_FAILED,
|
|
209
|
+
orchestrator_1.BUNDLE_STATUS_COMPLETED,
|
|
210
|
+
orchestrator_1.BUNDLE_STATUS_FILLED,
|
|
199
211
|
]);
|
|
200
212
|
if (acceptsPreconfirmations) {
|
|
201
|
-
validStatuses.add(BUNDLE_STATUS_PRECONFIRMED);
|
|
213
|
+
validStatuses.add(orchestrator_1.BUNDLE_STATUS_PRECONFIRMED);
|
|
202
214
|
}
|
|
203
215
|
switch (result.type) {
|
|
204
216
|
case 'bundle': {
|
|
@@ -208,18 +220,18 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
|
208
220
|
bundleResult = await orchestrator.getBundleStatus(result.id);
|
|
209
221
|
await new Promise((resolve) => setTimeout(resolve, POLLING_INTERVAL));
|
|
210
222
|
}
|
|
211
|
-
if (bundleResult.status === BUNDLE_STATUS_FAILED) {
|
|
223
|
+
if (bundleResult.status === orchestrator_1.BUNDLE_STATUS_FAILED) {
|
|
212
224
|
throw new Error('Bundle failed');
|
|
213
225
|
}
|
|
214
226
|
return bundleResult;
|
|
215
227
|
}
|
|
216
228
|
case 'userop': {
|
|
217
|
-
const targetChain = getChainById(result.targetChain);
|
|
218
|
-
const publicClient = createPublicClient({
|
|
229
|
+
const targetChain = (0, registry_1.getChainById)(result.targetChain);
|
|
230
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
219
231
|
chain: targetChain,
|
|
220
|
-
transport: http(),
|
|
232
|
+
transport: (0, viem_1.http)(),
|
|
221
233
|
});
|
|
222
|
-
const bundlerClient = getBundlerClient(config, publicClient);
|
|
234
|
+
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
223
235
|
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
224
236
|
hash: result.hash,
|
|
225
237
|
});
|
|
@@ -228,20 +240,19 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
|
228
240
|
}
|
|
229
241
|
}
|
|
230
242
|
async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits) {
|
|
231
|
-
const address = getAddress(config);
|
|
243
|
+
const address = (0, accounts_1.getAddress)(config);
|
|
232
244
|
const orchestrator = getOrchestratorByChain(chain.id, config.rhinestoneApiKey);
|
|
233
245
|
return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits);
|
|
234
246
|
}
|
|
235
247
|
async function getPortfolio(config, onTestnets) {
|
|
236
|
-
const address = getAddress(config);
|
|
237
|
-
const chainId = onTestnets ? sepolia.id : mainnet.id;
|
|
248
|
+
const address = (0, accounts_1.getAddress)(config);
|
|
249
|
+
const chainId = onTestnets ? chains_1.sepolia.id : chains_1.mainnet.id;
|
|
238
250
|
const orchestrator = getOrchestratorByChain(chainId, config.rhinestoneApiKey);
|
|
239
251
|
return orchestrator.getPortfolio(address);
|
|
240
252
|
}
|
|
241
253
|
function getOrchestratorByChain(chainId, apiKey) {
|
|
242
|
-
const orchestratorUrl = isTestnet(chainId)
|
|
243
|
-
? DEV_ORCHESTRATOR_URL
|
|
244
|
-
: PROD_ORCHESTRATOR_URL;
|
|
245
|
-
return getOrchestrator(apiKey, orchestratorUrl);
|
|
254
|
+
const orchestratorUrl = (0, registry_1.isTestnet)(chainId)
|
|
255
|
+
? consts_1.DEV_ORCHESTRATOR_URL
|
|
256
|
+
: consts_1.PROD_ORCHESTRATOR_URL;
|
|
257
|
+
return (0, orchestrator_1.getOrchestrator)(apiKey, orchestratorUrl);
|
|
246
258
|
}
|
|
247
|
-
export { sendTransaction, waitForExecution, getMaxSpendableAmount, getPortfolio, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAIV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAWb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEhE,iBAAe,kBAAkB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,OAAO,iBAyBjB;AAED,iBAAe,WAAW,CACxB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO;;;;;GAiExB;AAED,iBAAS,mBAAmB,CAC1B,SAAS,EAAE,GAAG,EACd,kBAAkB,EAAE,GAAG,EACvB,UAAU,EAAE,GAAG,EACf,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,OAAO,iBAkBrB;AAED,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enableSmartSession = enableSmartSession;
|
|
4
|
+
exports.hashErc7739 = hashErc7739;
|
|
5
|
+
exports.getSessionSignature = getSessionSignature;
|
|
6
|
+
const viem_1 = require("viem");
|
|
7
|
+
const accounts_1 = require("../accounts");
|
|
8
|
+
const utils_1 = require("../accounts/utils");
|
|
9
|
+
const validators_1 = require("../modules/validators");
|
|
10
|
+
const utils_2 = require("../orchestrator/utils");
|
|
11
|
+
async function enableSmartSession(chain, config, session) {
|
|
12
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
13
|
+
chain,
|
|
14
|
+
transport: (0, viem_1.http)(),
|
|
15
|
+
});
|
|
16
|
+
const address = (0, accounts_1.getAddress)(config);
|
|
17
|
+
const isEnabled = await (0, validators_1.isSessionEnabled)(publicClient, address, (0, validators_1.getPermissionId)(session));
|
|
18
|
+
if (isEnabled) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const smartAccount = await (0, accounts_1.getSmartAccount)(config, publicClient, chain);
|
|
22
|
+
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
23
|
+
const enableSessionCall = await (0, validators_1.getEnableSessionCall)(chain, session);
|
|
24
|
+
const opHash = await bundlerClient.sendUserOperation({
|
|
25
|
+
account: smartAccount,
|
|
26
|
+
calls: [enableSessionCall],
|
|
27
|
+
});
|
|
28
|
+
await bundlerClient.waitForUserOperationReceipt({
|
|
29
|
+
hash: opHash,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async function hashErc7739(sourceChain, orderPath, accountAddress) {
|
|
33
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
34
|
+
chain: sourceChain,
|
|
35
|
+
transport: (0, viem_1.http)(),
|
|
36
|
+
});
|
|
37
|
+
const { appDomainSeparator, contentsType } = await (0, validators_1.getSessionAllowedERC7739Content)(sourceChain);
|
|
38
|
+
// Create hash following ERC-7739 TypedDataSign workflow
|
|
39
|
+
const typedDataSignTypehash = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['string'], [
|
|
40
|
+
'TypedDataSign(MultichainCompact contents,string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)'.concat(contentsType),
|
|
41
|
+
]));
|
|
42
|
+
// Original struct hash
|
|
43
|
+
const structHash = (0, utils_2.hashMultichainCompactWithoutDomainSeparator)(orderPath[0].orderBundle);
|
|
44
|
+
const { name, version, chainId, verifyingContract, salt } = await (0, validators_1.getAccountEIP712Domain)(publicClient, accountAddress);
|
|
45
|
+
// Final hash according to ERC-7739
|
|
46
|
+
const hash = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes2', 'bytes32', 'bytes32'], [
|
|
47
|
+
'0x1901',
|
|
48
|
+
appDomainSeparator,
|
|
49
|
+
(0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
|
|
50
|
+
{ name: 'typedDataSignTypehash', type: 'bytes32' },
|
|
51
|
+
{ name: 'structHash', type: 'bytes32' },
|
|
52
|
+
{ name: 'name', type: 'bytes32' },
|
|
53
|
+
{ name: 'version', type: 'bytes32' },
|
|
54
|
+
{ name: 'chainId', type: 'uint256' },
|
|
55
|
+
{ name: 'verifyingContract', type: 'address' },
|
|
56
|
+
{ name: 'salt', type: 'bytes32' },
|
|
57
|
+
], [
|
|
58
|
+
typedDataSignTypehash,
|
|
59
|
+
structHash,
|
|
60
|
+
(0, viem_1.keccak256)((0, viem_1.encodePacked)(['string'], [name])),
|
|
61
|
+
(0, viem_1.keccak256)((0, viem_1.encodePacked)(['string'], [version])),
|
|
62
|
+
BigInt(Number(chainId)),
|
|
63
|
+
verifyingContract,
|
|
64
|
+
salt,
|
|
65
|
+
])),
|
|
66
|
+
]));
|
|
67
|
+
return {
|
|
68
|
+
hash,
|
|
69
|
+
appDomainSeparator,
|
|
70
|
+
contentsType,
|
|
71
|
+
structHash,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function getSessionSignature(signature, appDomainSeparator, structHash, contentsType, withSession) {
|
|
75
|
+
const erc7739Signature = (0, viem_1.encodePacked)(['bytes', 'bytes32', 'bytes32', 'string', 'uint16'], [
|
|
76
|
+
signature,
|
|
77
|
+
appDomainSeparator,
|
|
78
|
+
structHash,
|
|
79
|
+
contentsType,
|
|
80
|
+
contentsType.length,
|
|
81
|
+
]);
|
|
82
|
+
// Pack with permissionId for smart session
|
|
83
|
+
const wrappedSignature = (0, viem_1.encodePacked)(['bytes32', 'bytes'], [(0, validators_1.getPermissionId)(withSession), erc7739Signature]);
|
|
84
|
+
return wrappedSignature;
|
|
85
|
+
}
|
|
@@ -0,0 +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;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB;;;;;GAKG;AACH,iBAAe,uBAAuB,CAAC,MAAM,EAAE,uBAAuB;;mCAM9B,WAAW;+BAWvC,iBAAiB;;;;;;;;;;;;;;;mCA+BlB,KAAK,gBACE,OAAO,YACX,MAAM;GAanB;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAClC,YAAY,EACV,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GACxB,CAAA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRhinestoneAccount = createRhinestoneAccount;
|
|
4
|
+
const accounts_1 = require("./accounts");
|
|
5
|
+
const execution_1 = require("./execution");
|
|
3
6
|
/**
|
|
4
7
|
* Initialize a Rhinestone account
|
|
5
8
|
* Note: accounts are deployed onchain only when the first transaction is sent.
|
|
@@ -13,7 +16,7 @@ async function createRhinestoneAccount(config) {
|
|
|
13
16
|
* @returns transaction result object (a bundle ID or a UserOp hash)
|
|
14
17
|
*/
|
|
15
18
|
function sendTransaction(transaction) {
|
|
16
|
-
return
|
|
19
|
+
return (0, execution_1.sendTransaction)(config, transaction);
|
|
17
20
|
}
|
|
18
21
|
/**
|
|
19
22
|
* Wait for the transaction execution onchain
|
|
@@ -22,14 +25,14 @@ async function createRhinestoneAccount(config) {
|
|
|
22
25
|
* @returns bundle result or a UserOp receipt
|
|
23
26
|
*/
|
|
24
27
|
function waitForExecution(result, acceptsPreconfirmations = true) {
|
|
25
|
-
return
|
|
28
|
+
return (0, execution_1.waitForExecution)(config, result, acceptsPreconfirmations);
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
28
31
|
* Get account address
|
|
29
32
|
* @returns Address of the smart account
|
|
30
33
|
*/
|
|
31
34
|
function getAddress() {
|
|
32
|
-
return
|
|
35
|
+
return (0, accounts_1.getAddress)(config);
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Get account portfolio
|
|
@@ -37,7 +40,7 @@ async function createRhinestoneAccount(config) {
|
|
|
37
40
|
* @returns Account balances
|
|
38
41
|
*/
|
|
39
42
|
function getPortfolio(onTestnets = false) {
|
|
40
|
-
return
|
|
43
|
+
return (0, execution_1.getPortfolio)(config, onTestnets);
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* Get the maximum spendable token amount on the target chain
|
|
@@ -47,7 +50,7 @@ async function createRhinestoneAccount(config) {
|
|
|
47
50
|
* @returns Maximum spendable amount in absolute units
|
|
48
51
|
*/
|
|
49
52
|
function getMaxSpendableAmount(chain, tokenAddress, gasUnits) {
|
|
50
|
-
return
|
|
53
|
+
return (0, execution_1.getMaxSpendableAmount)(config, chain, tokenAddress, gasUnits);
|
|
51
54
|
}
|
|
52
55
|
return {
|
|
53
56
|
config,
|
|
@@ -58,4 +61,3 @@ async function createRhinestoneAccount(config) {
|
|
|
58
61
|
getMaxSpendableAmount,
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
|
-
export { createRhinestoneAccount };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../modules/abi/smart-sessions.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8HtB,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../modules/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAExC,KAAK,UAAU,GACX,OAAO,wBAAwB,GAC/B,OAAO,uBAAuB,GAC9B,OAAO,uBAAuB,GAC9B,OAAO,mBAAmB,CAAA;AAE9B,UAAU,MAAM;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,GAAG,CAAA;IACb,UAAU,EAAE,GAAG,CAAA;IACf,iBAAiB,EAAE,GAAG,CAAA;IACtB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,QAAA,MAAM,wBAAwB,KAAK,CAAA;AACnC,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAClC,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAClC,QAAA,MAAM,mBAAmB,KAAK,CAAA;AAE9B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,CAAA;AACD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +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,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAK1E,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,CAoF9D;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,iBAAiB,EACjB,6BAA6B,EAC7B,yBAAyB,GAC1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omni-account.d.ts","sourceRoot":"","sources":["../../modules/omni-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,QAAA,MAAM,kCAAkC,EAAE,OACI,CAAA;AAE9C,QAAA,MAAM,kCAAkC,EAAE,OACI,CAAA;AAC9C,QAAA,MAAM,2BAA2B,EAAE,OACW,CAAA;AAE9C,QAAA,MAAM,YAAY,EAAE,OAAsD,CAAA;AAC1E,QAAA,MAAM,qBAAqB,EAAE,OACiB,CAAA;AAC9C,QAAA,MAAM,yBAAyB,EAAE,OACa,CAAA;AAE9C,OAAO,EACL,kCAAkC,EAClC,kCAAkC,EAClC,2BAA2B,EAC3B,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,GAC1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../modules/validators/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAIZ,KAAK,GAAG,EAIT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAEjE,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,GAAG,GAAG,GAAG,UAAU,CAAA;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAYD,iBAAS,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,UAEzD;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAUjD;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,UAarC;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,EAAE,CAAA;CAClB,GAAG,MAAM,CAiBT;AAED,iBAAS,oBAAoB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,CAwD5E;AAeD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,CAAA"}
|
|
@@ -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,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,+BAA+B,EAC/B,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,sBAAsB,EACtB,gBAAgB,EAChB,+BAA+B,GAChC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAKV,KAAK,GAAG,EAIR,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAA;AAMb,OAAO,KAAK,EAEV,uBAAuB,EACvB,OAAO,EAER,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AA6DjE,KAAK,oBAAoB,GACrB,OAAO,sBAAsB,GAC7B,OAAO,yBAAyB,GAChC,OAAO,gCAAgC,CAAA;AAE3C,QAAA,MAAM,gCAAgC,EAAE,OACM,CAAA;AAE9C,QAAA,MAAM,sBAAsB,SAAS,CAAA;AACrC,QAAA,MAAM,yBAAyB,SAAS,CAAA;AACxC,QAAA,MAAM,gCAAgC,SAAS,CAAA;AAyB/C,iBAAe,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;;;GAsBjE;AA6BD,iBAAe,+BAA+B,CAAC,KAAK,EAAE,KAAK;;;GAgB1D;AA0DD,iBAAS,wBAAwB,CAC/B,MAAM,EAAE,uBAAuB,GAC9B,MAAM,GAAG,IAAI,CAWf;AA8KD,iBAAe,gBAAgB,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,GAAG,oBAiClB;AAED,iBAAS,2BAA2B,CAClC,IAAI,EAAE,oBAAoB,EAC1B,YAAY,EAAE,GAAG,EACjB,SAAS,EAAE,GAAG,iBAcf;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,iBAyBxC;AAED,iBAAe,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO;;;;;;GAoD3E;AAED,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,+BAA+B,GAChC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../orchestrator/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG7D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAShB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKvC,YAAY,CAChB,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YACP,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAC7B,CAAA;KACF,GACA,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwCxB,iBAAiB,CACrB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,OAAO,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAgCZ,aAAa,CACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,eAAe,CAAC;IAqBrB,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,SAAS,CAAC;IAgCf,qBAAqB,CACzB,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,uBAAuB,CAAA;QAC1C,QAAQ,CAAC,EAAE,GAAG,CAAA;QACd,MAAM,CAAC,EAAE,aAAa,CAAA;KACvB,EAAE,GACF,OAAO,CAAC,qBAAqB,CAAC;IA2C3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAyBxD,iBAAiB,CACrB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB,OAAO,CAAC;QAAE,cAAc,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBlE,OAAO,CAAC,UAAU;CA6DnB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
declare const PROD_ORCHESTRATOR_URL = "https://orchestrator.rhinestone.
|
|
2
|
-
declare const DEV_ORCHESTRATOR_URL = "https://dev.orchestrator.rhinestone.
|
|
1
|
+
declare const PROD_ORCHESTRATOR_URL = "https://orchestrator.rhinestone.dev";
|
|
2
|
+
declare const DEV_ORCHESTRATOR_URL = "https://dev.orchestrator.rhinestone.dev";
|
|
3
3
|
declare const RHINESTONE_SPOKE_POOL_ADDRESS = "0x000000000060f6e853447881951574cdd0663530";
|
|
4
4
|
export { PROD_ORCHESTRATOR_URL, DEV_ORCHESTRATOR_URL, RHINESTONE_SPOKE_POOL_ADDRESS, };
|
|
5
5
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../orchestrator/consts.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,qBAAqB,wCAAwC,CAAA;AACnE,QAAA,MAAM,oBAAoB,4CAA4C,CAAA;AACtE,QAAA,MAAM,6BAA6B,+CACW,CAAA;AAE9C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RHINESTONE_SPOKE_POOL_ADDRESS = exports.DEV_ORCHESTRATOR_URL = exports.PROD_ORCHESTRATOR_URL = void 0;
|
|
4
|
-
const PROD_ORCHESTRATOR_URL = 'https://orchestrator.rhinestone.
|
|
4
|
+
const PROD_ORCHESTRATOR_URL = 'https://orchestrator.rhinestone.dev';
|
|
5
5
|
exports.PROD_ORCHESTRATOR_URL = PROD_ORCHESTRATOR_URL;
|
|
6
|
-
const DEV_ORCHESTRATOR_URL = 'https://dev.orchestrator.rhinestone.
|
|
6
|
+
const DEV_ORCHESTRATOR_URL = 'https://dev.orchestrator.rhinestone.dev';
|
|
7
7
|
exports.DEV_ORCHESTRATOR_URL = DEV_ORCHESTRATOR_URL;
|
|
8
8
|
const RHINESTONE_SPOKE_POOL_ADDRESS = '0x000000000060f6e853447881951574cdd0663530';
|
|
9
9
|
exports.RHINESTONE_SPOKE_POOL_ADDRESS = RHINESTONE_SPOKE_POOL_ADDRESS;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../orchestrator/error.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAErB,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;IAQD,IAAI,OAAO,WAEV;IAED,IAAI,OAAO,QAEV;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,OAAO,WAEV;CACF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,iBAAiB,CAE5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAyB,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAEhB,iBAAS,eAAe,CACtB,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,GACvB,YAAY,CAEd;AAED,YAAY,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAA;AACD,OAAO,EACL,gBAAgB,IAAI,YAAY,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EACjC,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,GACxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../orchestrator/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAcb,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,0UAoCnC;AAwCD,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,GACpB,MAAM,GAAG,IAAI,CAqJf;AAED,iBAAS,mBAAmB,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,GACtB,GAAG,CAgBL;AAED,iBAAS,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,iBAAS,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,iBAAS,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,iBAAS,6BAA6B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,iBAAS,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED,iBAAS,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAetE;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,qBAkBpC;AAED,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,WAMjC;AAED,iBAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAW3E;AAED,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAkB1D;AAkBD,OAAO,EACL,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,uBAAuB,GACxB,CAAA"}
|