@dev.sail.money/sailor 1.3.0-221 → 1.3.0-223
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/AGENTS.md +6 -6
- package/README.md +16 -10
- package/package.json +1 -1
- package/packages/cli/dist/index.cjs +735 -317
- package/packages/cli/dist/server.cjs +166 -123
- package/packages/sdk/README.md +1 -1
- package/packages/sdk/dist/abis/SailKernel.d.ts +42 -0
- package/packages/sdk/dist/abis/SailKernel.d.ts.map +1 -1
- package/packages/sdk/dist/abis/SailKernel.js +34 -0
- package/packages/sdk/dist/abis/SailKernel.js.map +1 -1
- package/packages/sdk/dist/chains.d.ts +0 -7
- package/packages/sdk/dist/chains.d.ts.map +1 -1
- package/packages/sdk/dist/chains.js +81 -32
- package/packages/sdk/dist/chains.js.map +1 -1
- package/packages/sdk/dist/client.d.ts +1 -1
- package/packages/sdk/dist/client.d.ts.map +1 -1
- package/packages/sdk/dist/client.js +137 -16
- package/packages/sdk/dist/client.js.map +1 -1
- package/packages/sdk/dist/deployments.d.ts +6 -4
- package/packages/sdk/dist/deployments.d.ts.map +1 -1
- package/packages/sdk/dist/deployments.js +120 -118
- package/packages/sdk/dist/deployments.js.map +1 -1
- package/packages/sdk/dist/eip712.d.ts +84 -0
- package/packages/sdk/dist/eip712.d.ts.map +1 -1
- package/packages/sdk/dist/eip712.js +148 -0
- package/packages/sdk/dist/eip712.js.map +1 -1
- package/packages/sdk/dist/index.d.ts +2 -2
- package/packages/sdk/dist/index.d.ts.map +1 -1
- package/packages/sdk/dist/index.js +2 -2
- package/packages/sdk/dist/index.js.map +1 -1
- package/packages/sdk/dist/intelligence.d.ts +1 -1
- package/packages/sdk/dist/intelligence.js +1 -1
- package/packages/sdk/dist/safe.d.ts +49 -0
- package/packages/sdk/dist/safe.d.ts.map +1 -1
- package/packages/sdk/dist/safe.js +74 -0
- package/packages/sdk/dist/safe.js.map +1 -1
- package/packages/sdk/package.json +4 -0
- package/packages/ui/dist/assets/{add-BX5reKtK.js → add-DLYFRKuI.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-IZ3PlVF-.js → all-wallets-Dz5SZj5e.js} +1 -1
- package/packages/ui/dist/assets/{app-store-ARgRdMdF.js → app-store-DCYRFDwY.js} +1 -1
- package/packages/ui/dist/assets/{apple-VCaqsI9w.js → apple-BcAi8XTW.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-Cwptw8fW.js → arrow-bottom-Bik1zp_1.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-h5vFiZ2I.js → arrow-bottom-circle-BSA6CcrO.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-bM1TRcV9.js → arrow-left-07r0E796.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-BYd_N4Jr.js → arrow-right-CW1Ka1mT.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-CLUnwVE2.js → arrow-top-BoAo8_T9.js} +1 -1
- package/packages/ui/dist/assets/{bank-6c28yOM9.js → bank-Bpa5anN0.js} +1 -1
- package/packages/ui/dist/assets/{basic-CJnbTfSd.js → basic-CbzdfUfs.js} +1 -1
- package/packages/ui/dist/assets/{browser-CDKlxM3D.js → browser-B4YQX2Tn.js} +1 -1
- package/packages/ui/dist/assets/{card-DQdED02q.js → card-CF8oS4fb.js} +1 -1
- package/packages/ui/dist/assets/{ccip-BL7RIPfY.js → ccip-DssR-Uhz.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-JoRNVoFV.js → checkmark-BihQ9h3G.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-B6bGHVIs.js → checkmark-bold-c5EPMyPR.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-BMCelIEu.js → chevron-bottom-Lijs68sl.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-ryPLhHCc.js → chevron-left-Cj7sg_Iw.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-CdDNRv7f.js → chevron-right-CqD-gBdk.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-BxWIjjGk.js → chevron-top-DDShxMva.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-D-fiJ9qJ.js → chrome-store-DSBNmkPw.js} +1 -1
- package/packages/ui/dist/assets/{clock-xCPkzwjj.js → clock-CjlvcnX9.js} +1 -1
- package/packages/ui/dist/assets/{close-BkqmPpWG.js → close-QhgNd0Xc.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-PIvN9oq_.js → coinPlaceholder-C7TUN8V-.js} +1 -1
- package/packages/ui/dist/assets/{compass-CW5kWcxW.js → compass-DrE1sLwt.js} +1 -1
- package/packages/ui/dist/assets/{copy-DUZlAQJJ.js → copy-CFx1aksp.js} +1 -1
- package/packages/ui/dist/assets/{core-von2c1sc.js → core-CcaMuBIR.js} +3 -3
- package/packages/ui/dist/assets/cursor-DXDOwzFz.js +3 -0
- package/packages/ui/dist/assets/{cursor-transparent-BUAMB0G1.js → cursor-transparent-DxBdWZi8.js} +1 -1
- package/packages/ui/dist/assets/{desktop-BxdlwV8P.js → desktop-B-ATHCGS.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-GelNh3mn.js → disconnect-Bvu0LqoD.js} +1 -1
- package/packages/ui/dist/assets/{discord-N0jnxkzC.js → discord-DrRGYSx6.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-B41u7wF4.js → etherscan-BaQiGNrH.js} +1 -1
- package/packages/ui/dist/assets/{events-C9icG2YB.js → events-BYNiBrPy.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-BWJC56FC.js → exclamation-triangle-B3yAGM1Q.js} +1 -1
- package/packages/ui/dist/assets/{extension-G6I6oogw.js → extension-CYA4bLg-.js} +1 -1
- package/packages/ui/dist/assets/{external-link-BPaGQf4a.js → external-link-D5PwFm0_.js} +1 -1
- package/packages/ui/dist/assets/{facebook-47twy32b.js → facebook-CEwgL1NC.js} +1 -1
- package/packages/ui/dist/assets/{fallback-BTfJeGjh.js → fallback-B9sp077f.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-DYqnqCqs.js → farcaster-Ak6D7Lp_.js} +1 -1
- package/packages/ui/dist/assets/{filters-dF6xeJnE.js → filters-CJduAQRB.js} +1 -1
- package/packages/ui/dist/assets/{github-DbW4Ihz2.js → github-PLN2sD5Q.js} +1 -1
- package/packages/ui/dist/assets/{google-TKm7G8LF.js → google-BRRn9hKY.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-CY3qTmsG.js → help-circle-BnvqUg2y.js} +1 -1
- package/packages/ui/dist/assets/{id-JpHW4q14.js → id-CJlrhYxX.js} +1 -1
- package/packages/ui/dist/assets/{image-Dip2fG98.js → image-CPduqsY3.js} +1 -1
- package/packages/ui/dist/assets/index-BGmLv6wn.js +1789 -0
- package/packages/ui/dist/assets/{index-C4_cA5XW.js → index-Bp21-hUb.js} +1 -1
- package/packages/ui/dist/assets/{index-CaDN0gL4.js → index-C0GUKQXc.js} +1 -1
- package/packages/ui/dist/assets/{index-BGJ_8fMk.js → index-D-OgqpEg.js} +1 -1
- package/packages/ui/dist/assets/{index-q0mGElxZ.js → index-Dyr25y7I.js} +3 -3
- package/packages/ui/dist/assets/{index-Bq3PAopp.js → index-vEKHRoHD.js} +1 -1
- package/packages/ui/dist/assets/{index.es-BaCKS_tW.js → index.es-Dks2goS7.js} +4 -4
- package/packages/ui/dist/assets/{info-B1enFsqh.js → info-CGNHPKFR.js} +1 -1
- package/packages/ui/dist/assets/{info-circle-D4j3FISs.js → info-circle-D8mpP6LN.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-DZbKr-vS.js → lightbulb-BWGaqAI3.js} +1 -1
- package/packages/ui/dist/assets/{mail-D-TO_uVQ.js → mail-BcfubTQ2.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-DljW3QD1.js → metamask-sdk-B1i24ALe.js} +1 -1
- package/packages/ui/dist/assets/{mobile-Bkmwzav2.js → mobile-CglLmMeZ.js} +1 -1
- package/packages/ui/dist/assets/{more-D1_I_jiB.js → more-OgWHs8eZ.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-DUaFjoXh.js → network-placeholder-BUhDcMI_.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-Cc0iUryh.js → nftPlaceholder-wxKy5Q-x.js} +1 -1
- package/packages/ui/dist/assets/{off-BvX71sse.js → off-DxJM1N51.js} +1 -1
- package/packages/ui/dist/assets/{parseSignature-BAS-wKoj.js → parseSignature-D838ybCF.js} +1 -1
- package/packages/ui/dist/assets/{play-store-XzLbtbTd.js → play-store-jm12tVwP.js} +1 -1
- package/packages/ui/dist/assets/{plus-B77_RmYR.js → plus--zRIsRuA.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-BNeIhB1d.js → qr-code-DhBJbVz8.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-B9sX-yty.js → recycle-horizontal-1zQ5U9as.js} +1 -1
- package/packages/ui/dist/assets/{refresh-BWRygnjm.js → refresh-mqmMmKBD.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-DCAEsGFm.js → reown-logo-RZHJRVcN.js} +1 -1
- package/packages/ui/dist/assets/{search-ZXIqrawS.js → search-Bd45qI2U.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-Doz05h4g.js → secp256k1-Uhtu7xK-.js} +1 -1
- package/packages/ui/dist/assets/{send-BQcO0jNC.js → send-4lxASBOR.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-4yZEzz2K.js → swapHorizontal-Cj2JRLJS.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-DxBKu3sl.js → swapHorizontalBold-Byv9z2H0.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-DAQYJ2JK.js → swapHorizontalMedium-BadlZnn_.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-CUlZzFJ6.js → swapHorizontalRoundedBold-Dl20h9DP.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-CjWHAaDM.js → swapVertical-DoFYn8T-.js} +1 -1
- package/packages/ui/dist/assets/{telegram-JBeabiJP.js → telegram-DKM_HViT.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-D3R8OjSx.js → three-dots-CBLRiosA.js} +1 -1
- package/packages/ui/dist/assets/{twitch-1f9z7xVO.js → twitch-Dj3xBpb1.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-BW7n2xnp.js → twitterIcon-D-wqABHa.js} +1 -1
- package/packages/ui/dist/assets/{verify-Cs5owI38.js → verify-BYs2pfC2.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-Ci5sx5qS.js → verify-filled-zJG9VG5w.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-DnWtss8u.js → w3m-modal-sbOUP95Y.js} +1 -1
- package/packages/ui/dist/assets/{wallet-MaGNqaW-.js → wallet-CMl9HrCE.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-kTOy12_L.js → wallet-placeholder-BneM1wji.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-CyuP92jg.js → walletconnect-DVz3u0az.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-BImUCdpG.js → warning-circle-B_P5OBud.js} +1 -1
- package/packages/ui/dist/assets/{x-II45JHpV.js → x-CU4y53M6.js} +1 -1
- package/packages/ui/dist/index.html +1 -1
- package/templates/default/.agents/skills/sail-mandates/SKILL.md +1 -1
- package/templates/default/.agents/skills/sail-onboarding/SKILL.md +1 -1
- package/packages/ui/dist/assets/cursor-BzRVY7BD.js +0 -3
- package/packages/ui/dist/assets/index-DLElIcBr.js +0 -1789
|
@@ -35211,16 +35211,18 @@ var {
|
|
|
35211
35211
|
} = import_index.default;
|
|
35212
35212
|
|
|
35213
35213
|
// ../sdk/dist/chains.js
|
|
35214
|
+
var CREATE2_KERNEL = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
|
|
35215
|
+
var CREATE2_MANDATE_FACTORY = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
|
|
35216
|
+
var CREATE2_GOVERNANCE = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
|
|
35214
35217
|
var chains = {
|
|
35215
35218
|
// Ethereum mainnet
|
|
35216
35219
|
1: {
|
|
35217
35220
|
chainId: 1,
|
|
35218
35221
|
name: "Ethereum",
|
|
35219
35222
|
rpcEnvVar: "ETH_MAINNET_RPC_URL",
|
|
35220
|
-
|
|
35221
|
-
|
|
35222
|
-
|
|
35223
|
-
governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
|
|
35223
|
+
kernel: CREATE2_KERNEL,
|
|
35224
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35225
|
+
governance: CREATE2_GOVERNANCE,
|
|
35224
35226
|
dispatchModel: "selective",
|
|
35225
35227
|
protocols: {}
|
|
35226
35228
|
},
|
|
@@ -35229,11 +35231,9 @@ var chains = {
|
|
|
35229
35231
|
chainId: 8453,
|
|
35230
35232
|
name: "Base",
|
|
35231
35233
|
rpcEnvVar: "BASE_RPC_URL",
|
|
35232
|
-
|
|
35233
|
-
|
|
35234
|
-
|
|
35235
|
-
mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
|
|
35236
|
-
governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
|
|
35234
|
+
kernel: CREATE2_KERNEL,
|
|
35235
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35236
|
+
governance: CREATE2_GOVERNANCE,
|
|
35237
35237
|
dispatchModel: "selective",
|
|
35238
35238
|
protocols: {}
|
|
35239
35239
|
},
|
|
@@ -35242,11 +35242,20 @@ var chains = {
|
|
|
35242
35242
|
chainId: 42161,
|
|
35243
35243
|
name: "Arbitrum",
|
|
35244
35244
|
rpcEnvVar: "ARBITRUM_RPC_URL",
|
|
35245
|
-
|
|
35246
|
-
|
|
35247
|
-
|
|
35248
|
-
|
|
35249
|
-
|
|
35245
|
+
kernel: CREATE2_KERNEL,
|
|
35246
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35247
|
+
governance: CREATE2_GOVERNANCE,
|
|
35248
|
+
dispatchModel: "selective",
|
|
35249
|
+
protocols: {}
|
|
35250
|
+
},
|
|
35251
|
+
// Optimism mainnet
|
|
35252
|
+
10: {
|
|
35253
|
+
chainId: 10,
|
|
35254
|
+
name: "Optimism",
|
|
35255
|
+
rpcEnvVar: "OPTIMISM_RPC_URL",
|
|
35256
|
+
kernel: CREATE2_KERNEL,
|
|
35257
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35258
|
+
governance: CREATE2_GOVERNANCE,
|
|
35250
35259
|
dispatchModel: "selective",
|
|
35251
35260
|
protocols: {}
|
|
35252
35261
|
},
|
|
@@ -35255,11 +35264,53 @@ var chains = {
|
|
|
35255
35264
|
chainId: 130,
|
|
35256
35265
|
name: "Unichain",
|
|
35257
35266
|
rpcEnvVar: "UNICHAIN_RPC_URL",
|
|
35258
|
-
|
|
35259
|
-
|
|
35260
|
-
|
|
35261
|
-
|
|
35262
|
-
|
|
35267
|
+
kernel: CREATE2_KERNEL,
|
|
35268
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35269
|
+
governance: CREATE2_GOVERNANCE,
|
|
35270
|
+
dispatchModel: "selective",
|
|
35271
|
+
protocols: {}
|
|
35272
|
+
},
|
|
35273
|
+
// BSC mainnet
|
|
35274
|
+
56: {
|
|
35275
|
+
chainId: 56,
|
|
35276
|
+
name: "BSC",
|
|
35277
|
+
rpcEnvVar: "BSC_RPC_URL",
|
|
35278
|
+
kernel: CREATE2_KERNEL,
|
|
35279
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35280
|
+
governance: CREATE2_GOVERNANCE,
|
|
35281
|
+
dispatchModel: "selective",
|
|
35282
|
+
protocols: {}
|
|
35283
|
+
},
|
|
35284
|
+
// World Chain mainnet
|
|
35285
|
+
480: {
|
|
35286
|
+
chainId: 480,
|
|
35287
|
+
name: "World Chain",
|
|
35288
|
+
rpcEnvVar: "WORLD_RPC_URL",
|
|
35289
|
+
kernel: CREATE2_KERNEL,
|
|
35290
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35291
|
+
governance: CREATE2_GOVERNANCE,
|
|
35292
|
+
dispatchModel: "selective",
|
|
35293
|
+
protocols: {}
|
|
35294
|
+
},
|
|
35295
|
+
// HyperEVM mainnet
|
|
35296
|
+
999: {
|
|
35297
|
+
chainId: 999,
|
|
35298
|
+
name: "HyperEVM",
|
|
35299
|
+
rpcEnvVar: "HYPEREVM_RPC_URL",
|
|
35300
|
+
kernel: CREATE2_KERNEL,
|
|
35301
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35302
|
+
governance: CREATE2_GOVERNANCE,
|
|
35303
|
+
dispatchModel: "selective",
|
|
35304
|
+
protocols: {}
|
|
35305
|
+
},
|
|
35306
|
+
// MegaETH mainnet
|
|
35307
|
+
4326: {
|
|
35308
|
+
chainId: 4326,
|
|
35309
|
+
name: "MegaETH",
|
|
35310
|
+
rpcEnvVar: "MEGAETH_RPC_URL",
|
|
35311
|
+
kernel: CREATE2_KERNEL,
|
|
35312
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35313
|
+
governance: CREATE2_GOVERNANCE,
|
|
35263
35314
|
dispatchModel: "selective",
|
|
35264
35315
|
protocols: {}
|
|
35265
35316
|
},
|
|
@@ -35268,11 +35319,9 @@ var chains = {
|
|
|
35268
35319
|
chainId: 84532,
|
|
35269
35320
|
name: "Base Sepolia",
|
|
35270
35321
|
rpcEnvVar: "BASE_SEPOLIA_RPC_URL",
|
|
35271
|
-
|
|
35272
|
-
|
|
35273
|
-
|
|
35274
|
-
mandateFactory: "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2",
|
|
35275
|
-
governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
|
|
35322
|
+
kernel: CREATE2_KERNEL,
|
|
35323
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35324
|
+
governance: CREATE2_GOVERNANCE,
|
|
35276
35325
|
dispatchModel: "selective",
|
|
35277
35326
|
protocols: {}
|
|
35278
35327
|
},
|
|
@@ -35281,10 +35330,9 @@ var chains = {
|
|
|
35281
35330
|
chainId: 11155111,
|
|
35282
35331
|
name: "Eth Sepolia",
|
|
35283
35332
|
rpcEnvVar: "SEPOLIA_RPC_URL",
|
|
35284
|
-
|
|
35285
|
-
|
|
35286
|
-
|
|
35287
|
-
governance: "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC",
|
|
35333
|
+
kernel: CREATE2_KERNEL,
|
|
35334
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35335
|
+
governance: CREATE2_GOVERNANCE,
|
|
35288
35336
|
dispatchModel: "selective",
|
|
35289
35337
|
protocols: {}
|
|
35290
35338
|
}
|
|
@@ -35292,7 +35340,7 @@ var chains = {
|
|
|
35292
35340
|
function getChain(chainId) {
|
|
35293
35341
|
const config = chains[chainId];
|
|
35294
35342
|
if (!config) {
|
|
35295
|
-
throw new Error(`Chain ${chainId} is not supported. Supported chains: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 130 (Unichain), 84532 (Base Sepolia), 11155111 (Eth Sepolia).`);
|
|
35343
|
+
throw new Error(`Chain ${chainId} is not supported. Supported chains: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 10 (Optimism), 130 (Unichain), 56 (BSC), 480 (World Chain), 999 (HyperEVM), 4326 (MegaETH), 84532 (Base Sepolia), 11155111 (Eth Sepolia).`);
|
|
35296
35344
|
}
|
|
35297
35345
|
return config;
|
|
35298
35346
|
}
|
|
@@ -35319,6 +35367,10 @@ var SailKernelAbi = [
|
|
|
35319
35367
|
],
|
|
35320
35368
|
outputs: [{ name: "account", type: "address" }]
|
|
35321
35369
|
},
|
|
35370
|
+
// Post-#53: two-step registration. Requires msg.sender == the Safe (trusted-proxy
|
|
35371
|
+
// codehash + trusted-singleton pin) and a Safe owner signature over the
|
|
35372
|
+
// RegisterAccount EIP-712 digest (verified via checkSignatures). Must be submitted
|
|
35373
|
+
// through the Safe's execTransaction, not the owner EOA. See buildRegisterAccountTypedData.
|
|
35322
35374
|
{
|
|
35323
35375
|
type: "function",
|
|
35324
35376
|
name: "registerAccount",
|
|
@@ -35326,7 +35378,10 @@ var SailKernelAbi = [
|
|
|
35326
35378
|
inputs: [
|
|
35327
35379
|
{ name: "permissionSigner", type: "address" },
|
|
35328
35380
|
{ name: "manager", type: "address" },
|
|
35329
|
-
{ name: "feePolicy", type: "address" }
|
|
35381
|
+
{ name: "feePolicy", type: "address" },
|
|
35382
|
+
{ name: "feeAsset", type: "address" },
|
|
35383
|
+
{ name: "deadline", type: "uint256" },
|
|
35384
|
+
{ name: "ownerSig", type: "bytes" }
|
|
35330
35385
|
],
|
|
35331
35386
|
outputs: []
|
|
35332
35387
|
},
|
|
@@ -35377,6 +35432,32 @@ var SailKernelAbi = [
|
|
|
35377
35432
|
],
|
|
35378
35433
|
outputs: []
|
|
35379
35434
|
},
|
|
35435
|
+
// ── Session kill switch ───────────────────────────────────────────────────
|
|
35436
|
+
// Suspend/resume manager dispatch rights. Both are permissionSigner-signed
|
|
35437
|
+
// (RevokeSession/ActivateSession EIP-712, nonce = signerNonces[account]) and
|
|
35438
|
+
// rotate the manager/batch nonce epochs so any pre-signed dispatch is invalidated.
|
|
35439
|
+
{
|
|
35440
|
+
type: "function",
|
|
35441
|
+
name: "revokeSession",
|
|
35442
|
+
stateMutability: "nonpayable",
|
|
35443
|
+
inputs: [
|
|
35444
|
+
{ name: "account", type: "address" },
|
|
35445
|
+
{ name: "deadline", type: "uint256" },
|
|
35446
|
+
{ name: "sig", type: "bytes" }
|
|
35447
|
+
],
|
|
35448
|
+
outputs: []
|
|
35449
|
+
},
|
|
35450
|
+
{
|
|
35451
|
+
type: "function",
|
|
35452
|
+
name: "activateSession",
|
|
35453
|
+
stateMutability: "nonpayable",
|
|
35454
|
+
inputs: [
|
|
35455
|
+
{ name: "account", type: "address" },
|
|
35456
|
+
{ name: "deadline", type: "uint256" },
|
|
35457
|
+
{ name: "sig", type: "bytes" }
|
|
35458
|
+
],
|
|
35459
|
+
outputs: []
|
|
35460
|
+
},
|
|
35380
35461
|
// ── Manager dispatch ──────────────────────────────────────────────────────
|
|
35381
35462
|
{
|
|
35382
35463
|
type: "function",
|
|
@@ -35516,6 +35597,7 @@ var SailKernelAbi = [
|
|
|
35516
35597
|
{ name: "permissionSigner", type: "address" },
|
|
35517
35598
|
{ name: "manager", type: "address" },
|
|
35518
35599
|
{ name: "feePolicy", type: "address" },
|
|
35600
|
+
{ name: "feeAsset", type: "address" },
|
|
35519
35601
|
{ name: "sessionActive", type: "bool" }
|
|
35520
35602
|
]
|
|
35521
35603
|
},
|
|
@@ -35709,148 +35791,142 @@ async function detectKernelCapabilities(publicClient, kernel, opts) {
|
|
|
35709
35791
|
}
|
|
35710
35792
|
|
|
35711
35793
|
// ../sdk/dist/deployments.js
|
|
35712
|
-
var
|
|
35713
|
-
var
|
|
35714
|
-
var CREATE2_TIMELOCK = "
|
|
35794
|
+
var CREATE2_KERNEL2 = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
|
|
35795
|
+
var CREATE2_GOVERNANCE2 = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
|
|
35796
|
+
var CREATE2_TIMELOCK = "0xC1E5F9A581D4100Aa949f80204540a33aD97A7b6";
|
|
35715
35797
|
var CREATE2_SAFE_MODULE_ENABLER = "0x7897Cb53a4be4a2eaAf46D60573C4Fd83b33fE1F";
|
|
35716
|
-
var
|
|
35717
|
-
var CREATE2_STANDARD_FEE_POLICY = "
|
|
35718
|
-
var
|
|
35798
|
+
var CREATE2_MANDATE_FACTORY2 = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
|
|
35799
|
+
var CREATE2_STANDARD_FEE_POLICY = "0x1087312447C8a2BfA15EB9cE23590E3502DBA04b";
|
|
35800
|
+
var CREATE2_DEPLOYER = "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6";
|
|
35801
|
+
var CREATE2_TREASURY = "0x7b37F85575F1568a37dBA342BC5FE6d393F0872f";
|
|
35802
|
+
var CREATE2_MAX_PERMISSION_FEE_WEI = 10000000000000000n;
|
|
35803
|
+
var CREATE2_TEMPLATES = {
|
|
35804
|
+
swap: "0x35cEEa0db96997Cc3CF3beB42FFa36A499342F7C",
|
|
35805
|
+
swapNoOracle: "0x34Ba96CbEd1f46c88A5265E645DC5fe41662b519",
|
|
35806
|
+
borrow: "0x3e2666051599223cEAb10De55C89A0842857d8AF",
|
|
35807
|
+
deposit: "0xBfB5e13a97b12Ee89d2F2b9B65eCf7e0E371911f",
|
|
35808
|
+
withdraw: "0xF5eF5dda450a130e3020d54f565E830e4a7531f8",
|
|
35809
|
+
transfer: "0xda909a1CC584fb7559Ce4A828b008B473Da095e1",
|
|
35810
|
+
approveAndCallBatch: "0x0535A4D51333484ef583103DAB1a9449756ab732"
|
|
35811
|
+
};
|
|
35812
|
+
var CREATE2_KNOWN_TEMPLATES = [
|
|
35813
|
+
{ kind: "SwapPermission", address: CREATE2_TEMPLATES.swap, label: "Swap" },
|
|
35814
|
+
{
|
|
35815
|
+
kind: "SwapPermissionNoOracle",
|
|
35816
|
+
address: CREATE2_TEMPLATES.swapNoOracle,
|
|
35817
|
+
label: "Swap (no oracle)"
|
|
35818
|
+
},
|
|
35819
|
+
{ kind: "BorrowPermission", address: CREATE2_TEMPLATES.borrow, label: "Borrow" },
|
|
35820
|
+
{ kind: "DepositPermission", address: CREATE2_TEMPLATES.deposit, label: "Deposit" },
|
|
35821
|
+
{ kind: "WithdrawPermission", address: CREATE2_TEMPLATES.withdraw, label: "Withdraw" },
|
|
35822
|
+
{ kind: "TransferPermission", address: CREATE2_TEMPLATES.transfer, label: "Transfer" },
|
|
35823
|
+
{
|
|
35824
|
+
kind: "ApproveAndCallBatchPermission",
|
|
35825
|
+
address: CREATE2_TEMPLATES.approveAndCallBatch,
|
|
35826
|
+
label: "Approve + call batch"
|
|
35827
|
+
}
|
|
35828
|
+
];
|
|
35829
|
+
var COMMON_DEPLOYMENT_FIELDS = {
|
|
35830
|
+
deployer: CREATE2_DEPLOYER,
|
|
35831
|
+
governance: CREATE2_GOVERNANCE2,
|
|
35832
|
+
timelock: CREATE2_TIMELOCK,
|
|
35833
|
+
kernel: CREATE2_KERNEL2,
|
|
35834
|
+
mandateFactory: CREATE2_MANDATE_FACTORY2,
|
|
35835
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
35836
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
35837
|
+
treasury: CREATE2_TREASURY,
|
|
35838
|
+
maxPermissionFeeWei: CREATE2_MAX_PERMISSION_FEE_WEI,
|
|
35839
|
+
initialBaseFee: 0n,
|
|
35840
|
+
initialComplexityRate: 0n,
|
|
35841
|
+
dispatchModel: "selective",
|
|
35842
|
+
// The seven launch templates are SHARED multi-tenant ConfigurablePermission instances
|
|
35843
|
+
// (registered by address, configured via configure()), NOT EIP-1167 clone logic. They
|
|
35844
|
+
// belong in knownTemplates only. standaloneTemplates is the clone-implementation registry
|
|
35845
|
+
// (the `impl` arg to MandateFactory.deployAndAttach) — empty until standalone clones deploy.
|
|
35846
|
+
// Populating it with shared templates mislabels them as unaudited community clones in
|
|
35847
|
+
// `sailor mandate templates` and makes capabilities advertise them as deployAndAttach-able.
|
|
35848
|
+
standaloneTemplates: {}
|
|
35849
|
+
};
|
|
35850
|
+
function knownTemplatesFor(chainId) {
|
|
35851
|
+
return CREATE2_KNOWN_TEMPLATES.map((t) => ({ ...t, chainId }));
|
|
35852
|
+
}
|
|
35719
35853
|
var sailDeployments = {
|
|
35720
35854
|
// ── Ethereum mainnet ─────────────────────────────────────────────────────────
|
|
35721
35855
|
1: {
|
|
35722
|
-
|
|
35723
|
-
// allowlistBootstrapped=true (genesis bootstrap), zero fees, 48h timelock.
|
|
35856
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35724
35857
|
chainId: 1,
|
|
35725
|
-
blockNumber:
|
|
35726
|
-
|
|
35727
|
-
governance: CREATE2_GOVERNANCE,
|
|
35728
|
-
timelock: CREATE2_TIMELOCK,
|
|
35729
|
-
kernel: CREATE2_KERNEL,
|
|
35730
|
-
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35731
|
-
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
35732
|
-
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
35733
|
-
treasury: CREATE2_TREASURY,
|
|
35734
|
-
maxPermissionFeeWei: 1000000000000000n,
|
|
35735
|
-
initialBaseFee: 0n,
|
|
35736
|
-
initialComplexityRate: 0n,
|
|
35737
|
-
dispatchModel: "selective",
|
|
35738
|
-
knownTemplates: [],
|
|
35739
|
-
standaloneTemplates: {}
|
|
35858
|
+
blockNumber: 25432741,
|
|
35859
|
+
knownTemplates: knownTemplatesFor(1)
|
|
35740
35860
|
},
|
|
35741
35861
|
// ── Base mainnet ─────────────────────────────────────────────────────────────
|
|
35742
35862
|
8453: {
|
|
35743
|
-
|
|
35744
|
-
// 0x6319d3dfDDe3804ba93D65752b00c52bFb05a1ab (SAIL-405 redeploy).
|
|
35745
|
-
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
35863
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35746
35864
|
chainId: 8453,
|
|
35747
|
-
blockNumber:
|
|
35748
|
-
|
|
35749
|
-
governance: CREATE2_GOVERNANCE,
|
|
35750
|
-
timelock: CREATE2_TIMELOCK,
|
|
35751
|
-
kernel: CREATE2_KERNEL,
|
|
35752
|
-
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35753
|
-
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
35754
|
-
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
35755
|
-
treasury: CREATE2_TREASURY,
|
|
35756
|
-
maxPermissionFeeWei: 1000000000000000n,
|
|
35757
|
-
initialBaseFee: 0n,
|
|
35758
|
-
initialComplexityRate: 0n,
|
|
35759
|
-
dispatchModel: "selective",
|
|
35760
|
-
knownTemplates: [],
|
|
35761
|
-
standaloneTemplates: {}
|
|
35865
|
+
blockNumber: 48029413,
|
|
35866
|
+
knownTemplates: knownTemplatesFor(8453)
|
|
35762
35867
|
},
|
|
35763
35868
|
// ── Arbitrum mainnet ─────────────────────────────────────────────────────────
|
|
35764
35869
|
42161: {
|
|
35765
|
-
|
|
35766
|
-
// 0x2716B12832DED0EF5688519c5Fe069EFc0374E02 (SAIL-405 redeploy).
|
|
35767
|
-
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
35870
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35768
35871
|
chainId: 42161,
|
|
35769
|
-
blockNumber:
|
|
35770
|
-
|
|
35771
|
-
|
|
35772
|
-
|
|
35773
|
-
|
|
35774
|
-
|
|
35775
|
-
|
|
35776
|
-
|
|
35777
|
-
|
|
35778
|
-
maxPermissionFeeWei: 1000000000000000n,
|
|
35779
|
-
initialBaseFee: 0n,
|
|
35780
|
-
initialComplexityRate: 0n,
|
|
35781
|
-
dispatchModel: "selective",
|
|
35782
|
-
knownTemplates: [],
|
|
35783
|
-
standaloneTemplates: {}
|
|
35872
|
+
blockNumber: 25432669,
|
|
35873
|
+
knownTemplates: knownTemplatesFor(42161)
|
|
35874
|
+
},
|
|
35875
|
+
// ── Optimism mainnet ─────────────────────────────────────────────────────────
|
|
35876
|
+
10: {
|
|
35877
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35878
|
+
chainId: 10,
|
|
35879
|
+
blockNumber: 153625159,
|
|
35880
|
+
knownTemplates: knownTemplatesFor(10)
|
|
35784
35881
|
},
|
|
35785
35882
|
// ── Unichain mainnet ─────────────────────────────────────────────────────────
|
|
35786
35883
|
130: {
|
|
35787
|
-
|
|
35788
|
-
// 0xD985029960a9B7C2E7E38e102C448b8b8539B156 (SAIL-406 deploy).
|
|
35789
|
-
// NOTE: knownTemplates and standaloneTemplates from SAIL-406 were deployed
|
|
35790
|
-
// against the old kernel 0xD985029... and are now invalid. They must be
|
|
35791
|
-
// redeployed against the new kernel 0x02ABC1... and re-populated here.
|
|
35884
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35792
35885
|
chainId: 130,
|
|
35793
|
-
blockNumber:
|
|
35794
|
-
|
|
35795
|
-
|
|
35796
|
-
|
|
35797
|
-
|
|
35798
|
-
|
|
35799
|
-
|
|
35800
|
-
|
|
35801
|
-
|
|
35802
|
-
|
|
35803
|
-
|
|
35804
|
-
|
|
35805
|
-
|
|
35806
|
-
|
|
35807
|
-
|
|
35808
|
-
|
|
35809
|
-
|
|
35810
|
-
|
|
35886
|
+
blockNumber: 52100873,
|
|
35887
|
+
knownTemplates: knownTemplatesFor(130)
|
|
35888
|
+
},
|
|
35889
|
+
// ── BSC mainnet ──────────────────────────────────────────────────────────────
|
|
35890
|
+
56: {
|
|
35891
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35892
|
+
chainId: 56,
|
|
35893
|
+
blockNumber: 107312662,
|
|
35894
|
+
knownTemplates: knownTemplatesFor(56)
|
|
35895
|
+
},
|
|
35896
|
+
// ── World Chain mainnet ──────────────────────────────────────────────────────
|
|
35897
|
+
480: {
|
|
35898
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35899
|
+
chainId: 480,
|
|
35900
|
+
blockNumber: 31756901,
|
|
35901
|
+
knownTemplates: knownTemplatesFor(480)
|
|
35902
|
+
},
|
|
35903
|
+
// ── HyperEVM mainnet ─────────────────────────────────────────────────────────
|
|
35904
|
+
999: {
|
|
35905
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35906
|
+
chainId: 999,
|
|
35907
|
+
blockNumber: 39238629,
|
|
35908
|
+
knownTemplates: knownTemplatesFor(999)
|
|
35909
|
+
},
|
|
35910
|
+
// ── MegaETH mainnet ──────────────────────────────────────────────────────────
|
|
35911
|
+
4326: {
|
|
35912
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35913
|
+
chainId: 4326,
|
|
35914
|
+
blockNumber: 20056530,
|
|
35915
|
+
knownTemplates: knownTemplatesFor(4326)
|
|
35811
35916
|
},
|
|
35812
35917
|
// ── Base Sepolia (testnet) ───────────────────────────────────────────────────
|
|
35813
35918
|
84532: {
|
|
35814
|
-
|
|
35815
|
-
// 0xf1D0F4C9893612627409948BAa9d82a01a373799 (SAIL-405 redeploy).
|
|
35816
|
-
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
35919
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35817
35920
|
chainId: 84532,
|
|
35818
|
-
blockNumber:
|
|
35819
|
-
|
|
35820
|
-
governance: CREATE2_GOVERNANCE,
|
|
35821
|
-
timelock: CREATE2_TIMELOCK,
|
|
35822
|
-
kernel: CREATE2_KERNEL,
|
|
35823
|
-
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35824
|
-
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
35825
|
-
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
35826
|
-
treasury: CREATE2_TREASURY,
|
|
35827
|
-
maxPermissionFeeWei: 1000000000000000n,
|
|
35828
|
-
initialBaseFee: 0n,
|
|
35829
|
-
initialComplexityRate: 0n,
|
|
35830
|
-
dispatchModel: "selective",
|
|
35831
|
-
knownTemplates: [],
|
|
35832
|
-
standaloneTemplates: {}
|
|
35921
|
+
blockNumber: 43539604,
|
|
35922
|
+
knownTemplates: knownTemplatesFor(84532)
|
|
35833
35923
|
},
|
|
35834
35924
|
// ── Eth Sepolia (testnet) ────────────────────────────────────────────────────
|
|
35835
35925
|
11155111: {
|
|
35836
|
-
|
|
35837
|
-
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
35926
|
+
...COMMON_DEPLOYMENT_FIELDS,
|
|
35838
35927
|
chainId: 11155111,
|
|
35839
|
-
blockNumber:
|
|
35840
|
-
|
|
35841
|
-
governance: CREATE2_GOVERNANCE,
|
|
35842
|
-
timelock: CREATE2_TIMELOCK,
|
|
35843
|
-
kernel: CREATE2_KERNEL,
|
|
35844
|
-
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35845
|
-
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
35846
|
-
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
35847
|
-
treasury: CREATE2_TREASURY,
|
|
35848
|
-
maxPermissionFeeWei: 1000000000000000n,
|
|
35849
|
-
initialBaseFee: 0n,
|
|
35850
|
-
initialComplexityRate: 0n,
|
|
35851
|
-
dispatchModel: "selective",
|
|
35852
|
-
knownTemplates: [],
|
|
35853
|
-
standaloneTemplates: {}
|
|
35928
|
+
blockNumber: 11174750,
|
|
35929
|
+
knownTemplates: knownTemplatesFor(11155111)
|
|
35854
35930
|
}
|
|
35855
35931
|
};
|
|
35856
35932
|
function getSailDeployment(chainId) {
|
|
@@ -35861,6 +35937,219 @@ function getSailDeployment(chainId) {
|
|
|
35861
35937
|
return deployment;
|
|
35862
35938
|
}
|
|
35863
35939
|
|
|
35940
|
+
// ../sdk/dist/eip712.js
|
|
35941
|
+
init_esm2();
|
|
35942
|
+
function sailKernelDomain(args) {
|
|
35943
|
+
return {
|
|
35944
|
+
name: "SailKernel",
|
|
35945
|
+
version: "1",
|
|
35946
|
+
chainId: args.chainId,
|
|
35947
|
+
verifyingContract: args.kernel
|
|
35948
|
+
};
|
|
35949
|
+
}
|
|
35950
|
+
var DISPATCH_EIP712_FIELDS = {
|
|
35951
|
+
selective: [
|
|
35952
|
+
{ name: "account", type: "address" },
|
|
35953
|
+
{ name: "permission", type: "address" },
|
|
35954
|
+
{ name: "target", type: "address" },
|
|
35955
|
+
{ name: "value", type: "uint256" },
|
|
35956
|
+
{ name: "dataHash", type: "bytes32" },
|
|
35957
|
+
{ name: "nonce", type: "uint256" },
|
|
35958
|
+
{ name: "deadline", type: "uint256" }
|
|
35959
|
+
],
|
|
35960
|
+
conjunctive: [
|
|
35961
|
+
{ name: "account", type: "address" },
|
|
35962
|
+
{ name: "target", type: "address" },
|
|
35963
|
+
{ name: "value", type: "uint256" },
|
|
35964
|
+
{ name: "dataHash", type: "bytes32" },
|
|
35965
|
+
{ name: "nonce", type: "uint256" },
|
|
35966
|
+
{ name: "deadline", type: "uint256" }
|
|
35967
|
+
]
|
|
35968
|
+
};
|
|
35969
|
+
var DEFAULT_DISPATCH_DEADLINE_SECS = 600;
|
|
35970
|
+
var MANAGER_NONCES_ABI = [
|
|
35971
|
+
{
|
|
35972
|
+
type: "function",
|
|
35973
|
+
name: "managerNonces",
|
|
35974
|
+
stateMutability: "view",
|
|
35975
|
+
inputs: [{ name: "account", type: "address" }],
|
|
35976
|
+
outputs: [{ type: "uint256" }]
|
|
35977
|
+
}
|
|
35978
|
+
];
|
|
35979
|
+
async function buildDispatchSignature(params) {
|
|
35980
|
+
const { publicClient, kernel, chainId, account: account2, permission, call: call2, manager } = params;
|
|
35981
|
+
const caps = await detectKernelCapabilities(publicClient, kernel, {
|
|
35982
|
+
chainId
|
|
35983
|
+
});
|
|
35984
|
+
const nonce = params.nonce ?? await publicClient.readContract({
|
|
35985
|
+
address: kernel,
|
|
35986
|
+
abi: MANAGER_NONCES_ABI,
|
|
35987
|
+
functionName: "managerNonces",
|
|
35988
|
+
args: [account2]
|
|
35989
|
+
});
|
|
35990
|
+
const deadline = params.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + DEFAULT_DISPATCH_DEADLINE_SECS);
|
|
35991
|
+
const dataHash = keccak256(call2.data);
|
|
35992
|
+
const selective = caps.dispatchModel === "selective";
|
|
35993
|
+
const message = selective ? { account: account2, permission, target: call2.target, value: call2.value, dataHash, nonce, deadline } : { account: account2, target: call2.target, value: call2.value, dataHash, nonce, deadline };
|
|
35994
|
+
const signature = await manager.signTyped(sailKernelDomain({ chainId, kernel }), {
|
|
35995
|
+
primaryType: "Dispatch",
|
|
35996
|
+
types: {
|
|
35997
|
+
Dispatch: DISPATCH_EIP712_FIELDS[caps.dispatchModel]
|
|
35998
|
+
}
|
|
35999
|
+
}, message);
|
|
36000
|
+
return { signature, nonce, deadline, dispatchModel: caps.dispatchModel };
|
|
36001
|
+
}
|
|
36002
|
+
var REGISTER_PERMISSION_TYPES = {
|
|
36003
|
+
RegisterPermission: [
|
|
36004
|
+
{ name: "account", type: "address" },
|
|
36005
|
+
{ name: "permission", type: "address" },
|
|
36006
|
+
{ name: "nonce", type: "uint256" },
|
|
36007
|
+
{ name: "deadline", type: "uint256" }
|
|
36008
|
+
]
|
|
36009
|
+
};
|
|
36010
|
+
var REGISTER_PERMISSION_TYPES_NO_DEADLINE = {
|
|
36011
|
+
RegisterPermission: [
|
|
36012
|
+
{ name: "account", type: "address" },
|
|
36013
|
+
{ name: "permission", type: "address" },
|
|
36014
|
+
{ name: "nonce", type: "uint256" }
|
|
36015
|
+
]
|
|
36016
|
+
};
|
|
36017
|
+
function buildRegisterPermissionTypedData(args) {
|
|
36018
|
+
const hasDeadline = args.hasDeadline ?? false;
|
|
36019
|
+
const domain = {
|
|
36020
|
+
name: "SailKernel",
|
|
36021
|
+
version: "1",
|
|
36022
|
+
chainId: args.chainId,
|
|
36023
|
+
verifyingContract: args.kernel
|
|
36024
|
+
};
|
|
36025
|
+
if (hasDeadline) {
|
|
36026
|
+
const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 300);
|
|
36027
|
+
return {
|
|
36028
|
+
domain,
|
|
36029
|
+
types: REGISTER_PERMISSION_TYPES,
|
|
36030
|
+
primaryType: "RegisterPermission",
|
|
36031
|
+
message: {
|
|
36032
|
+
account: args.account,
|
|
36033
|
+
permission: args.permission,
|
|
36034
|
+
nonce: args.nonce.toString(),
|
|
36035
|
+
deadline: deadline.toString()
|
|
36036
|
+
}
|
|
36037
|
+
};
|
|
36038
|
+
}
|
|
36039
|
+
return {
|
|
36040
|
+
domain,
|
|
36041
|
+
types: REGISTER_PERMISSION_TYPES_NO_DEADLINE,
|
|
36042
|
+
primaryType: "RegisterPermission",
|
|
36043
|
+
message: {
|
|
36044
|
+
account: args.account,
|
|
36045
|
+
permission: args.permission,
|
|
36046
|
+
nonce: args.nonce.toString()
|
|
36047
|
+
}
|
|
36048
|
+
};
|
|
36049
|
+
}
|
|
36050
|
+
var REGISTER_PERMISSIONS_BATCH_TYPES = {
|
|
36051
|
+
RegisterPermissions: [
|
|
36052
|
+
{ name: "account", type: "address" },
|
|
36053
|
+
{ name: "permissions", type: "address[]" },
|
|
36054
|
+
{ name: "nonce", type: "uint256" },
|
|
36055
|
+
{ name: "deadline", type: "uint256" }
|
|
36056
|
+
]
|
|
36057
|
+
};
|
|
36058
|
+
function buildRegisterPermissionsBatchTypedData(args) {
|
|
36059
|
+
const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 600);
|
|
36060
|
+
return {
|
|
36061
|
+
domain: {
|
|
36062
|
+
name: "SailKernel",
|
|
36063
|
+
version: "1",
|
|
36064
|
+
chainId: args.chainId,
|
|
36065
|
+
verifyingContract: args.kernel
|
|
36066
|
+
},
|
|
36067
|
+
types: REGISTER_PERMISSIONS_BATCH_TYPES,
|
|
36068
|
+
primaryType: "RegisterPermissions",
|
|
36069
|
+
message: {
|
|
36070
|
+
account: args.account,
|
|
36071
|
+
permissions: args.permissions,
|
|
36072
|
+
nonce: args.nonce.toString(),
|
|
36073
|
+
deadline: deadline.toString()
|
|
36074
|
+
}
|
|
36075
|
+
};
|
|
36076
|
+
}
|
|
36077
|
+
var TEMPLATE_EIP712_DOMAIN_ABI = [
|
|
36078
|
+
{
|
|
36079
|
+
type: "function",
|
|
36080
|
+
name: "eip712Domain",
|
|
36081
|
+
stateMutability: "view",
|
|
36082
|
+
inputs: [],
|
|
36083
|
+
outputs: [
|
|
36084
|
+
{ name: "fields", type: "bytes1" },
|
|
36085
|
+
{ name: "name", type: "string" },
|
|
36086
|
+
{ name: "version", type: "string" },
|
|
36087
|
+
{ name: "chainId", type: "uint256" },
|
|
36088
|
+
{ name: "verifyingContract", type: "address" },
|
|
36089
|
+
{ name: "salt", type: "bytes32" },
|
|
36090
|
+
{ name: "extensions", type: "uint256[]" }
|
|
36091
|
+
]
|
|
36092
|
+
}
|
|
36093
|
+
];
|
|
36094
|
+
var REGISTRATION_EPOCH_ABI = [
|
|
36095
|
+
{
|
|
36096
|
+
type: "function",
|
|
36097
|
+
name: "registrationEpoch",
|
|
36098
|
+
stateMutability: "view",
|
|
36099
|
+
inputs: [
|
|
36100
|
+
{ name: "account", type: "address" },
|
|
36101
|
+
{ name: "permission", type: "address" }
|
|
36102
|
+
],
|
|
36103
|
+
outputs: [{ type: "uint256" }]
|
|
36104
|
+
}
|
|
36105
|
+
];
|
|
36106
|
+
var CONFIGURE_FIELDS_V1 = [
|
|
36107
|
+
{ name: "account", type: "address" },
|
|
36108
|
+
{ name: "paramsHash", type: "bytes32" },
|
|
36109
|
+
{ name: "nonce", type: "uint256" },
|
|
36110
|
+
{ name: "deadline", type: "uint256" }
|
|
36111
|
+
];
|
|
36112
|
+
var CONFIGURE_FIELDS_V2 = [...CONFIGURE_FIELDS_V1, { name: "epoch", type: "uint256" }];
|
|
36113
|
+
async function buildConfigureTypedData(args) {
|
|
36114
|
+
const [, name, version4, chainId] = await args.publicClient.readContract({
|
|
36115
|
+
address: args.template,
|
|
36116
|
+
abi: TEMPLATE_EIP712_DOMAIN_ABI,
|
|
36117
|
+
functionName: "eip712Domain"
|
|
36118
|
+
});
|
|
36119
|
+
if (version4 !== "1" && version4 !== "2") {
|
|
36120
|
+
throw new Error(`Unsupported template EIP-712 domain version "${version4}" for ${args.template}. This SDK signs Configure schema v1 or v2; upgrade the SDK for newer templates.`);
|
|
36121
|
+
}
|
|
36122
|
+
const isV2 = version4 === "2";
|
|
36123
|
+
const message = {
|
|
36124
|
+
account: args.account,
|
|
36125
|
+
paramsHash: keccak256(args.params),
|
|
36126
|
+
nonce: args.nonce.toString(),
|
|
36127
|
+
deadline: args.deadline.toString()
|
|
36128
|
+
};
|
|
36129
|
+
if (isV2) {
|
|
36130
|
+
const epoch = await args.publicClient.readContract({
|
|
36131
|
+
address: args.kernel,
|
|
36132
|
+
abi: REGISTRATION_EPOCH_ABI,
|
|
36133
|
+
functionName: "registrationEpoch",
|
|
36134
|
+
args: [args.account, args.template]
|
|
36135
|
+
});
|
|
36136
|
+
message.epoch = epoch.toString();
|
|
36137
|
+
}
|
|
36138
|
+
return {
|
|
36139
|
+
domain: {
|
|
36140
|
+
name,
|
|
36141
|
+
version: version4,
|
|
36142
|
+
chainId: Number(chainId),
|
|
36143
|
+
verifyingContract: args.template
|
|
36144
|
+
},
|
|
36145
|
+
types: {
|
|
36146
|
+
Configure: isV2 ? CONFIGURE_FIELDS_V2 : CONFIGURE_FIELDS_V1
|
|
36147
|
+
},
|
|
36148
|
+
primaryType: "Configure",
|
|
36149
|
+
message
|
|
36150
|
+
};
|
|
36151
|
+
}
|
|
36152
|
+
|
|
35864
36153
|
// ../sdk/dist/errors.js
|
|
35865
36154
|
init_esm2();
|
|
35866
36155
|
var KERNEL_ERROR_SIGNATURES = [
|
|
@@ -35956,163 +36245,25 @@ function extractRevertData(err) {
|
|
|
35956
36245
|
let depth = 0;
|
|
35957
36246
|
while (cursor && typeof cursor === "object" && !seen.has(cursor) && depth < 12) {
|
|
35958
36247
|
seen.add(cursor);
|
|
35959
|
-
depth++;
|
|
35960
|
-
const obj = cursor;
|
|
35961
|
-
const data = obj["data"];
|
|
35962
|
-
if (typeof data === "string" && data.startsWith("0x") && data.length >= 10) {
|
|
35963
|
-
return data;
|
|
35964
|
-
}
|
|
35965
|
-
if (data && typeof data === "object") {
|
|
35966
|
-
const inner = data["data"];
|
|
35967
|
-
if (typeof inner === "string" && inner.startsWith("0x") && inner.length >= 10) {
|
|
35968
|
-
return inner;
|
|
35969
|
-
}
|
|
35970
|
-
}
|
|
35971
|
-
const raw = obj["raw"];
|
|
35972
|
-
if (typeof raw === "string" && raw.startsWith("0x") && raw.length >= 10) {
|
|
35973
|
-
return raw;
|
|
35974
|
-
}
|
|
35975
|
-
cursor = obj["cause"];
|
|
35976
|
-
}
|
|
35977
|
-
return null;
|
|
35978
|
-
}
|
|
35979
|
-
|
|
35980
|
-
// ../sdk/dist/eip712.js
|
|
35981
|
-
init_esm2();
|
|
35982
|
-
function sailKernelDomain(args) {
|
|
35983
|
-
return {
|
|
35984
|
-
name: "SailKernel",
|
|
35985
|
-
version: "1",
|
|
35986
|
-
chainId: args.chainId,
|
|
35987
|
-
verifyingContract: args.kernel
|
|
35988
|
-
};
|
|
35989
|
-
}
|
|
35990
|
-
var DISPATCH_EIP712_FIELDS = {
|
|
35991
|
-
selective: [
|
|
35992
|
-
{ name: "account", type: "address" },
|
|
35993
|
-
{ name: "permission", type: "address" },
|
|
35994
|
-
{ name: "target", type: "address" },
|
|
35995
|
-
{ name: "value", type: "uint256" },
|
|
35996
|
-
{ name: "dataHash", type: "bytes32" },
|
|
35997
|
-
{ name: "nonce", type: "uint256" },
|
|
35998
|
-
{ name: "deadline", type: "uint256" }
|
|
35999
|
-
],
|
|
36000
|
-
conjunctive: [
|
|
36001
|
-
{ name: "account", type: "address" },
|
|
36002
|
-
{ name: "target", type: "address" },
|
|
36003
|
-
{ name: "value", type: "uint256" },
|
|
36004
|
-
{ name: "dataHash", type: "bytes32" },
|
|
36005
|
-
{ name: "nonce", type: "uint256" },
|
|
36006
|
-
{ name: "deadline", type: "uint256" }
|
|
36007
|
-
]
|
|
36008
|
-
};
|
|
36009
|
-
var DEFAULT_DISPATCH_DEADLINE_SECS = 600;
|
|
36010
|
-
var MANAGER_NONCES_ABI = [
|
|
36011
|
-
{
|
|
36012
|
-
type: "function",
|
|
36013
|
-
name: "managerNonces",
|
|
36014
|
-
stateMutability: "view",
|
|
36015
|
-
inputs: [{ name: "account", type: "address" }],
|
|
36016
|
-
outputs: [{ type: "uint256" }]
|
|
36017
|
-
}
|
|
36018
|
-
];
|
|
36019
|
-
async function buildDispatchSignature(params) {
|
|
36020
|
-
const { publicClient, kernel, chainId, account: account2, permission, call: call2, manager } = params;
|
|
36021
|
-
const caps = await detectKernelCapabilities(publicClient, kernel, {
|
|
36022
|
-
chainId
|
|
36023
|
-
});
|
|
36024
|
-
const nonce = params.nonce ?? await publicClient.readContract({
|
|
36025
|
-
address: kernel,
|
|
36026
|
-
abi: MANAGER_NONCES_ABI,
|
|
36027
|
-
functionName: "managerNonces",
|
|
36028
|
-
args: [account2]
|
|
36029
|
-
});
|
|
36030
|
-
const deadline = params.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + DEFAULT_DISPATCH_DEADLINE_SECS);
|
|
36031
|
-
const dataHash = keccak256(call2.data);
|
|
36032
|
-
const selective = caps.dispatchModel === "selective";
|
|
36033
|
-
const message = selective ? { account: account2, permission, target: call2.target, value: call2.value, dataHash, nonce, deadline } : { account: account2, target: call2.target, value: call2.value, dataHash, nonce, deadline };
|
|
36034
|
-
const signature = await manager.signTyped(sailKernelDomain({ chainId, kernel }), {
|
|
36035
|
-
primaryType: "Dispatch",
|
|
36036
|
-
types: {
|
|
36037
|
-
Dispatch: DISPATCH_EIP712_FIELDS[caps.dispatchModel]
|
|
36248
|
+
depth++;
|
|
36249
|
+
const obj = cursor;
|
|
36250
|
+
const data = obj["data"];
|
|
36251
|
+
if (typeof data === "string" && data.startsWith("0x") && data.length >= 10) {
|
|
36252
|
+
return data;
|
|
36038
36253
|
}
|
|
36039
|
-
|
|
36040
|
-
|
|
36041
|
-
|
|
36042
|
-
|
|
36043
|
-
RegisterPermission: [
|
|
36044
|
-
{ name: "account", type: "address" },
|
|
36045
|
-
{ name: "permission", type: "address" },
|
|
36046
|
-
{ name: "nonce", type: "uint256" },
|
|
36047
|
-
{ name: "deadline", type: "uint256" }
|
|
36048
|
-
]
|
|
36049
|
-
};
|
|
36050
|
-
var REGISTER_PERMISSION_TYPES_NO_DEADLINE = {
|
|
36051
|
-
RegisterPermission: [
|
|
36052
|
-
{ name: "account", type: "address" },
|
|
36053
|
-
{ name: "permission", type: "address" },
|
|
36054
|
-
{ name: "nonce", type: "uint256" }
|
|
36055
|
-
]
|
|
36056
|
-
};
|
|
36057
|
-
function buildRegisterPermissionTypedData(args) {
|
|
36058
|
-
const hasDeadline = args.hasDeadline ?? false;
|
|
36059
|
-
const domain = {
|
|
36060
|
-
name: "SailKernel",
|
|
36061
|
-
version: "1",
|
|
36062
|
-
chainId: args.chainId,
|
|
36063
|
-
verifyingContract: args.kernel
|
|
36064
|
-
};
|
|
36065
|
-
if (hasDeadline) {
|
|
36066
|
-
const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 300);
|
|
36067
|
-
return {
|
|
36068
|
-
domain,
|
|
36069
|
-
types: REGISTER_PERMISSION_TYPES,
|
|
36070
|
-
primaryType: "RegisterPermission",
|
|
36071
|
-
message: {
|
|
36072
|
-
account: args.account,
|
|
36073
|
-
permission: args.permission,
|
|
36074
|
-
nonce: args.nonce.toString(),
|
|
36075
|
-
deadline: deadline.toString()
|
|
36254
|
+
if (data && typeof data === "object") {
|
|
36255
|
+
const inner = data["data"];
|
|
36256
|
+
if (typeof inner === "string" && inner.startsWith("0x") && inner.length >= 10) {
|
|
36257
|
+
return inner;
|
|
36076
36258
|
}
|
|
36077
|
-
};
|
|
36078
|
-
}
|
|
36079
|
-
return {
|
|
36080
|
-
domain,
|
|
36081
|
-
types: REGISTER_PERMISSION_TYPES_NO_DEADLINE,
|
|
36082
|
-
primaryType: "RegisterPermission",
|
|
36083
|
-
message: {
|
|
36084
|
-
account: args.account,
|
|
36085
|
-
permission: args.permission,
|
|
36086
|
-
nonce: args.nonce.toString()
|
|
36087
36259
|
}
|
|
36088
|
-
|
|
36089
|
-
|
|
36090
|
-
|
|
36091
|
-
RegisterPermissions: [
|
|
36092
|
-
{ name: "account", type: "address" },
|
|
36093
|
-
{ name: "permissions", type: "address[]" },
|
|
36094
|
-
{ name: "nonce", type: "uint256" },
|
|
36095
|
-
{ name: "deadline", type: "uint256" }
|
|
36096
|
-
]
|
|
36097
|
-
};
|
|
36098
|
-
function buildRegisterPermissionsBatchTypedData(args) {
|
|
36099
|
-
const deadline = args.deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 600);
|
|
36100
|
-
return {
|
|
36101
|
-
domain: {
|
|
36102
|
-
name: "SailKernel",
|
|
36103
|
-
version: "1",
|
|
36104
|
-
chainId: args.chainId,
|
|
36105
|
-
verifyingContract: args.kernel
|
|
36106
|
-
},
|
|
36107
|
-
types: REGISTER_PERMISSIONS_BATCH_TYPES,
|
|
36108
|
-
primaryType: "RegisterPermissions",
|
|
36109
|
-
message: {
|
|
36110
|
-
account: args.account,
|
|
36111
|
-
permissions: args.permissions,
|
|
36112
|
-
nonce: args.nonce.toString(),
|
|
36113
|
-
deadline: deadline.toString()
|
|
36260
|
+
const raw = obj["raw"];
|
|
36261
|
+
if (typeof raw === "string" && raw.startsWith("0x") && raw.length >= 10) {
|
|
36262
|
+
return raw;
|
|
36114
36263
|
}
|
|
36115
|
-
|
|
36264
|
+
cursor = obj["cause"];
|
|
36265
|
+
}
|
|
36266
|
+
return null;
|
|
36116
36267
|
}
|
|
36117
36268
|
|
|
36118
36269
|
// ../sdk/dist/lifi.js
|
|
@@ -36181,6 +36332,27 @@ function buildPublicClient(config) {
|
|
|
36181
36332
|
function defaultDeadline() {
|
|
36182
36333
|
return BigInt(Math.floor(Date.now() / 1e3) + 300);
|
|
36183
36334
|
}
|
|
36335
|
+
var CONFIGURABLE_PERMISSION_ABI = [
|
|
36336
|
+
{
|
|
36337
|
+
type: "function",
|
|
36338
|
+
name: "configNonces",
|
|
36339
|
+
stateMutability: "view",
|
|
36340
|
+
inputs: [{ name: "account", type: "address" }],
|
|
36341
|
+
outputs: [{ type: "uint256" }]
|
|
36342
|
+
},
|
|
36343
|
+
{
|
|
36344
|
+
type: "function",
|
|
36345
|
+
name: "configure",
|
|
36346
|
+
stateMutability: "nonpayable",
|
|
36347
|
+
inputs: [
|
|
36348
|
+
{ name: "account", type: "address" },
|
|
36349
|
+
{ name: "params", type: "bytes" },
|
|
36350
|
+
{ name: "deadline", type: "uint256" },
|
|
36351
|
+
{ name: "sig", type: "bytes" }
|
|
36352
|
+
],
|
|
36353
|
+
outputs: []
|
|
36354
|
+
}
|
|
36355
|
+
];
|
|
36184
36356
|
var DEFAULT_DISPATCH_GAS = 2000000n;
|
|
36185
36357
|
function delay(ms) {
|
|
36186
36358
|
return new Promise((resolve3) => setTimeout(resolve3, ms));
|
|
@@ -36337,8 +36509,47 @@ var MandateNamespace = class extends KernelNamespace {
|
|
|
36337
36509
|
value: 0n
|
|
36338
36510
|
});
|
|
36339
36511
|
}
|
|
36340
|
-
|
|
36341
|
-
|
|
36512
|
+
/**
|
|
36513
|
+
* Re-configure the per-account bounds of an already-registered shared template.
|
|
36514
|
+
* The permission signer signs the template's `Configure` EIP-712 struct — built by
|
|
36515
|
+
* `buildConfigureTypedData`, which reads the template's live ERC-5267 domain and emits
|
|
36516
|
+
* the v1 or v2 (epoch-bound) schema to match whatever is deployed — and the attached
|
|
36517
|
+
* wallet submits `configure(account, params, deadline, sig)`.
|
|
36518
|
+
*
|
|
36519
|
+
* The config nonce is read fresh on-chain immediately before signing (the template
|
|
36520
|
+
* increments it only after a successful verify), so a re-config never reuses a stale nonce.
|
|
36521
|
+
*/
|
|
36522
|
+
async reconfigure(safe, template, params, signer) {
|
|
36523
|
+
const kernel = this.requireKernel();
|
|
36524
|
+
const wallet = this.requireSigner();
|
|
36525
|
+
const encoded = template.encoder.encode(params);
|
|
36526
|
+
const deadline = defaultDeadline();
|
|
36527
|
+
const nonce = await this.publicClient.readContract({
|
|
36528
|
+
address: template.address,
|
|
36529
|
+
abi: CONFIGURABLE_PERMISSION_ABI,
|
|
36530
|
+
functionName: "configNonces",
|
|
36531
|
+
args: [safe]
|
|
36532
|
+
});
|
|
36533
|
+
const td = await buildConfigureTypedData({
|
|
36534
|
+
publicClient: this.publicClient,
|
|
36535
|
+
kernel,
|
|
36536
|
+
template: template.address,
|
|
36537
|
+
account: safe,
|
|
36538
|
+
params: encoded,
|
|
36539
|
+
nonce,
|
|
36540
|
+
deadline
|
|
36541
|
+
});
|
|
36542
|
+
const sig = await signer.signTyped(td.domain, { primaryType: td.primaryType, types: td.types }, td.message);
|
|
36543
|
+
const txHash = await wallet.writeContract({
|
|
36544
|
+
address: template.address,
|
|
36545
|
+
abi: CONFIGURABLE_PERMISSION_ABI,
|
|
36546
|
+
functionName: "configure",
|
|
36547
|
+
args: [safe, encoded, deadline, sig]
|
|
36548
|
+
});
|
|
36549
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
36550
|
+
if (receipt.status !== "success") {
|
|
36551
|
+
throw new Error(`configure reverted (tx ${txHash})`);
|
|
36552
|
+
}
|
|
36342
36553
|
}
|
|
36343
36554
|
replace(_safe, _oldTemplate, _newTemplate, _params, _signer) {
|
|
36344
36555
|
return notImplemented();
|
|
@@ -36637,14 +36848,67 @@ var StrategyNamespace = class extends KernelNamespace {
|
|
|
36637
36848
|
}
|
|
36638
36849
|
};
|
|
36639
36850
|
var SessionNamespace = class extends KernelNamespace {
|
|
36640
|
-
|
|
36641
|
-
|
|
36851
|
+
/**
|
|
36852
|
+
* Suspend (`revokeSession`) or resume (`activateSession`) the manager's dispatch rights.
|
|
36853
|
+
* Both are permissionSigner-signed over the RevokeSession/ActivateSession EIP-712 struct,
|
|
36854
|
+
* with `nonce` read fresh from `signerNonces[account]` immediately before signing — the
|
|
36855
|
+
* kernel bumps that nonce by a full epoch on revoke (#70), so it must never be cached. The
|
|
36856
|
+
* kernel also rotates the manager/batch nonce epochs, invalidating any pre-signed dispatch.
|
|
36857
|
+
*/
|
|
36858
|
+
async revoke(safe, signer) {
|
|
36859
|
+
await this.#submitSessionOp(safe, signer, "RevokeSession", "revokeSession");
|
|
36642
36860
|
}
|
|
36643
|
-
activate(
|
|
36644
|
-
|
|
36861
|
+
async activate(safe, signer) {
|
|
36862
|
+
await this.#submitSessionOp(safe, signer, "ActivateSession", "activateSession");
|
|
36645
36863
|
}
|
|
36646
|
-
|
|
36647
|
-
|
|
36864
|
+
async #submitSessionOp(safe, signer, primaryType, fn) {
|
|
36865
|
+
const kernel = this.requireKernel();
|
|
36866
|
+
const wallet = this.requireSigner();
|
|
36867
|
+
const deadline = defaultDeadline();
|
|
36868
|
+
const nonce = await this.publicClient.readContract({
|
|
36869
|
+
address: kernel,
|
|
36870
|
+
abi: SailKernelAbi,
|
|
36871
|
+
functionName: "signerNonces",
|
|
36872
|
+
args: [safe]
|
|
36873
|
+
});
|
|
36874
|
+
const sig = await signer.signTyped(sailKernelDomain({ chainId: this.config.chainId, kernel }), {
|
|
36875
|
+
primaryType,
|
|
36876
|
+
types: {
|
|
36877
|
+
[primaryType]: [
|
|
36878
|
+
{ name: "account", type: "address" },
|
|
36879
|
+
{ name: "nonce", type: "uint256" },
|
|
36880
|
+
{ name: "deadline", type: "uint256" }
|
|
36881
|
+
]
|
|
36882
|
+
}
|
|
36883
|
+
}, { account: safe, nonce, deadline });
|
|
36884
|
+
const txHash = await wallet.writeContract({
|
|
36885
|
+
address: kernel,
|
|
36886
|
+
abi: SailKernelAbi,
|
|
36887
|
+
functionName: fn,
|
|
36888
|
+
args: [safe, deadline, sig]
|
|
36889
|
+
});
|
|
36890
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
36891
|
+
if (receipt.status !== "success") {
|
|
36892
|
+
throw new Error(`${fn} reverted (tx ${txHash})`);
|
|
36893
|
+
}
|
|
36894
|
+
}
|
|
36895
|
+
async status(safe) {
|
|
36896
|
+
const kernel = this.requireKernel();
|
|
36897
|
+
const cfg = await this.publicClient.readContract({
|
|
36898
|
+
address: kernel,
|
|
36899
|
+
abi: SailKernelAbi,
|
|
36900
|
+
functionName: "configs",
|
|
36901
|
+
args: [safe]
|
|
36902
|
+
});
|
|
36903
|
+
return {
|
|
36904
|
+
safe,
|
|
36905
|
+
active: cfg[4],
|
|
36906
|
+
manager: cfg[1],
|
|
36907
|
+
// Block-level markers require an event scan; expose live active/manager state and
|
|
36908
|
+
// leave the historical timestamps null.
|
|
36909
|
+
activatedAtBlock: null,
|
|
36910
|
+
revokedAtBlock: null
|
|
36911
|
+
};
|
|
36648
36912
|
}
|
|
36649
36913
|
};
|
|
36650
36914
|
var FeesNamespace = class extends KernelNamespace {
|
|
@@ -37858,6 +38122,9 @@ var SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
|
|
|
37858
38122
|
// src/commands/account.ts
|
|
37859
38123
|
init_esm2();
|
|
37860
38124
|
|
|
38125
|
+
// src/lib/chain.ts
|
|
38126
|
+
init_esm2();
|
|
38127
|
+
|
|
37861
38128
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/op-stack/contracts.js
|
|
37862
38129
|
var contracts = {
|
|
37863
38130
|
gasPriceOracle: { address: "0x420000000000000000000000000000000000000F" },
|
|
@@ -38129,6 +38396,35 @@ var baseSepoliaPreconf = /* @__PURE__ */ defineChain({
|
|
|
38129
38396
|
}
|
|
38130
38397
|
});
|
|
38131
38398
|
|
|
38399
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/bsc.js
|
|
38400
|
+
init_defineChain();
|
|
38401
|
+
var bsc = /* @__PURE__ */ defineChain({
|
|
38402
|
+
id: 56,
|
|
38403
|
+
name: "BNB Smart Chain",
|
|
38404
|
+
blockTime: 750,
|
|
38405
|
+
nativeCurrency: {
|
|
38406
|
+
decimals: 18,
|
|
38407
|
+
name: "BNB",
|
|
38408
|
+
symbol: "BNB"
|
|
38409
|
+
},
|
|
38410
|
+
rpcUrls: {
|
|
38411
|
+
default: { http: ["https://56.rpc.thirdweb.com"] }
|
|
38412
|
+
},
|
|
38413
|
+
blockExplorers: {
|
|
38414
|
+
default: {
|
|
38415
|
+
name: "BscScan",
|
|
38416
|
+
url: "https://bscscan.com",
|
|
38417
|
+
apiUrl: "https://api.bscscan.com/api"
|
|
38418
|
+
}
|
|
38419
|
+
},
|
|
38420
|
+
contracts: {
|
|
38421
|
+
multicall3: {
|
|
38422
|
+
address: "0xca11bde05977b3631167028862be2a173976ca11",
|
|
38423
|
+
blockCreated: 15921452
|
|
38424
|
+
}
|
|
38425
|
+
}
|
|
38426
|
+
});
|
|
38427
|
+
|
|
38132
38428
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/mainnet.js
|
|
38133
38429
|
init_defineChain();
|
|
38134
38430
|
var mainnet = /* @__PURE__ */ defineChain({
|
|
@@ -38160,6 +38456,56 @@ var mainnet = /* @__PURE__ */ defineChain({
|
|
|
38160
38456
|
}
|
|
38161
38457
|
});
|
|
38162
38458
|
|
|
38459
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/optimism.js
|
|
38460
|
+
init_defineChain();
|
|
38461
|
+
var sourceId3 = 1;
|
|
38462
|
+
var optimism = /* @__PURE__ */ defineChain({
|
|
38463
|
+
...chainConfig,
|
|
38464
|
+
id: 10,
|
|
38465
|
+
name: "OP Mainnet",
|
|
38466
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
|
38467
|
+
rpcUrls: {
|
|
38468
|
+
default: {
|
|
38469
|
+
http: ["https://mainnet.optimism.io"]
|
|
38470
|
+
}
|
|
38471
|
+
},
|
|
38472
|
+
blockExplorers: {
|
|
38473
|
+
default: {
|
|
38474
|
+
name: "Optimism Explorer",
|
|
38475
|
+
url: "https://optimistic.etherscan.io",
|
|
38476
|
+
apiUrl: "https://api-optimistic.etherscan.io/api"
|
|
38477
|
+
}
|
|
38478
|
+
},
|
|
38479
|
+
contracts: {
|
|
38480
|
+
...chainConfig.contracts,
|
|
38481
|
+
disputeGameFactory: {
|
|
38482
|
+
[sourceId3]: {
|
|
38483
|
+
address: "0xe5965Ab5962eDc7477C8520243A95517CD252fA9"
|
|
38484
|
+
}
|
|
38485
|
+
},
|
|
38486
|
+
l2OutputOracle: {
|
|
38487
|
+
[sourceId3]: {
|
|
38488
|
+
address: "0xdfe97868233d1aa22e815a266982f2cf17685a27"
|
|
38489
|
+
}
|
|
38490
|
+
},
|
|
38491
|
+
multicall3: {
|
|
38492
|
+
address: "0xca11bde05977b3631167028862be2a173976ca11",
|
|
38493
|
+
blockCreated: 4286263
|
|
38494
|
+
},
|
|
38495
|
+
portal: {
|
|
38496
|
+
[sourceId3]: {
|
|
38497
|
+
address: "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"
|
|
38498
|
+
}
|
|
38499
|
+
},
|
|
38500
|
+
l1StandardBridge: {
|
|
38501
|
+
[sourceId3]: {
|
|
38502
|
+
address: "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"
|
|
38503
|
+
}
|
|
38504
|
+
}
|
|
38505
|
+
},
|
|
38506
|
+
sourceId: sourceId3
|
|
38507
|
+
});
|
|
38508
|
+
|
|
38163
38509
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/sepolia.js
|
|
38164
38510
|
init_defineChain();
|
|
38165
38511
|
var sepolia = /* @__PURE__ */ defineChain({
|
|
@@ -38193,7 +38539,7 @@ var sepolia = /* @__PURE__ */ defineChain({
|
|
|
38193
38539
|
|
|
38194
38540
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/unichain.js
|
|
38195
38541
|
init_defineChain();
|
|
38196
|
-
var
|
|
38542
|
+
var sourceId4 = 1;
|
|
38197
38543
|
var unichain = /* @__PURE__ */ defineChain({
|
|
38198
38544
|
...chainConfig,
|
|
38199
38545
|
id: 130,
|
|
@@ -38219,22 +38565,77 @@ var unichain = /* @__PURE__ */ defineChain({
|
|
|
38219
38565
|
blockCreated: 0
|
|
38220
38566
|
},
|
|
38221
38567
|
disputeGameFactory: {
|
|
38222
|
-
[
|
|
38568
|
+
[sourceId4]: {
|
|
38223
38569
|
address: "0x2F12d621a16e2d3285929C9996f478508951dFe4"
|
|
38224
38570
|
}
|
|
38225
38571
|
},
|
|
38226
38572
|
portal: {
|
|
38227
|
-
[
|
|
38573
|
+
[sourceId4]: {
|
|
38228
38574
|
address: "0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2"
|
|
38229
38575
|
}
|
|
38230
38576
|
},
|
|
38231
38577
|
l1StandardBridge: {
|
|
38232
|
-
[
|
|
38578
|
+
[sourceId4]: {
|
|
38233
38579
|
address: "0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA"
|
|
38234
38580
|
}
|
|
38235
38581
|
}
|
|
38236
38582
|
},
|
|
38237
|
-
sourceId:
|
|
38583
|
+
sourceId: sourceId4
|
|
38584
|
+
});
|
|
38585
|
+
|
|
38586
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.4.3/node_modules/viem/_esm/chains/definitions/worldchain.js
|
|
38587
|
+
init_defineChain();
|
|
38588
|
+
var sourceId5 = 1;
|
|
38589
|
+
var worldchain = /* @__PURE__ */ defineChain({
|
|
38590
|
+
...chainConfig,
|
|
38591
|
+
id: 480,
|
|
38592
|
+
name: "World Chain",
|
|
38593
|
+
network: "worldchain",
|
|
38594
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
|
38595
|
+
rpcUrls: {
|
|
38596
|
+
default: { http: ["https://worldchain-mainnet.g.alchemy.com/public"] }
|
|
38597
|
+
},
|
|
38598
|
+
blockExplorers: {
|
|
38599
|
+
default: {
|
|
38600
|
+
name: "Worldscan",
|
|
38601
|
+
url: "https://worldscan.org",
|
|
38602
|
+
apiUrl: "https://api.worldscan.org/api"
|
|
38603
|
+
},
|
|
38604
|
+
blockscout: {
|
|
38605
|
+
name: "Blockscout",
|
|
38606
|
+
url: "https://worldchain-mainnet.explorer.alchemy.com",
|
|
38607
|
+
apiUrl: "https://worldchain-mainnet.explorer.alchemy.com/api"
|
|
38608
|
+
}
|
|
38609
|
+
},
|
|
38610
|
+
contracts: {
|
|
38611
|
+
...chainConfig.contracts,
|
|
38612
|
+
multicall3: {
|
|
38613
|
+
address: "0xca11bde05977b3631167028862be2a173976ca11",
|
|
38614
|
+
blockCreated: 0
|
|
38615
|
+
},
|
|
38616
|
+
disputeGameFactory: {
|
|
38617
|
+
[sourceId5]: {
|
|
38618
|
+
address: "0x069c4c579671f8c120b1327a73217D01Ea2EC5ea"
|
|
38619
|
+
}
|
|
38620
|
+
},
|
|
38621
|
+
l2OutputOracle: {
|
|
38622
|
+
[sourceId5]: {
|
|
38623
|
+
address: "0x19A6d1E9034596196295CF148509796978343c5D"
|
|
38624
|
+
}
|
|
38625
|
+
},
|
|
38626
|
+
portal: {
|
|
38627
|
+
[sourceId5]: {
|
|
38628
|
+
address: "0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C"
|
|
38629
|
+
}
|
|
38630
|
+
},
|
|
38631
|
+
l1StandardBridge: {
|
|
38632
|
+
[sourceId5]: {
|
|
38633
|
+
address: "0x470458C91978D2d929704489Ad730DC3E3001113"
|
|
38634
|
+
}
|
|
38635
|
+
}
|
|
38636
|
+
},
|
|
38637
|
+
testnet: false,
|
|
38638
|
+
sourceId: sourceId5
|
|
38238
38639
|
});
|
|
38239
38640
|
|
|
38240
38641
|
// src/lib/io.ts
|
|
@@ -38397,11 +38798,28 @@ async function promptHidden(question) {
|
|
|
38397
38798
|
}
|
|
38398
38799
|
|
|
38399
38800
|
// src/lib/chain.ts
|
|
38801
|
+
var hyperevm = defineChain({
|
|
38802
|
+
id: 999,
|
|
38803
|
+
name: "HyperEVM",
|
|
38804
|
+
nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 },
|
|
38805
|
+
rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm"] } }
|
|
38806
|
+
});
|
|
38807
|
+
var megaeth = defineChain({
|
|
38808
|
+
id: 4326,
|
|
38809
|
+
name: "MegaETH",
|
|
38810
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
|
38811
|
+
rpcUrls: { default: { http: ["https://carrot.megaeth.com/rpc"] } }
|
|
38812
|
+
});
|
|
38400
38813
|
var CHAINS = {
|
|
38401
38814
|
1: mainnet,
|
|
38402
38815
|
8453: base,
|
|
38403
38816
|
42161: arbitrum,
|
|
38817
|
+
10: optimism,
|
|
38404
38818
|
130: unichain,
|
|
38819
|
+
56: bsc,
|
|
38820
|
+
480: worldchain,
|
|
38821
|
+
999: hyperevm,
|
|
38822
|
+
4326: megaeth,
|
|
38405
38823
|
84532: baseSepolia,
|
|
38406
38824
|
11155111: sepolia
|
|
38407
38825
|
};
|
|
@@ -38409,7 +38827,7 @@ function getChainById(chainId) {
|
|
|
38409
38827
|
const chain2 = CHAINS[chainId];
|
|
38410
38828
|
if (!chain2) {
|
|
38411
38829
|
throw new Error(
|
|
38412
|
-
`Unsupported chainId: ${chainId}. Supported: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 130 (Unichain), 84532 (Base Sepolia), 11155111 (Eth Sepolia)`
|
|
38830
|
+
`Unsupported chainId: ${chainId}. Supported: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 10 (Optimism), 130 (Unichain), 56 (BSC), 480 (World Chain), 999 (HyperEVM), 4326 (MegaETH), 84532 (Base Sepolia), 11155111 (Eth Sepolia)`
|
|
38413
38831
|
);
|
|
38414
38832
|
}
|
|
38415
38833
|
return chain2;
|
|
@@ -39300,7 +39718,7 @@ async function createSigningChannel(projectRoot = process.cwd()) {
|
|
|
39300
39718
|
}
|
|
39301
39719
|
|
|
39302
39720
|
// src/commands/account.ts
|
|
39303
|
-
var SAIL_MAINNET_CHAINS = [1, 8453, 42161, 130];
|
|
39721
|
+
var SAIL_MAINNET_CHAINS = [1, 8453, 42161, 10, 130, 56, 480, 999, 4326];
|
|
39304
39722
|
async function fetchProxyCreationCode(preferredChainId) {
|
|
39305
39723
|
const rpcUrl = getRpcUrl(preferredChainId) ?? void 0;
|
|
39306
39724
|
const publicClient = createPublicClient({
|
|
@@ -40357,7 +40775,7 @@ async function doctor(options = {}) {
|
|
|
40357
40775
|
console.log(`Account: ${safe}`);
|
|
40358
40776
|
if (stored?.saltNonce != null) {
|
|
40359
40777
|
const saltNonce = BigInt(stored.saltNonce);
|
|
40360
|
-
const MAINNET_CHAINS = [1, 8453, 42161, 130];
|
|
40778
|
+
const MAINNET_CHAINS = [1, 8453, 42161, 10, 130, 56, 480, 999, 4326];
|
|
40361
40779
|
try {
|
|
40362
40780
|
const proxyCreationCode = await pc.readContract({
|
|
40363
40781
|
address: SAFE_V141.proxyFactory,
|
|
@@ -44519,7 +44937,7 @@ async function scan(options) {
|
|
|
44519
44937
|
args: [address]
|
|
44520
44938
|
})
|
|
44521
44939
|
]);
|
|
44522
|
-
const [permissionSigner, manager, , sessionActive] = config;
|
|
44940
|
+
const [permissionSigner, manager, , , sessionActive] = config;
|
|
44523
44941
|
smas.push({ address, registered: true, manager, permissionSigner, sessionActive, mandates });
|
|
44524
44942
|
} catch (err) {
|
|
44525
44943
|
smas.push({
|