@rhinestone/sdk 1.0.0-alpha.2 → 1.0.0-alpha.21
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/custom.d.ts +18 -0
- package/dist/src/accounts/custom.d.ts.map +1 -0
- package/dist/src/accounts/custom.js +121 -0
- package/dist/src/accounts/custom.test.d.ts +2 -0
- package/dist/src/accounts/custom.test.d.ts.map +1 -0
- package/dist/src/accounts/custom.test.js +64 -0
- package/dist/src/accounts/error.d.ts.map +1 -1
- package/dist/src/accounts/error.js +2 -0
- package/dist/src/accounts/index.d.ts +22 -13
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +192 -186
- package/dist/src/accounts/index.test.js +3 -3
- package/dist/src/accounts/json-rpc/index.d.ts +5 -0
- package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/index.js +16 -0
- package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
- package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/index.test.js +16 -0
- package/dist/src/accounts/json-rpc/providers.d.ts +4 -0
- package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/providers.js +14 -0
- package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
- package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/providers.test.js +15 -0
- package/dist/src/accounts/kernel.d.ts +9 -10
- package/dist/src/accounts/kernel.d.ts.map +1 -1
- package/dist/src/accounts/kernel.js +3 -14
- package/dist/src/accounts/kernel.test.js +10 -15
- package/dist/src/accounts/nexus.d.ts +14 -13
- package/dist/src/accounts/nexus.d.ts.map +1 -1
- package/dist/src/accounts/nexus.js +121 -93
- package/dist/src/accounts/nexus.test.js +13 -14
- package/dist/src/accounts/safe.d.ts +5 -7
- package/dist/src/accounts/safe.d.ts.map +1 -1
- package/dist/src/accounts/safe.js +25 -35
- package/dist/src/accounts/safe.test.js +9 -10
- package/dist/src/accounts/signing/common.d.ts +27 -0
- package/dist/src/accounts/signing/common.d.ts.map +1 -0
- package/dist/src/accounts/signing/common.js +142 -0
- package/dist/src/accounts/signing/message.d.ts +5 -0
- package/dist/src/accounts/signing/message.d.ts.map +1 -0
- package/dist/src/accounts/signing/message.js +47 -0
- package/dist/src/accounts/signing/passkeys.d.ts +29 -0
- package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
- package/dist/src/accounts/signing/passkeys.js +90 -0
- package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
- package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
- package/dist/src/accounts/signing/passkeys.test.js +73 -0
- package/dist/src/accounts/signing/typedData.d.ts +5 -0
- package/dist/src/accounts/signing/typedData.d.ts.map +1 -0
- package/dist/src/accounts/signing/typedData.js +35 -0
- package/dist/src/accounts/startale.d.ts +20 -0
- package/dist/src/accounts/startale.d.ts.map +1 -0
- package/dist/src/accounts/startale.js +100 -0
- package/dist/src/accounts/startale.test.d.ts +2 -0
- package/dist/src/accounts/startale.test.d.ts.map +1 -0
- package/dist/src/accounts/startale.test.js +96 -0
- package/dist/src/accounts/utils.d.ts +2 -1
- package/dist/src/accounts/utils.d.ts.map +1 -1
- package/dist/src/accounts/utils.js +7 -0
- package/dist/src/actions/index.d.ts +145 -7
- package/dist/src/actions/index.d.ts.map +1 -1
- package/dist/src/actions/index.js +373 -23
- package/dist/src/actions/index.test.js +35 -17
- package/dist/src/actions/smart-session.d.ts +8 -2
- package/dist/src/actions/smart-session.d.ts.map +1 -1
- package/dist/src/actions/smart-session.js +6 -0
- package/dist/src/execution/compact.d.ts +130 -3
- package/dist/src/execution/compact.d.ts.map +1 -1
- package/dist/src/execution/compact.js +94 -1
- package/dist/src/execution/error.d.ts +2 -9
- package/dist/src/execution/error.d.ts.map +1 -1
- package/dist/src/execution/error.js +4 -13
- package/dist/src/execution/index.d.ts +3 -4
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +35 -80
- package/dist/src/execution/smart-session.d.ts +1 -1
- package/dist/src/execution/smart-session.d.ts.map +1 -1
- package/dist/src/execution/smart-session.js +12 -17
- package/dist/src/execution/utils.d.ts +19 -14
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +222 -97
- package/dist/src/index.d.ts +17 -15
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +108 -21
- package/dist/src/modules/index.d.ts +3 -22
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js +5 -65
- package/dist/src/modules/index.test.js +3 -17
- package/dist/src/modules/omni-account.d.ts +2 -4
- package/dist/src/modules/omni-account.d.ts.map +1 -1
- package/dist/src/modules/omni-account.js +4 -8
- package/dist/src/modules/read.d.ts +5 -6
- package/dist/src/modules/read.d.ts.map +1 -1
- package/dist/src/modules/read.js +7 -37
- package/dist/src/modules/validators/core.d.ts +8 -8
- package/dist/src/modules/validators/core.d.ts.map +1 -1
- package/dist/src/modules/validators/core.js +126 -42
- package/dist/src/modules/validators/core.test.js +7 -7
- package/dist/src/modules/validators/smart-sessions.d.ts +3 -3
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +10 -9
- package/dist/src/modules/validators/smart-sessions.test.js +4 -4
- package/dist/src/orchestrator/client.d.ts +5 -3
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +159 -95
- package/dist/src/orchestrator/consts.d.ts +3 -2
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +4 -2
- package/dist/src/orchestrator/index.d.ts +3 -4
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +1 -9
- package/dist/src/orchestrator/registry.d.ts +10 -13
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +75 -395
- package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
- package/dist/src/orchestrator/registry.test.js +137 -0
- package/dist/src/orchestrator/types.d.ts +78 -16
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/orchestrator/utils.d.ts +1 -3
- package/dist/src/orchestrator/utils.d.ts.map +1 -1
- package/dist/src/orchestrator/utils.js +0 -102
- package/dist/src/types.d.ts +69 -26
- package/dist/src/types.d.ts.map +1 -1
- package/dist/test/consts.d.ts +2 -2
- package/dist/test/consts.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/src/actions/registry.d.ts +0 -7
- package/dist/src/actions/registry.d.ts.map +0 -1
- package/dist/src/actions/registry.js +0 -7
- package/dist/src/actions/registry.test.d.ts.map +0 -1
- package/dist/src/actions/registry.test.js +0 -25
- package/dist/src/modules/registry.d.ts +0 -13
- package/dist/src/modules/registry.d.ts.map +0 -1
- package/dist/src/modules/registry.js +0 -67
- /package/dist/src/{actions → orchestrator}/registry.test.d.ts +0 -0
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionChainRequiredError = exports.OrderPathRequiredForIntentsError = exports.UserOperationRequiredForSmartSessionsError = exports.
|
|
3
|
+
exports.SessionChainRequiredError = exports.OrderPathRequiredForIntentsError = exports.UserOperationRequiredForSmartSessionsError = exports.SourceChainsNotAvailableForUserOpFlowError = exports.ExecutionError = exports.IntentFailedError = exports.isExecutionError = void 0;
|
|
4
4
|
exports.sendTransaction = sendTransaction;
|
|
5
5
|
exports.waitForExecution = waitForExecution;
|
|
6
6
|
exports.getMaxSpendableAmount = getMaxSpendableAmount;
|
|
7
7
|
exports.getPortfolio = getPortfolio;
|
|
8
|
-
exports.deposit = deposit;
|
|
9
8
|
const viem_1 = require("viem");
|
|
10
9
|
const chains_1 = require("viem/chains");
|
|
11
10
|
const accounts_1 = require("../accounts");
|
|
12
11
|
const utils_1 = require("../accounts/utils");
|
|
13
12
|
const orchestrator_1 = require("../orchestrator");
|
|
14
13
|
const registry_1 = require("../orchestrator/registry");
|
|
15
|
-
const compact_1 = require("./compact");
|
|
16
14
|
const error_1 = require("./error");
|
|
17
15
|
Object.defineProperty(exports, "ExecutionError", { enumerable: true, get: function () { return error_1.ExecutionError; } });
|
|
18
16
|
Object.defineProperty(exports, "IntentFailedError", { enumerable: true, get: function () { return error_1.IntentFailedError; } });
|
|
19
17
|
Object.defineProperty(exports, "isExecutionError", { enumerable: true, get: function () { return error_1.isExecutionError; } });
|
|
20
18
|
Object.defineProperty(exports, "OrderPathRequiredForIntentsError", { enumerable: true, get: function () { return error_1.OrderPathRequiredForIntentsError; } });
|
|
21
19
|
Object.defineProperty(exports, "SessionChainRequiredError", { enumerable: true, get: function () { return error_1.SessionChainRequiredError; } });
|
|
22
|
-
Object.defineProperty(exports, "
|
|
23
|
-
Object.defineProperty(exports, "SourceTargetChainMismatchError", { enumerable: true, get: function () { return error_1.SourceTargetChainMismatchError; } });
|
|
20
|
+
Object.defineProperty(exports, "SourceChainsNotAvailableForUserOpFlowError", { enumerable: true, get: function () { return error_1.SourceChainsNotAvailableForUserOpFlowError; } });
|
|
24
21
|
Object.defineProperty(exports, "UserOperationRequiredForSmartSessionsError", { enumerable: true, get: function () { return error_1.UserOperationRequiredForSmartSessionsError; } });
|
|
25
22
|
const smart_session_1 = require("./smart-session");
|
|
26
23
|
const utils_2 = require("./utils");
|
|
@@ -28,23 +25,17 @@ const POLLING_INTERVAL = 500;
|
|
|
28
25
|
async function sendTransaction(config, transaction) {
|
|
29
26
|
if ('chain' in transaction) {
|
|
30
27
|
// Same-chain transaction
|
|
31
|
-
return await sendTransactionInternal(config, transaction.chain, transaction.chain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers);
|
|
28
|
+
return await sendTransactionInternal(config, [transaction.chain], transaction.chain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers, transaction.sponsored);
|
|
32
29
|
}
|
|
33
30
|
else {
|
|
34
31
|
// Cross-chain transaction
|
|
35
|
-
return await sendTransactionInternal(config, transaction.
|
|
32
|
+
return await sendTransactionInternal(config, transaction.sourceChains || [], transaction.targetChain, transaction.calls, transaction.gasLimit, transaction.tokenRequests, transaction.signers, transaction.sponsored);
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
|
-
async function sendTransactionInternal(config,
|
|
39
|
-
if (sourceChain) {
|
|
40
|
-
const isAccountDeployed = await (0, accounts_1.isDeployed)(sourceChain, config);
|
|
41
|
-
if (!isAccountDeployed) {
|
|
42
|
-
await (0, accounts_1.deploySource)(sourceChain, config);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
35
|
+
async function sendTransactionInternal(config, sourceChains, targetChain, callInputs, gasLimit, initialTokenRequests, signers, sponsored) {
|
|
45
36
|
const accountAddress = (0, accounts_1.getAddress)(config);
|
|
46
37
|
// Across requires passing some value to repay the solvers
|
|
47
|
-
const tokenRequests = initialTokenRequests.length === 0
|
|
38
|
+
const tokenRequests = !initialTokenRequests || initialTokenRequests.length === 0
|
|
48
39
|
? [
|
|
49
40
|
{
|
|
50
41
|
address: viem_1.zeroAddress,
|
|
@@ -54,34 +45,34 @@ async function sendTransactionInternal(config, sourceChain, targetChain, calls,
|
|
|
54
45
|
: initialTokenRequests;
|
|
55
46
|
const asUserOp = signers?.type === 'guardians' || signers?.type === 'session';
|
|
56
47
|
if (asUserOp) {
|
|
57
|
-
if (!sourceChain) {
|
|
58
|
-
throw new error_1.SourceChainRequiredForSmartSessionsError();
|
|
59
|
-
}
|
|
60
48
|
const withSession = signers?.type === 'session' ? signers.session : null;
|
|
61
49
|
if (withSession) {
|
|
62
|
-
await (0, smart_session_1.enableSmartSession)(
|
|
50
|
+
await (0, smart_session_1.enableSmartSession)(targetChain, config, withSession);
|
|
63
51
|
}
|
|
64
52
|
// Smart sessions require a UserOp flow
|
|
65
|
-
return await sendTransactionAsUserOp(config,
|
|
53
|
+
return await sendTransactionAsUserOp(config, targetChain, callInputs, signers);
|
|
66
54
|
}
|
|
67
55
|
else {
|
|
68
|
-
return await sendTransactionAsIntent(config,
|
|
56
|
+
return await sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, signers, sponsored);
|
|
69
57
|
}
|
|
70
58
|
}
|
|
71
|
-
async function sendTransactionAsUserOp(config,
|
|
59
|
+
async function sendTransactionAsUserOp(config, chain, callInputs, signers) {
|
|
60
|
+
// Make sure the account is deployed
|
|
61
|
+
await (0, accounts_1.deploy)(config, chain);
|
|
72
62
|
const withSession = signers?.type === 'session' ? signers.session : null;
|
|
73
63
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
74
|
-
chain
|
|
75
|
-
transport: (0,
|
|
64
|
+
chain,
|
|
65
|
+
transport: (0, utils_1.createTransport)(chain, config.provider),
|
|
76
66
|
});
|
|
77
|
-
const validatorAccount = await (0, utils_2.getValidatorAccount)(config, signers, publicClient,
|
|
67
|
+
const validatorAccount = await (0, utils_2.getValidatorAccount)(config, signers, publicClient, chain);
|
|
78
68
|
if (!validatorAccount) {
|
|
79
69
|
throw new Error('No validator account found');
|
|
80
70
|
}
|
|
81
71
|
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
82
72
|
if (withSession) {
|
|
83
|
-
await (0, smart_session_1.enableSmartSession)(
|
|
73
|
+
await (0, smart_session_1.enableSmartSession)(chain, config, withSession);
|
|
84
74
|
}
|
|
75
|
+
const calls = (0, utils_2.parseCalls)(callInputs, chain.id);
|
|
85
76
|
const hash = await bundlerClient.sendUserOperation({
|
|
86
77
|
account: validatorAccount,
|
|
87
78
|
calls,
|
|
@@ -89,17 +80,22 @@ async function sendTransactionAsUserOp(config, sourceChain, targetChain, calls,
|
|
|
89
80
|
return {
|
|
90
81
|
type: 'userop',
|
|
91
82
|
hash,
|
|
92
|
-
|
|
93
|
-
targetChain: targetChain.id,
|
|
83
|
+
chain: chain.id,
|
|
94
84
|
};
|
|
95
85
|
}
|
|
96
|
-
async function sendTransactionAsIntent(config,
|
|
97
|
-
const { intentRoute
|
|
86
|
+
async function sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, signers, sponsored) {
|
|
87
|
+
const { intentRoute } = await (0, utils_2.prepareTransactionAsIntent)(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, accountAddress, sponsored ?? false);
|
|
98
88
|
if (!intentRoute) {
|
|
99
89
|
throw new error_1.OrderPathRequiredForIntentsError();
|
|
100
90
|
}
|
|
101
|
-
const signature = await (0, utils_2.signIntent)(config,
|
|
102
|
-
|
|
91
|
+
const signature = await (0, utils_2.signIntent)(config, targetChain, intentRoute.intentOp, signers);
|
|
92
|
+
const authorizations = config.eoa
|
|
93
|
+
? await (0, utils_2.signAuthorizationsInternal)(config, {
|
|
94
|
+
type: 'intent',
|
|
95
|
+
intentRoute,
|
|
96
|
+
})
|
|
97
|
+
: [];
|
|
98
|
+
return await (0, utils_2.submitIntentInternal)(config, sourceChains, targetChain, intentRoute.intentOp, signature, authorizations);
|
|
103
99
|
}
|
|
104
100
|
async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
105
101
|
const validStatuses = new Set([
|
|
@@ -114,7 +110,7 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
|
114
110
|
case 'intent': {
|
|
115
111
|
let intentStatus = null;
|
|
116
112
|
while (intentStatus === null || !validStatuses.has(intentStatus.status)) {
|
|
117
|
-
const orchestrator = (0, utils_2.getOrchestratorByChain)(result.targetChain, config.rhinestoneApiKey);
|
|
113
|
+
const orchestrator = (0, utils_2.getOrchestratorByChain)(result.targetChain, config.rhinestoneApiKey, config.useDev);
|
|
118
114
|
intentStatus = await orchestrator.getIntentOpStatus(result.id);
|
|
119
115
|
await new Promise((resolve) => setTimeout(resolve, POLLING_INTERVAL));
|
|
120
116
|
}
|
|
@@ -124,10 +120,10 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
|
124
120
|
return intentStatus;
|
|
125
121
|
}
|
|
126
122
|
case 'userop': {
|
|
127
|
-
const targetChain = (0, registry_1.getChainById)(result.
|
|
123
|
+
const targetChain = (0, registry_1.getChainById)(result.chain);
|
|
128
124
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
129
125
|
chain: targetChain,
|
|
130
|
-
transport: (0,
|
|
126
|
+
transport: (0, utils_1.createTransport)(targetChain, config.provider),
|
|
131
127
|
});
|
|
132
128
|
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
133
129
|
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
@@ -137,55 +133,14 @@ async function waitForExecution(config, result, acceptsPreconfirmations) {
|
|
|
137
133
|
}
|
|
138
134
|
}
|
|
139
135
|
}
|
|
140
|
-
async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits) {
|
|
136
|
+
async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits, sponsored = false) {
|
|
141
137
|
const address = (0, accounts_1.getAddress)(config);
|
|
142
|
-
const orchestrator = (0, utils_2.getOrchestratorByChain)(chain.id, config.rhinestoneApiKey);
|
|
143
|
-
return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits);
|
|
138
|
+
const orchestrator = (0, utils_2.getOrchestratorByChain)(chain.id, config.rhinestoneApiKey, config.useDev);
|
|
139
|
+
return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits, sponsored);
|
|
144
140
|
}
|
|
145
141
|
async function getPortfolio(config, onTestnets) {
|
|
146
142
|
const address = (0, accounts_1.getAddress)(config);
|
|
147
143
|
const chainId = onTestnets ? chains_1.sepolia.id : chains_1.mainnet.id;
|
|
148
|
-
const orchestrator = (0, utils_2.getOrchestratorByChain)(chainId, config.rhinestoneApiKey);
|
|
144
|
+
const orchestrator = (0, utils_2.getOrchestratorByChain)(chainId, config.rhinestoneApiKey, config.useDev);
|
|
149
145
|
return orchestrator.getPortfolio(address);
|
|
150
146
|
}
|
|
151
|
-
async function deposit(config, chain, amount, tokenAddress) {
|
|
152
|
-
async function getCalls(address) {
|
|
153
|
-
if (!tokenAddress || tokenAddress === viem_1.zeroAddress) {
|
|
154
|
-
// ETH deposit
|
|
155
|
-
return [(0, compact_1.getDepositEtherCall)(address, amount)];
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
// ERC20 deposit
|
|
159
|
-
const publicClient = (0, viem_1.createPublicClient)({
|
|
160
|
-
chain,
|
|
161
|
-
transport: (0, viem_1.http)(),
|
|
162
|
-
});
|
|
163
|
-
const allowance = await publicClient.readContract({
|
|
164
|
-
address: tokenAddress,
|
|
165
|
-
abi: viem_1.erc20Abi,
|
|
166
|
-
functionName: 'allowance',
|
|
167
|
-
args: [address, compact_1.COMPACT_ADDRESS],
|
|
168
|
-
});
|
|
169
|
-
const calls = [];
|
|
170
|
-
if (allowance < amount) {
|
|
171
|
-
calls.push((0, compact_1.getApproveErc20Call)(tokenAddress, amount));
|
|
172
|
-
}
|
|
173
|
-
calls.push((0, compact_1.getDepositErc20Call)(address, tokenAddress, amount));
|
|
174
|
-
return calls;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
const address = (0, accounts_1.getAddress)(config);
|
|
178
|
-
const owners = config.owners;
|
|
179
|
-
const calls = await getCalls(address);
|
|
180
|
-
return await sendTransactionAsUserOp(config, chain, chain, calls, owners.type === 'ecdsa'
|
|
181
|
-
? {
|
|
182
|
-
type: 'owner',
|
|
183
|
-
kind: 'ecdsa',
|
|
184
|
-
accounts: owners.accounts,
|
|
185
|
-
}
|
|
186
|
-
: {
|
|
187
|
-
type: 'owner',
|
|
188
|
-
kind: 'passkey',
|
|
189
|
-
account: owners.account,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Chain, type Hex } from 'viem';
|
|
2
|
-
import { ChainDigest, EnableSessionData, SmartSessionModeType } from '../modules/validators/smart-sessions';
|
|
2
|
+
import { type ChainDigest, type EnableSessionData, type SmartSessionModeType } from '../modules/validators/smart-sessions';
|
|
3
3
|
import type { RhinestoneAccountConfig, Session } from '../types';
|
|
4
4
|
interface SessionDetails {
|
|
5
5
|
permissionEnableHash: Hex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAmBb,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAGtB,KAAK,oBAAoB,EAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAGV,uBAAuB,EACvB,OAAO,EACR,MAAM,UAAU,CAAA;AAGjB,UAAU,cAAc;IACtB,oBAAoB,EAAE,GAAG,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA4BzB;AAgGD,iBAAS,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAgC7D;AAiLD,iBAAe,kBAAkB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,OAAO,iBA+BjB;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACrE,YAAY,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -6,14 +6,13 @@ exports.getMultichainDigest = getMultichainDigest;
|
|
|
6
6
|
const viem_1 = require("viem");
|
|
7
7
|
const accounts_1 = require("../accounts");
|
|
8
8
|
const utils_1 = require("../accounts/utils");
|
|
9
|
-
const modules_1 = require("../modules");
|
|
10
9
|
const validators_1 = require("../modules/validators");
|
|
11
10
|
const smart_sessions_1 = require("../modules/validators/smart-sessions");
|
|
12
11
|
const error_1 = require("./error");
|
|
13
12
|
async function getSessionDetails(config, sessions, sessionIndex, signature) {
|
|
14
13
|
const account = (0, accounts_1.getAccountProvider)(config);
|
|
15
14
|
const accountAddress = (0, accounts_1.getAddress)(config);
|
|
16
|
-
const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress);
|
|
15
|
+
const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress, config.provider);
|
|
17
16
|
const chain = sessions[sessionIndex].chain;
|
|
18
17
|
if (!chain) {
|
|
19
18
|
throw new error_1.SessionChainRequiredError();
|
|
@@ -24,24 +23,24 @@ async function getSessionDetails(config, sessions, sessionIndex, signature) {
|
|
|
24
23
|
};
|
|
25
24
|
sessionDetails.enableSessionData.signature =
|
|
26
25
|
signature ??
|
|
27
|
-
(await (0, accounts_1.getPackedSignature)(config,
|
|
26
|
+
(await (0, accounts_1.getPackedSignature)(config, undefined, chain, validator, sessionDetails.permissionEnableHash));
|
|
28
27
|
return sessionDetails;
|
|
29
28
|
}
|
|
30
|
-
async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress) {
|
|
29
|
+
async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress, provider) {
|
|
31
30
|
const chainDigests = [];
|
|
32
31
|
const chainSessions = [];
|
|
33
32
|
for (const session of sessions) {
|
|
34
33
|
const permissionId = (0, validators_1.getPermissionId)(session);
|
|
35
|
-
const publicClient = (0, viem_1.createPublicClient)({
|
|
36
|
-
chain: session.chain,
|
|
37
|
-
transport: (0, viem_1.http)(),
|
|
38
|
-
});
|
|
39
34
|
const sessionChain = session.chain;
|
|
40
35
|
if (!sessionChain) {
|
|
41
36
|
throw new error_1.SessionChainRequiredError();
|
|
42
37
|
}
|
|
38
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
39
|
+
chain: sessionChain,
|
|
40
|
+
transport: (0, utils_1.createTransport)(sessionChain, provider),
|
|
41
|
+
});
|
|
43
42
|
const sessionNonce = await getSessionNonce(publicClient, accountAddress, permissionId);
|
|
44
|
-
const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session);
|
|
43
|
+
const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session, provider);
|
|
45
44
|
const sessionDigest = await getSessionDigest(publicClient, accountAddress, sessionData, permissionId, validators_1.SMART_SESSION_MODE_ENABLE);
|
|
46
45
|
chainDigests.push({
|
|
47
46
|
chainId: BigInt(sessionChain.id),
|
|
@@ -74,7 +73,7 @@ async function getEnableSessionDetails(accountType, sessions, sessionIndex, acco
|
|
|
74
73
|
if (!sessionChain) {
|
|
75
74
|
throw new error_1.SessionChainRequiredError();
|
|
76
75
|
}
|
|
77
|
-
const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable);
|
|
76
|
+
const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable, provider);
|
|
78
77
|
return {
|
|
79
78
|
permissionEnableHash,
|
|
80
79
|
mode: validators_1.SMART_SESSION_MODE_ENABLE,
|
|
@@ -274,23 +273,19 @@ async function getSessionDigest(client, account, session, permissionId, mode) {
|
|
|
274
273
|
async function enableSmartSession(chain, config, session) {
|
|
275
274
|
const publicClient = (0, viem_1.createPublicClient)({
|
|
276
275
|
chain,
|
|
277
|
-
transport: (0,
|
|
276
|
+
transport: (0, utils_1.createTransport)(chain, config.provider),
|
|
278
277
|
});
|
|
279
278
|
const address = (0, accounts_1.getAddress)(config);
|
|
280
279
|
const isEnabled = await (0, validators_1.isSessionEnabled)(publicClient, address, (0, validators_1.getPermissionId)(session));
|
|
281
280
|
if (isEnabled) {
|
|
282
281
|
return;
|
|
283
282
|
}
|
|
284
|
-
const enableSessionCall = await (0, validators_1.getEnableSessionCall)(chain, session);
|
|
285
|
-
const trustedAttesters = await (0, modules_1.getTrustedAttesters)(publicClient, address);
|
|
286
|
-
const trustAttesterCall = trustedAttesters.length === 0 ? (0, modules_1.getTrustAttesterCall)(config) : undefined;
|
|
283
|
+
const enableSessionCall = await (0, validators_1.getEnableSessionCall)(chain, session, config.provider);
|
|
287
284
|
const smartAccount = await (0, accounts_1.getSmartAccount)(config, publicClient, chain);
|
|
288
285
|
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
289
286
|
const opHash = await bundlerClient.sendUserOperation({
|
|
290
287
|
account: smartAccount,
|
|
291
|
-
calls:
|
|
292
|
-
? [trustAttesterCall, enableSessionCall]
|
|
293
|
-
: [enableSessionCall],
|
|
288
|
+
calls: [enableSessionCall],
|
|
294
289
|
});
|
|
295
290
|
await bundlerClient.waitForUserOperationReceipt({
|
|
296
291
|
hash: opHash,
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { Address, Chain, Hex, PublicClient } from 'viem';
|
|
2
|
-
import { UserOperation } from 'viem/account-abstraction';
|
|
3
|
-
import { IntentOp, IntentRoute } from '../orchestrator';
|
|
4
|
-
import { Call, RhinestoneAccountConfig, SignerSet, TokenRequest, Transaction } from '../types';
|
|
1
|
+
import { type Address, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type SignableMessage, type SignedAuthorization, type SignedAuthorizationList, type TypedData } from 'viem';
|
|
2
|
+
import { type UserOperation } from 'viem/account-abstraction';
|
|
3
|
+
import { type IntentOp, type IntentRoute } from '../orchestrator';
|
|
4
|
+
import type { Call, CallInput, RhinestoneAccountConfig, SignerSet, TokenRequest, Transaction } from '../types';
|
|
5
5
|
type TransactionResult = {
|
|
6
6
|
type: 'userop';
|
|
7
7
|
hash: Hex;
|
|
8
|
-
|
|
9
|
-
targetChain: number;
|
|
8
|
+
chain: number;
|
|
10
9
|
} | {
|
|
11
10
|
type: 'intent';
|
|
12
11
|
id: bigint;
|
|
13
|
-
|
|
12
|
+
sourceChains?: number[];
|
|
14
13
|
targetChain: number;
|
|
15
14
|
};
|
|
16
15
|
interface IntentData {
|
|
17
16
|
type: 'intent';
|
|
18
|
-
hash: Hex;
|
|
19
17
|
intentRoute: IntentRoute;
|
|
20
18
|
}
|
|
21
19
|
interface UserOpData {
|
|
@@ -32,12 +30,19 @@ interface SignedTransactionData extends PreparedTransactionData {
|
|
|
32
30
|
}
|
|
33
31
|
declare function prepareTransaction(config: RhinestoneAccountConfig, transaction: Transaction): Promise<PreparedTransactionData>;
|
|
34
32
|
declare function signTransaction(config: RhinestoneAccountConfig, preparedTransaction: PreparedTransactionData): Promise<SignedTransactionData>;
|
|
35
|
-
declare function
|
|
36
|
-
declare function
|
|
37
|
-
declare function
|
|
38
|
-
declare function
|
|
39
|
-
declare function
|
|
33
|
+
declare function signAuthorizations(config: RhinestoneAccountConfig, preparedTransaction: PreparedTransactionData): Promise<SignedAuthorization[]>;
|
|
34
|
+
declare function signMessage(config: RhinestoneAccountConfig, message: SignableMessage, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
|
|
35
|
+
declare function signTypedData<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneAccountConfig, parameters: HashTypedDataParameters<typedData, primaryType>, chain: Chain, signers: SignerSet | undefined): Promise<`0x${string}`>;
|
|
36
|
+
declare function signAuthorizationsInternal(config: RhinestoneAccountConfig, data: IntentData | UserOpData): Promise<SignedAuthorization[]>;
|
|
37
|
+
declare function submitTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
|
|
38
|
+
declare function simulateTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
|
|
39
|
+
declare function prepareTransactionAsIntent(config: RhinestoneAccountConfig, sourceChains: Chain[] | undefined, targetChain: Chain, callInputs: CallInput[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address, isSponsored: boolean, eip7702InitSignature?: Hex): Promise<IntentData>;
|
|
40
|
+
declare function signIntent(config: RhinestoneAccountConfig, targetChain: Chain, intentOp: IntentOp, signers?: SignerSet): Promise<`0x${string}`>;
|
|
41
|
+
declare function getOrchestratorByChain(chainId: number, apiKey: string | undefined, useDev: boolean | undefined): import("../orchestrator").Orchestrator;
|
|
42
|
+
declare function submitIntentInternal(config: RhinestoneAccountConfig, sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<TransactionResult>;
|
|
43
|
+
declare function simulateIntentInternal(config: RhinestoneAccountConfig, _sourceChains: Chain[] | undefined, targetChain: Chain, intentOp: IntentOp, signature: Hex, authorizations: SignedAuthorizationList): Promise<import("../orchestrator").IntentResult>;
|
|
40
44
|
declare function getValidatorAccount(config: RhinestoneAccountConfig, signers: SignerSet | undefined, publicClient: PublicClient, chain: Chain): Promise<import("viem/account-abstraction").SmartAccount<import("viem/account-abstraction").SmartAccountImplementation<import("viem").Abi, "0.7">> | null | undefined>;
|
|
41
|
-
|
|
45
|
+
declare function parseCalls(calls: CallInput[], chainId: number): Call[];
|
|
46
|
+
export { prepareTransaction, signTransaction, signAuthorizations, signAuthorizationsInternal, signMessage, signTypedData, submitTransaction, simulateTransaction, getOrchestratorByChain, signIntent, prepareTransactionAsIntent, submitIntentInternal, simulateIntentInternal, getValidatorAccount, parseCalls, };
|
|
42
47
|
export type { IntentData, TransactionResult, PreparedTransactionData, SignedTransactionData, };
|
|
43
48
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../execution/utils.ts"],"names":[],"mappings":"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"}
|