@rhinestone/sdk 2.0.0-beta.2 → 2.0.0-beta.20
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/index.d.ts +5 -5
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +46 -2
- package/dist/src/actions/ecdsa.js +2 -2
- package/dist/src/actions/index.js +2 -2
- package/dist/src/actions/mfa.js +2 -2
- package/dist/src/actions/passkeys.js +2 -2
- package/dist/src/actions/smart-sessions.d.ts +11 -3
- package/dist/src/actions/smart-sessions.d.ts.map +1 -1
- package/dist/src/actions/smart-sessions.js +14 -9
- package/dist/src/errors/index.d.ts +3 -3
- package/dist/src/errors/index.d.ts.map +1 -1
- package/dist/src/errors/index.js +4 -4
- package/dist/src/execution/error.d.ts +8 -7
- package/dist/src/execution/error.d.ts.map +1 -1
- package/dist/src/execution/error.js +7 -5
- package/dist/src/execution/index.d.ts +16 -17
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +18 -34
- package/dist/src/execution/utils.d.ts +15 -11
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +259 -56
- package/dist/src/index.d.ts +6 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/modules/validators/permissions.d.ts.map +1 -1
- package/dist/src/modules/validators/permissions.js +161 -17
- package/dist/src/modules/validators/smart-sessions.d.ts +24 -8
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +227 -83
- package/dist/src/orchestrator/caip2.d.ts +9 -3
- package/dist/src/orchestrator/caip2.d.ts.map +1 -1
- package/dist/src/orchestrator/caip2.js +40 -5
- package/dist/src/orchestrator/client.d.ts +2 -1
- package/dist/src/orchestrator/client.d.ts.map +1 -1
- package/dist/src/orchestrator/client.js +56 -30
- package/dist/src/orchestrator/consts.d.ts +1 -1
- package/dist/src/orchestrator/consts.d.ts.map +1 -1
- package/dist/src/orchestrator/consts.js +1 -1
- package/dist/src/orchestrator/destinations.d.ts +23 -0
- package/dist/src/orchestrator/destinations.d.ts.map +1 -0
- package/dist/src/orchestrator/destinations.js +36 -0
- package/dist/src/orchestrator/error.d.ts +22 -3
- package/dist/src/orchestrator/error.d.ts.map +1 -1
- package/dist/src/orchestrator/error.js +32 -2
- package/dist/src/orchestrator/index.d.ts +6 -5
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +4 -3
- package/dist/src/orchestrator/registry.d.ts +2 -1
- package/dist/src/orchestrator/registry.d.ts.map +1 -1
- package/dist/src/orchestrator/registry.js +10 -0
- package/dist/src/orchestrator/types.d.ts +103 -35
- package/dist/src/orchestrator/types.d.ts.map +1 -1
- package/dist/src/orchestrator/types.js +1 -5
- package/dist/src/types.d.ts +148 -15
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type TypedData } from 'viem';
|
|
2
|
-
import type
|
|
1
|
+
import { type Address, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type TypedData } from 'viem';
|
|
2
|
+
import { type Module } from '../modules/common.js';
|
|
3
3
|
import type { ResolvedSessionSignerSet } from '../modules/validators/smart-sessions.js';
|
|
4
4
|
import type { AccountProviderConfig, Call, OwnerSet, RhinestoneConfig, SignerSet } from '../types.js';
|
|
5
5
|
import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, EoaSigningMethodNotConfiguredError, EoaSigningNotSupportedError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, ModuleInstallationNotSupportedError, OwnersFieldRequiredError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError } from './error.js';
|
|
6
6
|
import { type ValidatorConfig } from './utils.js';
|
|
7
7
|
type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
|
|
8
8
|
declare function getInitCode(config: RhinestoneConfig): {
|
|
9
|
-
address:
|
|
9
|
+
address: Address;
|
|
10
10
|
} | {
|
|
11
11
|
factory: `0x${string}`;
|
|
12
12
|
factoryData: `0x${string}`;
|
|
13
13
|
} | undefined;
|
|
14
14
|
declare function getV0InitCode(config: RhinestoneConfig): {
|
|
15
|
-
address:
|
|
15
|
+
address: Address;
|
|
16
16
|
} | {
|
|
17
17
|
factory: `0x${string}`;
|
|
18
18
|
factoryData: `0x${string}`;
|
|
@@ -30,7 +30,7 @@ declare function getEip712Domain(config: RhinestoneConfig, chain: Chain): {
|
|
|
30
30
|
salt: "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
31
31
|
};
|
|
32
32
|
declare function getModuleInstallationCalls(config: RhinestoneConfig, module: Module): Call[];
|
|
33
|
-
declare function getModuleUninstallationCalls(config: RhinestoneConfig, module: Module): Call[]
|
|
33
|
+
declare function getModuleUninstallationCalls(config: RhinestoneConfig, chain: Chain, module: Module): Promise<Call[]>;
|
|
34
34
|
declare function getAddress(config: RhinestoneConfig): `0x${string}`;
|
|
35
35
|
declare function checkAddress(config: RhinestoneConfig): boolean;
|
|
36
36
|
declare function getEip1271Signature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,uBAAuB,EAC5B,KAAK,GAAG,EAER,KAAK,YAAY,EAEjB,KAAK,SAAS,EAEf,MAAM,MAAM,CAAA;AASb,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { concat, createPublicClient, encodeAbiParameters, encodeFunctionData, hashTypedData, size, zeroAddress, } from 'viem';
|
|
2
2
|
import { sendTransactionInternal, sendUserOperationInternal, waitForExecution, } from '../execution/index.js';
|
|
3
3
|
import { getIntentExecutor, getSetup } from '../modules/index.js';
|
|
4
|
+
import { MODULE_TYPE_ID_VALIDATOR } from '../modules/common.js';
|
|
5
|
+
import { getValidators as getValidatorsInternal } from '../modules/read.js';
|
|
4
6
|
import { getOwnerValidator } from '../modules/validators/index.js';
|
|
5
7
|
import { getSocialRecoveryValidator } from '../modules/validators/core.js';
|
|
6
8
|
import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, EoaSigningMethodNotConfiguredError, EoaSigningNotSupportedError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, ModuleInstallationNotSupportedError, OwnersFieldRequiredError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError, } from './error.js';
|
|
@@ -178,8 +180,14 @@ function getModuleInstallationCalls(config, module) {
|
|
|
178
180
|
data,
|
|
179
181
|
}));
|
|
180
182
|
}
|
|
181
|
-
|
|
183
|
+
// SentinelList head pointer used by ERC-7579 module managers (Nexus, Safe7579,
|
|
184
|
+
// Startale). Validator/executor uninstall on these accounts decodes the
|
|
185
|
+
// `deInitData` slot as `(address prev, bytes moduleDeInit)`, where `prev`
|
|
186
|
+
// identifies the preceding linked-list entry to repair on removal.
|
|
187
|
+
const SENTINEL_LIST_HEAD = '0x0000000000000000000000000000000000000001';
|
|
188
|
+
async function getModuleUninstallationCalls(config, chain, module) {
|
|
182
189
|
const address = getAddress(config);
|
|
190
|
+
const onChainDeInitData = await resolveOnChainDeInitData(config, chain, address, module);
|
|
183
191
|
const data = encodeFunctionData({
|
|
184
192
|
abi: [
|
|
185
193
|
{
|
|
@@ -204,10 +212,46 @@ function getModuleUninstallationCalls(config, module) {
|
|
|
204
212
|
},
|
|
205
213
|
],
|
|
206
214
|
functionName: 'uninstallModule',
|
|
207
|
-
args: [module.type, module.address,
|
|
215
|
+
args: [module.type, module.address, onChainDeInitData],
|
|
208
216
|
});
|
|
209
217
|
return [{ to: address, data, value: 0n }];
|
|
210
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Build the value the account expects in `uninstallModule`'s third argument.
|
|
221
|
+
*
|
|
222
|
+
* `Module.deInitData` carries module-level bytes (mirroring `Module.initData`,
|
|
223
|
+
* what the module's `onUninstall` sees). ERC-7579 accounts that store
|
|
224
|
+
* validators / executors in a SentinelList — Nexus, Safe7579, Startale —
|
|
225
|
+
* require an account-level wrapper `abi.encode(prev, moduleDeInit)` so they
|
|
226
|
+
* can pop the entry from the linked list. Kernel uses different storage and
|
|
227
|
+
* treats this slot as raw module bytes, so we pass `module.deInitData` through
|
|
228
|
+
* unchanged.
|
|
229
|
+
*
|
|
230
|
+
* Scope: validator type only — there are no public actions to disable
|
|
231
|
+
* executor modules today.
|
|
232
|
+
*/
|
|
233
|
+
async function resolveOnChainDeInitData(config, chain, account, module) {
|
|
234
|
+
if (module.type !== MODULE_TYPE_ID_VALIDATOR) {
|
|
235
|
+
return module.deInitData;
|
|
236
|
+
}
|
|
237
|
+
const accountType = getAccountProvider(config).type;
|
|
238
|
+
if (accountType !== 'nexus' &&
|
|
239
|
+
accountType !== 'safe' &&
|
|
240
|
+
accountType !== 'startale') {
|
|
241
|
+
return module.deInitData;
|
|
242
|
+
}
|
|
243
|
+
const validators = await getValidatorsInternal(accountType, account, chain, config.provider);
|
|
244
|
+
const targetLower = module.address.toLowerCase();
|
|
245
|
+
const index = validators.findIndex((v) => v.toLowerCase() === targetLower);
|
|
246
|
+
if (index === -1) {
|
|
247
|
+
// Not installed; pass through unchanged. The account's `uninstallModule`
|
|
248
|
+
// will surface a `ModuleNotInstalled` revert with the original module
|
|
249
|
+
// address, which is more useful than a silent abi.decode mismatch.
|
|
250
|
+
return module.deInitData;
|
|
251
|
+
}
|
|
252
|
+
const prev = index === 0 ? SENTINEL_LIST_HEAD : validators[index - 1];
|
|
253
|
+
return encodeAbiParameters([{ type: 'address' }, { type: 'bytes' }], [prev, module.deInitData]);
|
|
254
|
+
}
|
|
211
255
|
function getAddress(config) {
|
|
212
256
|
if (is7702(config)) {
|
|
213
257
|
if (!config.eoa) {
|
|
@@ -22,8 +22,8 @@ function enable(owners, threshold = 1) {
|
|
|
22
22
|
function disable() {
|
|
23
23
|
const module = getOwnableValidator(1, []);
|
|
24
24
|
return {
|
|
25
|
-
async resolve({ config }) {
|
|
26
|
-
return getModuleUninstallationCalls(config, module);
|
|
25
|
+
async resolve({ chain, config }) {
|
|
26
|
+
return getModuleUninstallationCalls(config, chain, module);
|
|
27
27
|
},
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -21,8 +21,8 @@ function installModule(module) {
|
|
|
21
21
|
function uninstallModule(module) {
|
|
22
22
|
const moduleData = getModule(module);
|
|
23
23
|
return {
|
|
24
|
-
async resolve({ config }) {
|
|
25
|
-
return getModuleUninstallationCalls(config, moduleData);
|
|
24
|
+
async resolve({ chain, config }) {
|
|
25
|
+
return getModuleUninstallationCalls(config, chain, moduleData);
|
|
26
26
|
},
|
|
27
27
|
};
|
|
28
28
|
}
|
package/dist/src/actions/mfa.js
CHANGED
|
@@ -47,8 +47,8 @@ function changeThreshold(newThreshold) {
|
|
|
47
47
|
function disable() {
|
|
48
48
|
const module = getMultiFactorValidator(1, []);
|
|
49
49
|
return {
|
|
50
|
-
async resolve({ config }) {
|
|
51
|
-
return getModuleUninstallationCalls(config, module);
|
|
50
|
+
async resolve({ chain, config }) {
|
|
51
|
+
return getModuleUninstallationCalls(config, chain, module);
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Hex } from 'viem';
|
|
2
|
-
import type { LazyCallInput,
|
|
2
|
+
import type { LazyCallInput, Session } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Enable smart sessions
|
|
5
5
|
* @returns Calls to enable smart sessions
|
|
@@ -12,10 +12,18 @@ declare function experimental_enable(): LazyCallInput;
|
|
|
12
12
|
declare function experimental_disable(): LazyCallInput;
|
|
13
13
|
/**
|
|
14
14
|
* Enable a smart session
|
|
15
|
-
*
|
|
15
|
+
*
|
|
16
|
+
* The `session` must be a resolved `Session` (the return value of
|
|
17
|
+
* `toSession(...)`). Re-resolving it here would drop the explicit
|
|
18
|
+
* `permissions` — a `Session` only carries the derived `actions`, not the
|
|
19
|
+
* original `SessionDefinition.permissions` — which makes the on-chain digest
|
|
20
|
+
* computed by `SmartSessionLens.getAndVerifyDigest` diverge from the one
|
|
21
|
+
* signed in `getSessionDetails`, causing the emissary to reject the enable.
|
|
22
|
+
*
|
|
23
|
+
* @param session resolved session to enable
|
|
16
24
|
* @returns Calls to enable the smart session
|
|
17
25
|
*/
|
|
18
|
-
declare function experimental_enableSession(session:
|
|
26
|
+
declare function experimental_enableSession(session: Session, enableSessionSignature: Hex, hashesAndChainIds: {
|
|
19
27
|
chainId: bigint;
|
|
20
28
|
sessionDigest: Hex;
|
|
21
29
|
}[], sessionToEnableIndex: number): LazyCallInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../actions/smart-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../actions/smart-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAS/B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEtD;;;GAGG;AACH,iBAAS,mBAAmB,IAAI,aAAa,CAU5C;AAED;;;GAGG;AACH,iBAAS,oBAAoB,IAAI,aAAa,CAU7C;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,0BAA0B,CACjC,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,GAAG,EAC3B,iBAAiB,EAAE;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,GAAG,CAAA;CACnB,EAAE,EACH,oBAAoB,EAAE,MAAM,GAC3B,aAAa,CAaf;AAED,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getModuleInstallationCalls, getModuleUninstallationCalls, } from '../accounts/index.js';
|
|
2
|
-
import { getEnableSessionCall, getSmartSessionValidator,
|
|
2
|
+
import { getEnableSessionCall, getSmartSessionValidator, } from '../modules/validators/smart-sessions.js';
|
|
3
3
|
/**
|
|
4
4
|
* Enable smart sessions
|
|
5
5
|
* @returns Calls to enable smart sessions
|
|
@@ -21,27 +21,32 @@ function experimental_enable() {
|
|
|
21
21
|
*/
|
|
22
22
|
function experimental_disable() {
|
|
23
23
|
return {
|
|
24
|
-
async resolve({ config }) {
|
|
24
|
+
async resolve({ chain, config }) {
|
|
25
25
|
const module = getSmartSessionValidator(config);
|
|
26
26
|
if (!module) {
|
|
27
27
|
return [];
|
|
28
28
|
}
|
|
29
|
-
return getModuleUninstallationCalls(config, module);
|
|
29
|
+
return getModuleUninstallationCalls(config, chain, module);
|
|
30
30
|
},
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Enable a smart session
|
|
35
|
-
*
|
|
35
|
+
*
|
|
36
|
+
* The `session` must be a resolved `Session` (the return value of
|
|
37
|
+
* `toSession(...)`). Re-resolving it here would drop the explicit
|
|
38
|
+
* `permissions` — a `Session` only carries the derived `actions`, not the
|
|
39
|
+
* original `SessionDefinition.permissions` — which makes the on-chain digest
|
|
40
|
+
* computed by `SmartSessionLens.getAndVerifyDigest` diverge from the one
|
|
41
|
+
* signed in `getSessionDetails`, causing the emissary to reject the enable.
|
|
42
|
+
*
|
|
43
|
+
* @param session resolved session to enable
|
|
36
44
|
* @returns Calls to enable the smart session
|
|
37
45
|
*/
|
|
38
46
|
function experimental_enableSession(session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex) {
|
|
39
47
|
return {
|
|
40
|
-
async resolve({ accountAddress,
|
|
41
|
-
return getEnableSessionCall(accountAddress,
|
|
42
|
-
...session,
|
|
43
|
-
chain,
|
|
44
|
-
}, { useDevContracts: config.useDevContracts }), enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, config.useDevContracts);
|
|
48
|
+
async resolve({ accountAddress, config }) {
|
|
49
|
+
return getEnableSessionCall(accountAddress, session, enableSessionSignature, hashesAndChainIds, sessionToEnableIndex, config.useDevContracts);
|
|
45
50
|
},
|
|
46
51
|
};
|
|
47
52
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError } from '../accounts/index.js';
|
|
2
|
-
import { ExecutionError, IntentFailedError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError } from '../execution/index.js';
|
|
3
|
-
import { ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, UnsupportedChainError, UnsupportedTokenError, ValidationError } from '../orchestrator/index.js';
|
|
4
|
-
export { isAccountError, AccountError, AccountConfigurationNotSupportedError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, EoaAccountMustHaveAccountError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, SmartSessionsNotEnabledError, SigningNotSupportedForAccountError, Eip7702NotSupportedForAccountError, WalletClientNoConnectedAccountError, isExecutionError, ExecutionError, IntentFailedError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, ValidationError, UnsupportedChainError, UnsupportedTokenError, };
|
|
2
|
+
import { ExecutionError, IntentFailedError, InvalidSourceCallsError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError } from '../execution/index.js';
|
|
3
|
+
import { ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, KeyScopeDeniedError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, UnsupportedChainError, UnsupportedTokenError, ValidationError } from '../orchestrator/index.js';
|
|
4
|
+
export { isAccountError, AccountError, AccountConfigurationNotSupportedError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, EoaAccountMustHaveAccountError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, SmartSessionsNotEnabledError, SigningNotSupportedForAccountError, Eip7702NotSupportedForAccountError, WalletClientNoConnectedAccountError, isExecutionError, ExecutionError, IntentFailedError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, KeyScopeDeniedError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, ValidationError, UnsupportedChainError, UnsupportedTokenError, };
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,YAAY,EACZ,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,wCAAwC,EACxC,4BAA4B,EAC5B,cAAc,EACd,kCAAkC,EAClC,4BAA4B,EAC5B,mCAAmC,EACpC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC9B,wCAAwC,EACxC,4BAA4B,EAC5B,4BAA4B,EAC5B,kCAAkC,EAClC,kCAAkC,EAClC,mCAAmC,EAEnC,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EAEvB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EAEf,qBAAqB,EACrB,qBAAqB,GACtB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,YAAY,EACZ,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,wCAAwC,EACxC,4BAA4B,EAC5B,cAAc,EACd,kCAAkC,EAClC,4BAA4B,EAC5B,mCAAmC,EACpC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC9B,wCAAwC,EACxC,4BAA4B,EAC5B,4BAA4B,EAC5B,kCAAkC,EAClC,kCAAkC,EAClC,mCAAmC,EAEnC,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EAEvB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EAEf,qBAAqB,EACrB,qBAAqB,GACtB,CAAA"}
|
package/dist/src/errors/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError, } from '../accounts/index.js';
|
|
2
|
-
import { ExecutionError, IntentFailedError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, } from '../execution/index.js';
|
|
3
|
-
import { ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, UnsupportedChainError, UnsupportedTokenError, ValidationError, } from '../orchestrator/index.js';
|
|
2
|
+
import { ExecutionError, IntentFailedError, InvalidSourceCallsError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, } from '../execution/index.js';
|
|
3
|
+
import { ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, isAuthError, isOrchestratorError, isRateLimited, isRetryable, isValidationError, KeyScopeDeniedError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, UnsupportedChainError, UnsupportedTokenError, ValidationError, } from '../orchestrator/index.js';
|
|
4
4
|
export {
|
|
5
5
|
// Account
|
|
6
6
|
isAccountError, AccountError, AccountConfigurationNotSupportedError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, EoaAccountMustHaveAccountError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, SmartSessionsNotEnabledError, SigningNotSupportedForAccountError, Eip7702NotSupportedForAccountError, WalletClientNoConnectedAccountError,
|
|
7
7
|
// Execution
|
|
8
|
-
isExecutionError, ExecutionError, IntentFailedError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError,
|
|
8
|
+
isExecutionError, ExecutionError, IntentFailedError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError,
|
|
9
9
|
// Orchestrator
|
|
10
|
-
isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, ValidationError,
|
|
10
|
+
isOrchestratorError, isRetryable, isAuthError, isValidationError, isRateLimited, ConflictError, ExternalServiceTimeoutError, ForbiddenError, InsufficientLiquidityError, InternalServerError, KeyScopeDeniedError, NotFoundError, OrchestratorError, RateLimitedError, RelayerMarketUnavailableError, SettlementExecutionError, SettlementQuoteError, UnauthorizedError, UnprocessableContentError, ValidationError,
|
|
11
11
|
// Registry (SDK-local validation)
|
|
12
12
|
UnsupportedChainError, UnsupportedTokenError, };
|
|
@@ -43,18 +43,19 @@ declare class IntentFailedError extends ExecutionError {
|
|
|
43
43
|
traceId?: string;
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
declare class
|
|
46
|
+
declare class QuoteNotInPreparedTransactionError extends ExecutionError {
|
|
47
47
|
constructor(params?: {
|
|
48
|
-
context?:
|
|
48
|
+
context?: {
|
|
49
|
+
intentId?: string;
|
|
50
|
+
};
|
|
49
51
|
errorType?: string;
|
|
50
52
|
traceId?: string;
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
|
-
declare class
|
|
55
|
+
declare class InvalidSourceCallsError extends ExecutionError {
|
|
54
56
|
constructor(params?: {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
};
|
|
57
|
+
chainId?: number;
|
|
58
|
+
context?: any;
|
|
58
59
|
errorType?: string;
|
|
59
60
|
traceId?: string;
|
|
60
61
|
});
|
|
@@ -67,5 +68,5 @@ declare class Eip7702InitSignatureRequiredError extends ExecutionError {
|
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
declare function isExecutionError(error: Error): error is ExecutionError;
|
|
70
|
-
export { isExecutionError, ExecutionError, Eip7702InitSignatureRequiredError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, IntentFailedError,
|
|
71
|
+
export { isExecutionError, ExecutionError, Eip7702InitSignatureRequiredError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, IntentFailedError, SignerNotSupportedError, };
|
|
71
72
|
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../execution/error.ts"],"names":[],"mappings":"AAAA,cAAM,cAAe,SAAQ,KAAK;IAChC,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,cAAM,uBAAwB,SAAQ,cAAc;gBACtC,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,cAAM,gCAAiC,SAAQ,cAAc;gBAC/C,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAMF;AAED,cAAM,yBAA0B,SAAQ,cAAc;gBACxC,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,cAAM,iBAAkB,SAAQ,cAAc;gBAChC,MAAM,CAAC,EAAE;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAMF;AAED,cAAM,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../execution/error.ts"],"names":[],"mappings":"AAAA,cAAM,cAAe,SAAQ,KAAK;IAChC,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,cAAM,uBAAwB,SAAQ,cAAc;gBACtC,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,cAAM,gCAAiC,SAAQ,cAAc;gBAC/C,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAMF;AAED,cAAM,yBAA0B,SAAQ,cAAc;gBACxC,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,cAAM,iBAAkB,SAAQ,cAAc;gBAChC,MAAM,CAAC,EAAE;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAMF;AAED,cAAM,kCAAmC,SAAQ,cAAc;gBACjD,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,cAAM,uBAAwB,SAAQ,cAAc;gBACtC,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;CASF;AAED,cAAM,iCAAkC,SAAQ,cAAc;gBAChD,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAOF;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,cAAc,CAE/D;AAED,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iCAAiC,EACjC,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,CAAA"}
|
|
@@ -55,18 +55,20 @@ class IntentFailedError extends ExecutionError {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
class
|
|
58
|
+
class QuoteNotInPreparedTransactionError extends ExecutionError {
|
|
59
59
|
constructor(params) {
|
|
60
60
|
super({
|
|
61
|
-
message: '
|
|
61
|
+
message: 'Selected quote does not belong to the prepared transaction. Re-prepare and try again.',
|
|
62
62
|
...params,
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
class
|
|
66
|
+
class InvalidSourceCallsError extends ExecutionError {
|
|
67
67
|
constructor(params) {
|
|
68
68
|
super({
|
|
69
|
-
message:
|
|
69
|
+
message: params?.chainId !== undefined
|
|
70
|
+
? `sourceCalls includes chainId ${params.chainId} which is not in sourceChains (or the target chain for same-chain transactions)`
|
|
71
|
+
: 'sourceCalls includes a chainId not in sourceChains (or the target chain for same-chain transactions)',
|
|
70
72
|
...params,
|
|
71
73
|
});
|
|
72
74
|
}
|
|
@@ -82,4 +84,4 @@ class Eip7702InitSignatureRequiredError extends ExecutionError {
|
|
|
82
84
|
function isExecutionError(error) {
|
|
83
85
|
return error instanceof ExecutionError;
|
|
84
86
|
}
|
|
85
|
-
export { isExecutionError, ExecutionError, Eip7702InitSignatureRequiredError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, IntentFailedError,
|
|
87
|
+
export { isExecutionError, ExecutionError, Eip7702InitSignatureRequiredError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, IntentFailedError, SignerNotSupportedError, };
|
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
import { type Address, type Chain, type Hex } from 'viem';
|
|
2
|
-
import type { UserOperationReceipt } from 'viem/
|
|
2
|
+
import type { UserOperationReceipt } from 'viem/account-abstraction';
|
|
3
3
|
import { type AuthProvider } from '../auth/provider.js';
|
|
4
4
|
import { type IntentOpStatus, type SplitIntentsInput } from '../orchestrator/index.js';
|
|
5
|
-
import type {
|
|
6
|
-
import type { CalldataInput, CallInput, RhinestoneAccountConfig, RhinestoneConfig, SignerSet, SourceAssetInput, Sponsorship, TokenRequest, TokenSymbol, UserOperationTransaction } from '../types.js';
|
|
7
|
-
import { ExecutionError, IntentFailedError,
|
|
5
|
+
import type { SettlementLayerFilter } from '../orchestrator/types.js';
|
|
6
|
+
import type { CalldataInput, CallInput, RhinestoneAccountConfig, RhinestoneConfig, SignerSet, SourceAssetInput, SourceCallInput, Sponsorship, TokenRequest, TokenSymbol, UserOperationTransaction } from '../types.js';
|
|
7
|
+
import { ExecutionError, IntentFailedError, InvalidSourceCallsError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError } from './error.js';
|
|
8
8
|
import type { TransactionResult, UserOperationResult } from './utils.js';
|
|
9
9
|
interface TransactionStatus {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
/** OpenTelemetry trace ID for correlating the status response. */
|
|
11
|
+
traceId: IntentOpStatus['traceId'];
|
|
12
|
+
/** High-level intent status. */
|
|
13
|
+
status: IntentOpStatus['status'];
|
|
14
|
+
/** The account address that owns this intent. */
|
|
15
|
+
accountAddress: Address;
|
|
16
|
+
/** Per-chain operation status. One entry per chain. */
|
|
17
|
+
operations: IntentOpStatus['operations'];
|
|
18
18
|
}
|
|
19
19
|
declare function sendUserOperation(config: RhinestoneAccountConfig, transaction: UserOperationTransaction): Promise<UserOperationResult>;
|
|
20
20
|
declare function sendTransactionInternal(config: RhinestoneConfig, sourceChains: Chain[] | undefined, targetChain: Chain, options: {
|
|
21
21
|
callInputs?: CallInput[];
|
|
22
|
+
sourceCalls?: Record<number, SourceCallInput[]>;
|
|
22
23
|
gasLimit?: bigint;
|
|
23
24
|
initialTokenRequests?: TokenRequest[];
|
|
24
25
|
recipient?: RhinestoneAccountConfig | Address;
|
|
25
26
|
signers?: SignerSet;
|
|
26
27
|
sponsored?: Sponsorship;
|
|
27
28
|
eip7702InitSignature?: Hex;
|
|
28
|
-
settlementLayers?:
|
|
29
|
+
settlementLayers?: SettlementLayerFilter;
|
|
29
30
|
sourceAssets?: SourceAssetInput;
|
|
30
31
|
feeAsset?: Address | TokenSymbol;
|
|
31
32
|
}): Promise<TransactionResult>;
|
|
32
33
|
declare function sendUserOperationInternal(config: RhinestoneConfig, chain: Chain, callInputs: CalldataInput[], signers?: SignerSet): Promise<UserOperationResult>;
|
|
33
34
|
declare function waitForExecution(config: RhinestoneConfig, result: TransactionResult | UserOperationResult): Promise<TransactionStatus | UserOperationReceipt>;
|
|
34
35
|
declare function getPortfolio(config: RhinestoneConfig, onTestnets: boolean): Promise<import("../orchestrator/index.js").Portfolio>;
|
|
35
|
-
declare function getIntentStatus(authProvider: AuthProvider, endpointUrl: string | undefined, intentId: string, headers?: Record<string, string>): Promise<TransactionStatus
|
|
36
|
-
status: IntentOpStatus['status'];
|
|
37
|
-
}>;
|
|
36
|
+
declare function getIntentStatus(authProvider: AuthProvider, endpointUrl: string | undefined, intentId: string, headers?: Record<string, string>): Promise<TransactionStatus>;
|
|
38
37
|
declare function splitIntents(authProvider: AuthProvider, endpointUrl: string | undefined, input: SplitIntentsInput, headers?: Record<string, string>): Promise<import("../orchestrator/index.js").SplitIntentsResult>;
|
|
39
|
-
export { sendTransactionInternal, sendUserOperation, sendUserOperationInternal, waitForExecution, getPortfolio, getIntentStatus, splitIntents, isExecutionError, ExecutionError, IntentFailedError,
|
|
38
|
+
export { sendTransactionInternal, sendUserOperation, sendUserOperationInternal, waitForExecution, getPortfolio, getIntentStatus, splitIntents, isExecutionError, ExecutionError, IntentFailedError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, };
|
|
40
39
|
export type { TransactionStatus, TransactionResult, UserOperationResult };
|
|
41
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAsB,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../execution/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,13 @@ import { createPublicClient } from 'viem';
|
|
|
2
2
|
import { deploy, getAddress } from '../accounts/index.js';
|
|
3
3
|
import { createTransport, getBundlerClient } from '../accounts/utils.js';
|
|
4
4
|
import { createAuthProvider } from '../auth/provider.js';
|
|
5
|
-
import { getOrchestrator, INTENT_STATUS_COMPLETED, INTENT_STATUS_FAILED,
|
|
5
|
+
import { getOrchestrator, INTENT_STATUS_COMPLETED, INTENT_STATUS_FAILED, isRateLimited, isRetryable, } from '../orchestrator/index.js';
|
|
6
6
|
import { getChainById, getSupportedChainIds, isTestnet, } from '../orchestrator/registry.js';
|
|
7
|
-
import { ExecutionError, IntentFailedError,
|
|
7
|
+
import { ExecutionError, IntentFailedError, InvalidSourceCallsError, isExecutionError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, } from './error.js';
|
|
8
8
|
import { getTargetExecutionSignature, getTokenRequests, getValidatorAccount, parseCalls, prepareTransactionAsIntent, resolveCallInputs, signAuthorizationsInternal, signIntent, submitIntentInternal, } from './utils.js';
|
|
9
9
|
const POLL_INITIAL_MS = 500;
|
|
10
10
|
const POLL_SLOW_AFTER_MS = 15000;
|
|
11
11
|
const POLL_SLOW_MS = 2000;
|
|
12
|
-
const POLL_MAX_WAIT_MS = 210000;
|
|
13
12
|
const POLL_ERROR_BACKOFF_MS = 1000;
|
|
14
13
|
const POLL_ERROR_BACKOFF_MAX_MS = 10000;
|
|
15
14
|
async function sendUserOperation(config, transaction) {
|
|
@@ -26,7 +25,7 @@ async function sendTransactionInternal(config, sourceChains, targetChain, option
|
|
|
26
25
|
throw new SignerNotSupportedError();
|
|
27
26
|
}
|
|
28
27
|
else {
|
|
29
|
-
return await sendTransactionAsIntent(config, sourceChains, targetChain, resolvedCalls, options.gasLimit, tokenRequests, options.recipient, options.signers, options.sponsored, options.eip7702InitSignature, options.settlementLayers, options.sourceAssets, options.feeAsset);
|
|
28
|
+
return await sendTransactionAsIntent(config, sourceChains, targetChain, resolvedCalls, options.gasLimit, tokenRequests, options.recipient, options.signers, options.sponsored, options.eip7702InitSignature, options.settlementLayers, options.sourceAssets, options.feeAsset, options.sourceCalls);
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
async function sendUserOperationInternal(config, chain, callInputs, signers) {
|
|
@@ -52,8 +51,8 @@ async function sendUserOperationInternal(config, chain, callInputs, signers) {
|
|
|
52
51
|
chain: chain.id,
|
|
53
52
|
};
|
|
54
53
|
}
|
|
55
|
-
async function sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipient, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset) {
|
|
56
|
-
const prepared = await prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipient, sponsored ?? false, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, undefined, undefined, signers);
|
|
54
|
+
async function sendTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipient, signers, sponsored, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, sourceCalls) {
|
|
55
|
+
const prepared = await prepareTransactionAsIntent(config, sourceChains, targetChain, callInputs, gasLimit, tokenRequests, recipient, sponsored ?? false, eip7702InitSignature, settlementLayers, sourceAssets, feeAsset, undefined, undefined, signers, sourceCalls);
|
|
57
56
|
if (!prepared) {
|
|
58
57
|
throw new OrderPathRequiredForIntentsError();
|
|
59
58
|
}
|
|
@@ -71,10 +70,10 @@ async function sendTransactionAsIntent(config, sourceChains, targetChain, callIn
|
|
|
71
70
|
return await submitIntentInternal(config, sourceChains, targetChain, quote, originSignatures, destinationSignature, targetExecutionSignature, authorizations, false, intentInput);
|
|
72
71
|
}
|
|
73
72
|
async function waitForExecution(config, result) {
|
|
74
|
-
|
|
73
|
+
/** Terminal states: stop polling once the intent is COMPLETED or FAILED. */
|
|
74
|
+
const terminalStatuses = new Set([
|
|
75
75
|
INTENT_STATUS_FAILED,
|
|
76
76
|
INTENT_STATUS_COMPLETED,
|
|
77
|
-
INTENT_STATUS_FILLED,
|
|
78
77
|
]);
|
|
79
78
|
switch (result.type) {
|
|
80
79
|
case 'intent': {
|
|
@@ -82,15 +81,8 @@ async function waitForExecution(config, result) {
|
|
|
82
81
|
const startTs = Date.now();
|
|
83
82
|
let nextDelayMs = POLL_INITIAL_MS;
|
|
84
83
|
let errorBackoffMs = POLL_ERROR_BACKOFF_MS;
|
|
85
|
-
while (intentStatus === null ||
|
|
86
|
-
|
|
87
|
-
if (now - startTs >= POLL_MAX_WAIT_MS) {
|
|
88
|
-
throw new IntentStatusTimeoutError({
|
|
89
|
-
context: {
|
|
90
|
-
intentId: result.id,
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
}
|
|
84
|
+
while (intentStatus === null ||
|
|
85
|
+
!terminalStatuses.has(intentStatus.status)) {
|
|
94
86
|
const orchestrator = getOrchestrator(config._authProvider ?? createAuthProvider(config), config.endpointUrl, config.headers);
|
|
95
87
|
try {
|
|
96
88
|
intentStatus = await orchestrator.getIntent(result.id);
|
|
@@ -136,18 +128,15 @@ async function waitForExecution(config, result) {
|
|
|
136
128
|
throw new IntentFailedError({
|
|
137
129
|
context: {
|
|
138
130
|
intentId: result.id,
|
|
131
|
+
operations: intentStatus.operations,
|
|
139
132
|
},
|
|
140
133
|
});
|
|
141
134
|
}
|
|
142
135
|
return {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
claims: intentStatus.claims.map((claim) => ({
|
|
148
|
-
hash: claim.claimTransactionHash,
|
|
149
|
-
chainId: claim.chainId,
|
|
150
|
-
})),
|
|
136
|
+
traceId: intentStatus.traceId,
|
|
137
|
+
status: intentStatus.status,
|
|
138
|
+
accountAddress: intentStatus.accountAddress,
|
|
139
|
+
operations: intentStatus.operations,
|
|
151
140
|
};
|
|
152
141
|
}
|
|
153
142
|
case 'userop': {
|
|
@@ -182,15 +171,10 @@ async function getIntentStatus(authProvider, endpointUrl, intentId, headers) {
|
|
|
182
171
|
const orchestrator = getOrchestrator(authProvider, endpointUrl, headers);
|
|
183
172
|
const internalStatus = await orchestrator.getIntent(intentId);
|
|
184
173
|
return {
|
|
174
|
+
traceId: internalStatus.traceId,
|
|
185
175
|
status: internalStatus.status,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
chainId: internalStatus.destinationChainId,
|
|
189
|
-
},
|
|
190
|
-
claims: internalStatus.claims.map((claim) => ({
|
|
191
|
-
hash: claim.claimTransactionHash,
|
|
192
|
-
chainId: claim.chainId,
|
|
193
|
-
})),
|
|
176
|
+
accountAddress: internalStatus.accountAddress,
|
|
177
|
+
operations: internalStatus.operations,
|
|
194
178
|
};
|
|
195
179
|
}
|
|
196
180
|
async function splitIntents(authProvider, endpointUrl, input, headers) {
|
|
@@ -199,4 +183,4 @@ async function splitIntents(authProvider, endpointUrl, input, headers) {
|
|
|
199
183
|
}
|
|
200
184
|
export { sendTransactionInternal, sendUserOperation, sendUserOperationInternal, waitForExecution, getPortfolio, getIntentStatus, splitIntents,
|
|
201
185
|
// Errors
|
|
202
|
-
isExecutionError, ExecutionError, IntentFailedError,
|
|
186
|
+
isExecutionError, ExecutionError, IntentFailedError, InvalidSourceCallsError, OrderPathRequiredForIntentsError, QuoteNotInPreparedTransactionError, SessionChainRequiredError, SignerNotSupportedError, };
|