@dev.sail.money/sailor 0.0.2-27 → 0.0.2-28
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 +2 -1
- package/README.md +11 -62
- package/package.json +3 -9
- package/packages/cli/dist/index.cjs +97 -174
- package/packages/cli/dist/server.cjs +1399 -584
- package/packages/sdk/dist/index.d.ts +0 -1
- package/packages/sdk/dist/index.d.ts.map +1 -1
- package/packages/sdk/dist/index.js +0 -1
- 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/package.json +0 -28
- package/packages/ui/dist/assets/{add-qTuQMFTK.js → add-Cj0EIUcG.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-C-2_6Yfv.js → all-wallets-DlyRsWoN.js} +1 -1
- package/packages/ui/dist/assets/{app-store-DIz363Ij.js → app-store-CXP08sks.js} +1 -1
- package/packages/ui/dist/assets/{apple-Bm2XNMO1.js → apple-B62K6dJr.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-D7B-UpVg.js → arrow-bottom-BTuC5-tQ.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-XB0ks3C3.js → arrow-bottom-circle-dlgFXE0q.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-_d9tAksG.js → arrow-left-Uohbz9c6.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-By10t6nk.js → arrow-right-CH0vSHgl.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-CrLIWHvo.js → arrow-top-CxY6BKDT.js} +1 -1
- package/packages/ui/dist/assets/{bank-DZC26LyI.js → bank-Dz6PlF79.js} +1 -1
- package/packages/ui/dist/assets/{basic-C2XYdmOJ.js → basic-CTV3Ph_S.js} +1 -1
- package/packages/ui/dist/assets/{browser-URMwBp02.js → browser-DBRTpG2H.js} +1 -1
- package/packages/ui/dist/assets/{card-DI1X7fa2.js → card-DWA4Ne8q.js} +1 -1
- package/packages/ui/dist/assets/{ccip-CkI0EKXG.js → ccip-CJCerfkJ.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-DRPP3O33.js → checkmark-Cx-ePFrg.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-BXlTXuID.js → checkmark-bold-BhDIlGHD.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-BtIA5-Zw.js → chevron-bottom-2uFzesS3.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-CR6HwOU6.js → chevron-left-BoKXXZ4E.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-DubfEKW-.js → chevron-right-EUp-RhYw.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-BrZ5ZZx1.js → chevron-top-D51M78MN.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-DdtEbnZQ.js → chrome-store-DrRbU0Rc.js} +1 -1
- package/packages/ui/dist/assets/{clock-CbGzJbXx.js → clock-9mIuX-1G.js} +1 -1
- package/packages/ui/dist/assets/{close-BdZW5KIv.js → close-BvuXlx8s.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-BXu1Nsdu.js → coinPlaceholder-Bi7hJj5a.js} +1 -1
- package/packages/ui/dist/assets/{compass-CZQzEYcb.js → compass-C623d6DE.js} +1 -1
- package/packages/ui/dist/assets/{copy-fCcrYd5O.js → copy-CFhZQkfE.js} +1 -1
- package/packages/ui/dist/assets/{core-B_rlQlCa.js → core-BGl4d2YS.js} +3 -3
- package/packages/ui/dist/assets/cursor-CUSm3LCL.js +3 -0
- package/packages/ui/dist/assets/{cursor-transparent-BvuhytdN.js → cursor-transparent-FBFMyBY2.js} +1 -1
- package/packages/ui/dist/assets/{desktop-AwX0UzWw.js → desktop-Cco6Py8z.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-B2DnHNge.js → disconnect-GkX8GhOW.js} +1 -1
- package/packages/ui/dist/assets/{discord-CcFyxhBQ.js → discord-BNJe-HNX.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-D5kNPWk4.js → etherscan-CoY2RMWw.js} +1 -1
- package/packages/ui/dist/assets/{events-C8ePWdzE.js → events-DlxPGhin.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-DyQ_1Efw.js → exclamation-triangle-9thkvaBf.js} +1 -1
- package/packages/ui/dist/assets/{extension-jz2s06tW.js → extension-BshOJ_bn.js} +1 -1
- package/packages/ui/dist/assets/{external-link-2ybQxumz.js → external-link-97rok_V_.js} +1 -1
- package/packages/ui/dist/assets/{facebook-DS8jxA10.js → facebook-BsiLEVlU.js} +1 -1
- package/packages/ui/dist/assets/{fallback-B9fs84IX.js → fallback-DlWsoHyh.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-BBJafyOu.js → farcaster-CmRL47La.js} +1 -1
- package/packages/ui/dist/assets/{filters-CNeaqp_S.js → filters-DXAWgNLO.js} +1 -1
- package/packages/ui/dist/assets/{github-Bc07zhCy.js → github-bCBJUbbe.js} +1 -1
- package/packages/ui/dist/assets/{google-v8uzPHNZ.js → google-CYTI0KrI.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-DxtX1OZF.js → help-circle-LNgEbcGY.js} +1 -1
- package/packages/ui/dist/assets/{id-Br98ANoH.js → id-ChJn0Ugg.js} +1 -1
- package/packages/ui/dist/assets/{image-Bmk8NyWu.js → image--Y7maC5b.js} +1 -1
- package/packages/ui/dist/assets/{index-DK4KEqZ6.js → index-5MkegeeB.js} +3 -3
- package/packages/ui/dist/assets/{index-tz2OP5vg.js → index-BN0O-ZFZ.js} +39 -39
- package/packages/ui/dist/assets/{index-C8u3uWA-.js → index-BONuaN6W.js} +1 -1
- package/packages/ui/dist/assets/{index-D8e304bv.js → index-BlU0aZ21.js} +1 -1
- package/packages/ui/dist/assets/{index-C3xXe8Pu.js → index-CZMzzRJU.js} +1 -1
- package/packages/ui/dist/assets/{index-noDAXths.js → index-O4l6CrZ0.js} +1 -1
- package/packages/ui/dist/assets/index-n8bp1ZEc.css +1 -0
- package/packages/ui/dist/assets/{index.es-DO70eR0a.js → index.es-CXlLR_xG.js} +4 -4
- package/packages/ui/dist/assets/{info-Dm75IcvR.js → info-DUq1c6sJ.js} +1 -1
- package/packages/ui/dist/assets/{info-circle-COqN3U18.js → info-circle-UobJ0GGG.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-oXBKSpqT.js → lightbulb-BI4WR-IB.js} +1 -1
- package/packages/ui/dist/assets/{mail-CzH77S-9.js → mail-BSN2fVMe.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-kTTPRXnX.js → metamask-sdk-B7CK8pn-.js} +1 -1
- package/packages/ui/dist/assets/{mobile-DC8p7uWG.js → mobile-BfuUs9p7.js} +1 -1
- package/packages/ui/dist/assets/{more-CW76Ufwh.js → more-C1zkGuE3.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-C-jgFto6.js → network-placeholder-CtiEl1UM.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-CMNOse1o.js → nftPlaceholder-C_B9PGkr.js} +1 -1
- package/packages/ui/dist/assets/{off-BXAtst7s.js → off-B93fIkKw.js} +1 -1
- package/packages/ui/dist/assets/{parseSignature-huIOIOFv.js → parseSignature-BKzLunwo.js} +1 -1
- package/packages/ui/dist/assets/{play-store-CAA_V4_P.js → play-store-DfDTySLA.js} +1 -1
- package/packages/ui/dist/assets/{plus-o-2XxIRf.js → plus-_EYE7Soi.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-BucbLbnn.js → qr-code-CSklhafe.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-CzM8G600.js → recycle-horizontal-CoH2EBIZ.js} +1 -1
- package/packages/ui/dist/assets/{refresh-UBxc9Ujg.js → refresh-COGV5RR9.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-DouNSg_O.js → reown-logo-YYxIj6hm.js} +1 -1
- package/packages/ui/dist/assets/{search-B9_0X948.js → search-CpoWhaNF.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-CnLx1wuv.js → secp256k1-ZWo-L7nJ.js} +1 -1
- package/packages/ui/dist/assets/{send-D2ETNZ0F.js → send-CjEG2p8N.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-6R0tJDBj.js → swapHorizontal-3V6lypqD.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-YzWWnx8n.js → swapHorizontalBold-7swnGG5R.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-DD4yeAY1.js → swapHorizontalMedium-zPdpOjAy.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-DmL4h2Mk.js → swapHorizontalRoundedBold-2Mxr5XPm.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-DWUQf-aB.js → swapVertical-D9KAlnz7.js} +1 -1
- package/packages/ui/dist/assets/{telegram-BWYqex9D.js → telegram-DztV38YW.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-kuxAOnjJ.js → three-dots-DWOvYMr0.js} +1 -1
- package/packages/ui/dist/assets/{twitch-Cqjm9Lmi.js → twitch-B3UH6j0S.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-qeJ4RH6T.js → twitterIcon-C2lA-xQv.js} +1 -1
- package/packages/ui/dist/assets/{verify-C2pfbtI7.js → verify-BP_uBvwh.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-DxEdt6vx.js → verify-filled-DLByZnlA.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-Dm1gaw9i.js → w3m-modal-C2-cKwor.js} +1 -1
- package/packages/ui/dist/assets/{wallet-B7p1_8EB.js → wallet-Bc7LMFHM.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-BY8k3n1-.js → wallet-placeholder-DsjujZQW.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-Bg6lRwqy.js → walletconnect-i_fC7jz3.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-DqLCpUJ0.js → warning-circle-DIxNhxFp.js} +1 -1
- package/packages/ui/dist/assets/{x-WtAqjAcW.js → x-BamJJInV.js} +1 -1
- package/packages/ui/dist/index.html +2 -2
- package/templates/default/examples/dca/agent.ts +1 -1
- package/templates/default/examples/dca/mandate.ts +1 -1
- package/templates/default/src/agent.ts +1 -1
- package/templates/default/tsconfig.json +2 -5
- package/templates/lifi-permissions/README.md +1 -1
- package/packages/sdk/dist/chains.d.ts +0 -12
- package/packages/sdk/dist/chains.d.ts.map +0 -1
- package/packages/sdk/dist/chains.js +0 -88
- package/packages/sdk/dist/chains.js.map +0 -1
- package/packages/ui/dist/assets/cursor-CNWux1oe.js +0 -3
- package/packages/ui/dist/assets/index-DCnJ64lX.css +0 -1
|
@@ -35206,7 +35206,7 @@ var {
|
|
|
35206
35206
|
Help
|
|
35207
35207
|
} = import_index.default;
|
|
35208
35208
|
|
|
35209
|
-
// ../
|
|
35209
|
+
// ../chains/dist/index.js
|
|
35210
35210
|
var chains = {
|
|
35211
35211
|
// Ethereum mainnet
|
|
35212
35212
|
1: {
|
|
@@ -35282,17 +35282,15 @@ var chains = {
|
|
|
35282
35282
|
function getChain(chainId) {
|
|
35283
35283
|
const config = chains[chainId];
|
|
35284
35284
|
if (!config) {
|
|
35285
|
-
throw new Error(
|
|
35286
|
-
`Chain ${chainId} is not supported. Supported chains: 1 (Ethereum), 8453 (Base), 42161 (Arbitrum), 130 (Unichain), 84532 (Base Sepolia), 11155111 (Eth Sepolia).`
|
|
35287
|
-
);
|
|
35285
|
+
throw new Error(`Chain ${chainId} is not yet supported. Add it to @sail/chains once SailKernel is deployed.`);
|
|
35288
35286
|
}
|
|
35289
35287
|
return config;
|
|
35290
35288
|
}
|
|
35291
35289
|
|
|
35292
|
-
// ../sdk/
|
|
35290
|
+
// ../sdk/dist/client.js
|
|
35293
35291
|
init_esm2();
|
|
35294
35292
|
|
|
35295
|
-
// ../sdk/
|
|
35293
|
+
// ../sdk/dist/abis/SailKernel.js
|
|
35296
35294
|
var SailKernelAbi = [
|
|
35297
35295
|
// ── Account instantiation ────────────────────────────────────────────────
|
|
35298
35296
|
{
|
|
@@ -35597,7 +35595,7 @@ var SailKernelAbi = [
|
|
|
35597
35595
|
}
|
|
35598
35596
|
];
|
|
35599
35597
|
|
|
35600
|
-
// ../sdk/
|
|
35598
|
+
// ../sdk/dist/capabilities.js
|
|
35601
35599
|
init_esm2();
|
|
35602
35600
|
var DISPATCH_TYPE_STRINGS = {
|
|
35603
35601
|
conjunctive: "Dispatch(address account,address target,uint256 value,bytes32 dataHash,uint256 nonce,uint256 deadline)",
|
|
@@ -35642,9 +35640,7 @@ function fromDispatchTypehash(kernel, dispatchTypehash, registerPermissionTypeha
|
|
|
35642
35640
|
} else if (dispatchTypehash === DISPATCH_TYPEHASHES.selective) {
|
|
35643
35641
|
dispatchModel = "selective";
|
|
35644
35642
|
} else {
|
|
35645
|
-
throw new Error(
|
|
35646
|
-
`Unrecognized kernel DISPATCH_TYPEHASH ${dispatchTypehash} for ${kernel}. The SDK cannot safely sign dispatches for this kernel version. Known: conjunctive=${DISPATCH_TYPEHASHES.conjunctive}, selective=${DISPATCH_TYPEHASHES.selective}.`
|
|
35647
|
-
);
|
|
35643
|
+
throw new Error(`Unrecognized kernel DISPATCH_TYPEHASH ${dispatchTypehash} for ${kernel}. The SDK cannot safely sign dispatches for this kernel version. Known: conjunctive=${DISPATCH_TYPEHASHES.conjunctive}, selective=${DISPATCH_TYPEHASHES.selective}.`);
|
|
35648
35644
|
}
|
|
35649
35645
|
let registerPermissionHasDeadline = dispatchModel === "selective";
|
|
35650
35646
|
if (registerPermissionTypehash === REGISTER_PERMISSION_TYPEHASHES.withDeadline) {
|
|
@@ -35669,7 +35665,8 @@ async function detectKernelCapabilities(publicClient, kernel, opts) {
|
|
|
35669
35665
|
const key = cacheKey2(chainId, kernel);
|
|
35670
35666
|
if (!opts?.force) {
|
|
35671
35667
|
const hit = cache.get(key);
|
|
35672
|
-
if (hit)
|
|
35668
|
+
if (hit)
|
|
35669
|
+
return hit;
|
|
35673
35670
|
}
|
|
35674
35671
|
let dispatchTypehash;
|
|
35675
35672
|
let registerPermissionTypehash;
|
|
@@ -35691,29 +35688,17 @@ async function detectKernelCapabilities(publicClient, kernel, opts) {
|
|
|
35691
35688
|
}
|
|
35692
35689
|
let caps;
|
|
35693
35690
|
if (dispatchTypehash) {
|
|
35694
|
-
caps = fromDispatchTypehash(
|
|
35695
|
-
kernel,
|
|
35696
|
-
dispatchTypehash,
|
|
35697
|
-
registerPermissionTypehash,
|
|
35698
|
-
"onchain-typehash"
|
|
35699
|
-
);
|
|
35691
|
+
caps = fromDispatchTypehash(kernel, dispatchTypehash, registerPermissionTypehash, "onchain-typehash");
|
|
35700
35692
|
} else if (opts?.staticModel) {
|
|
35701
|
-
caps = fromDispatchTypehash(
|
|
35702
|
-
kernel,
|
|
35703
|
-
DISPATCH_TYPEHASHES[opts.staticModel],
|
|
35704
|
-
void 0,
|
|
35705
|
-
"static-hint"
|
|
35706
|
-
);
|
|
35693
|
+
caps = fromDispatchTypehash(kernel, DISPATCH_TYPEHASHES[opts.staticModel], void 0, "static-hint");
|
|
35707
35694
|
} else {
|
|
35708
|
-
throw new Error(
|
|
35709
|
-
`Could not read DISPATCH_TYPEHASH from kernel ${kernel}, and no staticModel hint was given. Pass opts.staticModel ('conjunctive' | 'selective') to proceed without on-chain detection.`
|
|
35710
|
-
);
|
|
35695
|
+
throw new Error(`Could not read DISPATCH_TYPEHASH from kernel ${kernel}, and no staticModel hint was given. Pass opts.staticModel ('conjunctive' | 'selective') to proceed without on-chain detection.`);
|
|
35711
35696
|
}
|
|
35712
35697
|
cache.set(key, caps);
|
|
35713
35698
|
return caps;
|
|
35714
35699
|
}
|
|
35715
35700
|
|
|
35716
|
-
// ../sdk/
|
|
35701
|
+
// ../sdk/dist/deployments.js
|
|
35717
35702
|
var CREATE2_KERNEL = "0x02ABC18B65A328de2e749F56ba79ACF2718a6659";
|
|
35718
35703
|
var CREATE2_GOVERNANCE = "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC";
|
|
35719
35704
|
var CREATE2_TIMELOCK = "0xE48Ba8DB6d748adafD13155c3590f62e58a77f56";
|
|
@@ -35866,7 +35851,7 @@ function getSailDeployment(chainId) {
|
|
|
35866
35851
|
return deployment;
|
|
35867
35852
|
}
|
|
35868
35853
|
|
|
35869
|
-
// ../sdk/
|
|
35854
|
+
// ../sdk/dist/errors.js
|
|
35870
35855
|
init_esm2();
|
|
35871
35856
|
var KERNEL_ERROR_SIGNATURES = [
|
|
35872
35857
|
"error AccountAlreadyRegistered(address account)",
|
|
@@ -35945,12 +35930,14 @@ async function decode2(data) {
|
|
|
35945
35930
|
}
|
|
35946
35931
|
}
|
|
35947
35932
|
function decodeKernelError(data) {
|
|
35948
|
-
if (!data || data === "0x")
|
|
35933
|
+
if (!data || data === "0x")
|
|
35934
|
+
return Promise.resolve(null);
|
|
35949
35935
|
return decode2(data);
|
|
35950
35936
|
}
|
|
35951
35937
|
async function explainKernelRevert(err) {
|
|
35952
35938
|
const data = extractRevertData(err);
|
|
35953
|
-
if (!data)
|
|
35939
|
+
if (!data)
|
|
35940
|
+
return null;
|
|
35954
35941
|
return decodeKernelError(data);
|
|
35955
35942
|
}
|
|
35956
35943
|
function extractRevertData(err) {
|
|
@@ -35980,7 +35967,7 @@ function extractRevertData(err) {
|
|
|
35980
35967
|
return null;
|
|
35981
35968
|
}
|
|
35982
35969
|
|
|
35983
|
-
// ../sdk/
|
|
35970
|
+
// ../sdk/dist/eip712.js
|
|
35984
35971
|
init_esm2();
|
|
35985
35972
|
function sailKernelDomain(args) {
|
|
35986
35973
|
return {
|
|
@@ -36034,16 +36021,12 @@ async function buildDispatchSignature(params) {
|
|
|
36034
36021
|
const dataHash = keccak256(call2.data);
|
|
36035
36022
|
const selective = caps.dispatchModel === "selective";
|
|
36036
36023
|
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 };
|
|
36037
|
-
const signature = await manager.signTyped(
|
|
36038
|
-
|
|
36039
|
-
{
|
|
36040
|
-
|
|
36041
|
-
|
|
36042
|
-
|
|
36043
|
-
}
|
|
36044
|
-
},
|
|
36045
|
-
message
|
|
36046
|
-
);
|
|
36024
|
+
const signature = await manager.signTyped(sailKernelDomain({ chainId, kernel }), {
|
|
36025
|
+
primaryType: "Dispatch",
|
|
36026
|
+
types: {
|
|
36027
|
+
Dispatch: DISPATCH_EIP712_FIELDS[caps.dispatchModel]
|
|
36028
|
+
}
|
|
36029
|
+
}, message);
|
|
36047
36030
|
return { signature, nonce, deadline, dispatchModel: caps.dispatchModel };
|
|
36048
36031
|
}
|
|
36049
36032
|
var REGISTER_PERMISSION_TYPES = {
|
|
@@ -36122,7 +36105,7 @@ function buildRegisterPermissionsBatchTypedData(args) {
|
|
|
36122
36105
|
};
|
|
36123
36106
|
}
|
|
36124
36107
|
|
|
36125
|
-
// ../sdk/
|
|
36108
|
+
// ../sdk/dist/lifi.js
|
|
36126
36109
|
init_esm2();
|
|
36127
36110
|
var LIFI_QUOTE_URL = "https://li.quest/v1/quote";
|
|
36128
36111
|
var LIFI_ROUTERS = {
|
|
@@ -36161,9 +36144,7 @@ async function fetchLifiQuote(params) {
|
|
|
36161
36144
|
const quote = await res.json();
|
|
36162
36145
|
const tx = quote.transactionRequest;
|
|
36163
36146
|
if (!tx?.to || !tx?.data) {
|
|
36164
|
-
throw new Error(
|
|
36165
|
-
"LiFi quote returned no usable transactionRequest: " + JSON.stringify(quote).slice(0, 400)
|
|
36166
|
-
);
|
|
36147
|
+
throw new Error("LiFi quote returned no usable transactionRequest: " + JSON.stringify(quote).slice(0, 400));
|
|
36167
36148
|
}
|
|
36168
36149
|
return {
|
|
36169
36150
|
target: tx.to,
|
|
@@ -36174,7 +36155,7 @@ async function fetchLifiQuote(params) {
|
|
|
36174
36155
|
};
|
|
36175
36156
|
}
|
|
36176
36157
|
|
|
36177
|
-
// ../sdk/
|
|
36158
|
+
// ../sdk/dist/client.js
|
|
36178
36159
|
function notImplemented() {
|
|
36179
36160
|
throw new Error("not implemented");
|
|
36180
36161
|
}
|
|
@@ -36218,13 +36199,17 @@ var CONJUNCTIVE_DISPATCH_ABI = [
|
|
|
36218
36199
|
async function enrichKernelRevert(err) {
|
|
36219
36200
|
const decoded = await explainKernelRevert(err);
|
|
36220
36201
|
const base2 = err instanceof Error ? err : new Error(String(err));
|
|
36221
|
-
if (!decoded)
|
|
36202
|
+
if (!decoded)
|
|
36203
|
+
return base2;
|
|
36222
36204
|
const wrapped = new Error(`Kernel reverted: ${decoded.message}`);
|
|
36223
36205
|
wrapped.cause = base2;
|
|
36224
36206
|
wrapped.kernelError = decoded;
|
|
36225
36207
|
return wrapped;
|
|
36226
36208
|
}
|
|
36227
36209
|
var KernelNamespace = class {
|
|
36210
|
+
publicClient;
|
|
36211
|
+
config;
|
|
36212
|
+
walletClient;
|
|
36228
36213
|
constructor(publicClient, config, walletClient) {
|
|
36229
36214
|
this.publicClient = publicClient;
|
|
36230
36215
|
this.config = config;
|
|
@@ -36233,17 +36218,13 @@ var KernelNamespace = class {
|
|
|
36233
36218
|
requireKernel() {
|
|
36234
36219
|
const kernel = this.config.kernel;
|
|
36235
36220
|
if (!kernel) {
|
|
36236
|
-
throw new Error(
|
|
36237
|
-
"SailKernel address not configured \u2014 set `kernel` in SailorClientConfig."
|
|
36238
|
-
);
|
|
36221
|
+
throw new Error("SailKernel address not configured \u2014 set `kernel` in SailorClientConfig.");
|
|
36239
36222
|
}
|
|
36240
36223
|
return kernel;
|
|
36241
36224
|
}
|
|
36242
36225
|
requireSigner() {
|
|
36243
36226
|
if (!this.walletClient) {
|
|
36244
|
-
throw new Error(
|
|
36245
|
-
"No signer attached \u2014 call client.withSigner(walletClient) before write operations."
|
|
36246
|
-
);
|
|
36227
|
+
throw new Error("No signer attached \u2014 call client.withSigner(walletClient) before write operations.");
|
|
36247
36228
|
}
|
|
36248
36229
|
return this.walletClient;
|
|
36249
36230
|
}
|
|
@@ -36266,9 +36247,7 @@ var AccountNamespace = class extends KernelNamespace {
|
|
|
36266
36247
|
const kernel = this.requireKernel();
|
|
36267
36248
|
const signer = this.requireSigner();
|
|
36268
36249
|
if (!params.safeFactory || !params.safeSingleton || !params.safeInitializer) {
|
|
36269
|
-
throw new Error(
|
|
36270
|
-
"createAccount requires safeFactory, safeSingleton, and safeInitializer."
|
|
36271
|
-
);
|
|
36250
|
+
throw new Error("createAccount requires safeFactory, safeSingleton, and safeInitializer.");
|
|
36272
36251
|
}
|
|
36273
36252
|
const txHash = await signer.writeContract({
|
|
36274
36253
|
address: kernel,
|
|
@@ -36329,21 +36308,17 @@ var MandateNamespace = class extends KernelNamespace {
|
|
|
36329
36308
|
functionName: "signerNonces",
|
|
36330
36309
|
args: [safe]
|
|
36331
36310
|
});
|
|
36332
|
-
const sig = await signer.signTyped(
|
|
36333
|
-
|
|
36334
|
-
{
|
|
36335
|
-
|
|
36336
|
-
|
|
36337
|
-
|
|
36338
|
-
|
|
36339
|
-
|
|
36340
|
-
|
|
36341
|
-
|
|
36342
|
-
|
|
36343
|
-
}
|
|
36344
|
-
},
|
|
36345
|
-
{ account: safe, permissions, nonce, deadline }
|
|
36346
|
-
);
|
|
36311
|
+
const sig = await signer.signTyped(sailKernelDomain({ chainId: this.config.chainId, kernel }), {
|
|
36312
|
+
primaryType: "RegisterPermissions",
|
|
36313
|
+
types: {
|
|
36314
|
+
RegisterPermissions: [
|
|
36315
|
+
{ name: "account", type: "address" },
|
|
36316
|
+
{ name: "permissions", type: "address[]" },
|
|
36317
|
+
{ name: "nonce", type: "uint256" },
|
|
36318
|
+
{ name: "deadline", type: "uint256" }
|
|
36319
|
+
]
|
|
36320
|
+
}
|
|
36321
|
+
}, { account: safe, permissions, nonce, deadline });
|
|
36347
36322
|
await wallet.writeContract({
|
|
36348
36323
|
address: kernel,
|
|
36349
36324
|
abi: SailKernelAbi,
|
|
@@ -36362,9 +36337,7 @@ var MandateNamespace = class extends KernelNamespace {
|
|
|
36362
36337
|
return notImplemented();
|
|
36363
36338
|
}
|
|
36364
36339
|
deployAndAttachClone(_safe, _impl, _initData, _salt, _signer) {
|
|
36365
|
-
throw new Error(
|
|
36366
|
-
"deployAndAttachClone is not yet implemented in the SDK.\nUse `sailor mandate attach --address <impl>` to attach a clone template via the factory."
|
|
36367
|
-
);
|
|
36340
|
+
throw new Error("deployAndAttachClone is not yet implemented in the SDK.\nUse `sailor mandate attach --address <impl>` to attach a clone template via the factory.");
|
|
36368
36341
|
}
|
|
36369
36342
|
async list(safe) {
|
|
36370
36343
|
const kernel = this.requireKernel();
|
|
@@ -36434,12 +36407,11 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36434
36407
|
let latest = 0n;
|
|
36435
36408
|
for (let i = 0; i < tries; i++) {
|
|
36436
36409
|
latest = await this.readManagerNonce(kernel, safe);
|
|
36437
|
-
if (latest >= expected)
|
|
36410
|
+
if (latest >= expected)
|
|
36411
|
+
return latest;
|
|
36438
36412
|
await delay(1e3);
|
|
36439
36413
|
}
|
|
36440
|
-
throw new Error(
|
|
36441
|
-
`Manager nonce for ${safe} did not reach ${expected} after ${tries}s (last seen ${latest}). The prior dispatch may not have mined, or the RPC endpoint is lagging. Retry, or pass an explicit nonce via options.nonce.`
|
|
36442
|
-
);
|
|
36414
|
+
throw new Error(`Manager nonce for ${safe} did not reach ${expected} after ${tries}s (last seen ${latest}). The prior dispatch may not have mined, or the RPC endpoint is lagging. Retry, or pass an explicit nonce via options.nonce.`);
|
|
36443
36415
|
}
|
|
36444
36416
|
/**
|
|
36445
36417
|
* Determine the nonce to sign with. Honors an explicit `options.nonce`
|
|
@@ -36448,7 +36420,8 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36448
36420
|
* dispatch on this account) before reading the live value.
|
|
36449
36421
|
*/
|
|
36450
36422
|
async resolveNonce(kernel, safe, options) {
|
|
36451
|
-
if (options?.nonce !== void 0)
|
|
36423
|
+
if (options?.nonce !== void 0)
|
|
36424
|
+
return options.nonce;
|
|
36452
36425
|
const expected = options?.awaitNonce ?? this.nextNonce.get(this.nonceKey(kernel, safe));
|
|
36453
36426
|
if (expected !== void 0) {
|
|
36454
36427
|
return this.waitForManagerNonce(kernel, safe, expected);
|
|
@@ -36540,9 +36513,7 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36540
36513
|
const deadline = defaultDeadline();
|
|
36541
36514
|
const caps = await this.capabilities();
|
|
36542
36515
|
if (caps.dispatchModel === "conjunctive") {
|
|
36543
|
-
throw new Error(
|
|
36544
|
-
`Batch dispatch is not supported by the conjunctive kernel at ${kernel} (it has no dispatchBatch). Submit calls individually via dispatch.single, ensuring the manager nonce advances between them.`
|
|
36545
|
-
);
|
|
36516
|
+
throw new Error(`Batch dispatch is not supported by the conjunctive kernel at ${kernel} (it has no dispatchBatch). Submit calls individually via dispatch.single, ensuring the manager nonce advances between them.`);
|
|
36546
36517
|
}
|
|
36547
36518
|
const nonce = await this.publicClient.readContract({
|
|
36548
36519
|
address: kernel,
|
|
@@ -36550,25 +36521,19 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36550
36521
|
functionName: "batchNonces",
|
|
36551
36522
|
args: [safe]
|
|
36552
36523
|
});
|
|
36553
|
-
const callsHash = keccak256(
|
|
36554
|
-
|
|
36555
|
-
|
|
36556
|
-
|
|
36557
|
-
|
|
36558
|
-
|
|
36559
|
-
|
|
36560
|
-
|
|
36561
|
-
|
|
36562
|
-
|
|
36563
|
-
|
|
36564
|
-
|
|
36565
|
-
|
|
36566
|
-
{ name: "deadline", type: "uint256" }
|
|
36567
|
-
]
|
|
36568
|
-
}
|
|
36569
|
-
},
|
|
36570
|
-
{ account: safe, permission, callsHash, nonce, deadline }
|
|
36571
|
-
);
|
|
36524
|
+
const callsHash = keccak256(encodeAbiParameters([{ type: "tuple[]", components: CALL_COMPONENTS }], [calls]));
|
|
36525
|
+
const managerSig = await manager.signTyped(sailKernelDomain({ chainId: this.config.chainId, kernel }), {
|
|
36526
|
+
primaryType: "DispatchBatch",
|
|
36527
|
+
types: {
|
|
36528
|
+
DispatchBatch: [
|
|
36529
|
+
{ name: "account", type: "address" },
|
|
36530
|
+
{ name: "permission", type: "address" },
|
|
36531
|
+
{ name: "callsHash", type: "bytes32" },
|
|
36532
|
+
{ name: "nonce", type: "uint256" },
|
|
36533
|
+
{ name: "deadline", type: "uint256" }
|
|
36534
|
+
]
|
|
36535
|
+
}
|
|
36536
|
+
}, { account: safe, permission, callsHash, nonce, deadline });
|
|
36572
36537
|
let txHash;
|
|
36573
36538
|
try {
|
|
36574
36539
|
txHash = await wallet.writeContract({
|
|
@@ -36593,9 +36558,7 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36593
36558
|
const kernel = this.requireKernel();
|
|
36594
36559
|
const caps = await this.capabilities();
|
|
36595
36560
|
if (caps.dispatchModel === "conjunctive") {
|
|
36596
|
-
throw new Error(
|
|
36597
|
-
`Dry-run preview is not supported by the conjunctive kernel at ${kernel} (it has no previewBatch view). Validate calls off-chain against each registered permission's evaluate() logic, or simulate the dispatch.single tx instead.`
|
|
36598
|
-
);
|
|
36561
|
+
throw new Error(`Dry-run preview is not supported by the conjunctive kernel at ${kernel} (it has no previewBatch view). Validate calls off-chain against each registered permission's evaluate() logic, or simulate the dispatch.single tx instead.`);
|
|
36599
36562
|
}
|
|
36600
36563
|
const [approved, reason] = await this.publicClient.readContract({
|
|
36601
36564
|
address: kernel,
|
|
@@ -36607,6 +36570,7 @@ var DispatchNamespace = class extends KernelNamespace {
|
|
|
36607
36570
|
}
|
|
36608
36571
|
};
|
|
36609
36572
|
var StrategyNamespace = class extends KernelNamespace {
|
|
36573
|
+
dispatch;
|
|
36610
36574
|
constructor(publicClient, config, dispatch, walletClient) {
|
|
36611
36575
|
super(publicClient, config, walletClient);
|
|
36612
36576
|
this.dispatch = dispatch;
|
|
@@ -36624,17 +36588,13 @@ var StrategyNamespace = class extends KernelNamespace {
|
|
|
36624
36588
|
const slippage = params.slippage ?? DEFAULT_SLIPPAGE;
|
|
36625
36589
|
const router = params.router ?? LIFI_ROUTERS[this.config.chainId];
|
|
36626
36590
|
if (!router) {
|
|
36627
|
-
throw new Error(
|
|
36628
|
-
`No LiFi router known for chain ${this.config.chainId}. Pass params.router explicitly.`
|
|
36629
|
-
);
|
|
36591
|
+
throw new Error(`No LiFi router known for chain ${this.config.chainId}. Pass params.router explicitly.`);
|
|
36630
36592
|
}
|
|
36631
36593
|
const caps = await this.capabilities();
|
|
36632
36594
|
const swapPermission = params.swapPermission ?? router;
|
|
36633
36595
|
const approvePermission = params.approvePermission ?? params.swapPermission ?? router;
|
|
36634
36596
|
if (caps.dispatchModel === "selective" && !params.swapPermission) {
|
|
36635
|
-
throw new Error(
|
|
36636
|
-
"This kernel uses the selective dispatch model \u2014 params.swapPermission is required (the permission that authorizes the swap)."
|
|
36637
|
-
);
|
|
36597
|
+
throw new Error("This kernel uses the selective dispatch model \u2014 params.swapPermission is required (the permission that authorizes the swap).");
|
|
36638
36598
|
}
|
|
36639
36599
|
const quote = await fetchLifiQuote({
|
|
36640
36600
|
chainId: this.config.chainId,
|
|
@@ -36654,19 +36614,9 @@ var StrategyNamespace = class extends KernelNamespace {
|
|
|
36654
36614
|
let approve;
|
|
36655
36615
|
if (allowance < params.amount) {
|
|
36656
36616
|
const approveAmount = params.approveAmount ?? params.amount;
|
|
36657
|
-
approve = await this.dispatch.single(
|
|
36658
|
-
safe,
|
|
36659
|
-
approvePermission,
|
|
36660
|
-
{ target: params.from, value: 0n, data: encodeApprove(router, approveAmount) },
|
|
36661
|
-
manager
|
|
36662
|
-
);
|
|
36617
|
+
approve = await this.dispatch.single(safe, approvePermission, { target: params.from, value: 0n, data: encodeApprove(router, approveAmount) }, manager);
|
|
36663
36618
|
}
|
|
36664
|
-
const swap = await this.dispatch.single(
|
|
36665
|
-
safe,
|
|
36666
|
-
swapPermission,
|
|
36667
|
-
{ target: quote.target, value: quote.value, data: quote.data },
|
|
36668
|
-
manager
|
|
36669
|
-
);
|
|
36619
|
+
const swap = await this.dispatch.single(safe, swapPermission, { target: quote.target, value: quote.value, data: quote.data }, manager);
|
|
36670
36620
|
return {
|
|
36671
36621
|
swap,
|
|
36672
36622
|
approve,
|
|
@@ -36786,7 +36736,7 @@ var SailorClient = class _SailorClient {
|
|
|
36786
36736
|
}
|
|
36787
36737
|
};
|
|
36788
36738
|
|
|
36789
|
-
// ../sdk/
|
|
36739
|
+
// ../sdk/dist/keyring.js
|
|
36790
36740
|
var import_node_crypto = require("node:crypto");
|
|
36791
36741
|
var import_node_fs = require("node:fs");
|
|
36792
36742
|
init_esm2();
|
|
@@ -37468,7 +37418,7 @@ function mnemonicToAccount(mnemonic, { passphrase, ...hdKeyOpts } = {}) {
|
|
|
37468
37418
|
return hdKeyToAccount(HDKey.fromMasterSeed(seed), hdKeyOpts);
|
|
37469
37419
|
}
|
|
37470
37420
|
|
|
37471
|
-
// ../sdk/
|
|
37421
|
+
// ../sdk/dist/keyring.js
|
|
37472
37422
|
var SCRYPT_N = 1 << 18;
|
|
37473
37423
|
var SCRYPT_R = 8;
|
|
37474
37424
|
var SCRYPT_P = 1;
|
|
@@ -37486,16 +37436,11 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
37486
37436
|
this.address = account2.address;
|
|
37487
37437
|
this.privateKey = options.privateKey;
|
|
37488
37438
|
} else if (options.type === "mnemonic") {
|
|
37489
|
-
const account2 = mnemonicToAccount(
|
|
37490
|
-
options.mnemonic,
|
|
37491
|
-
options.derivationPath ? { path: options.derivationPath } : void 0
|
|
37492
|
-
);
|
|
37439
|
+
const account2 = mnemonicToAccount(options.mnemonic, options.derivationPath ? { path: options.derivationPath } : void 0);
|
|
37493
37440
|
this.account = account2;
|
|
37494
37441
|
this.address = account2.address;
|
|
37495
37442
|
} else {
|
|
37496
|
-
throw new Error(
|
|
37497
|
-
"keystore decryption not implemented \u2014 use type: 'privateKey' or type: 'mnemonic' instead"
|
|
37498
|
-
);
|
|
37443
|
+
throw new Error("keystore decryption not implemented \u2014 use type: 'privateKey' or type: 'mnemonic' instead");
|
|
37499
37444
|
}
|
|
37500
37445
|
}
|
|
37501
37446
|
/** Returns a lightweight signer stub for read-only contexts where the key is not available. */
|
|
@@ -37525,9 +37470,7 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
37525
37470
|
}
|
|
37526
37471
|
const { n, r, p, dklen, salt } = crypto3.kdfparams;
|
|
37527
37472
|
if (n < 1 << 14) {
|
|
37528
|
-
throw new Error(
|
|
37529
|
-
`Keystore scrypt N=${n} is below the minimum accepted value (16384). Refusing to decrypt.`
|
|
37530
|
-
);
|
|
37473
|
+
throw new Error(`Keystore scrypt N=${n} is below the minimum accepted value (16384). Refusing to decrypt.`);
|
|
37531
37474
|
}
|
|
37532
37475
|
if (r < 8) {
|
|
37533
37476
|
throw new Error(`Keystore scrypt r=${r} is below the minimum accepted value (8).`);
|
|
@@ -37545,11 +37488,7 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
37545
37488
|
if (computedMac.length !== storedMac.length || !(0, import_node_crypto.timingSafeEqual)(computedMac, storedMac)) {
|
|
37546
37489
|
throw new Error("Invalid password or corrupt keystore");
|
|
37547
37490
|
}
|
|
37548
|
-
const decipher = (0, import_node_crypto.createDecipheriv)(
|
|
37549
|
-
"aes-128-ctr",
|
|
37550
|
-
derived.subarray(0, 16),
|
|
37551
|
-
Buffer.from(crypto3.cipherparams.iv, "hex")
|
|
37552
|
-
);
|
|
37491
|
+
const decipher = (0, import_node_crypto.createDecipheriv)("aes-128-ctr", derived.subarray(0, 16), Buffer.from(crypto3.cipherparams.iv, "hex"));
|
|
37553
37492
|
const pkBytes = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
37554
37493
|
return _LocalKeyring.fromPrivateKey(`0x${pkBytes.toString("hex")}`);
|
|
37555
37494
|
}
|
|
@@ -37587,9 +37526,7 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
37587
37526
|
/** Exports the private key as an encrypted keystore JSON (scrypt + aes-128-ctr, geth v3). */
|
|
37588
37527
|
async exportKeystore(password) {
|
|
37589
37528
|
if (!this.privateKey) {
|
|
37590
|
-
throw new Error(
|
|
37591
|
-
"Private key unavailable \u2014 only privateKey/generated keyrings can be exported"
|
|
37592
|
-
);
|
|
37529
|
+
throw new Error("Private key unavailable \u2014 only privateKey/generated keyrings can be exported");
|
|
37593
37530
|
}
|
|
37594
37531
|
const salt = (0, import_node_crypto.randomBytes)(32);
|
|
37595
37532
|
const derived = (0, import_node_crypto.scryptSync)(password, salt, SCRYPT_DKLEN, {
|
|
@@ -37626,7 +37563,7 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
37626
37563
|
}
|
|
37627
37564
|
};
|
|
37628
37565
|
|
|
37629
|
-
// ../sdk/
|
|
37566
|
+
// ../sdk/dist/abis/SailGovernance.js
|
|
37630
37567
|
var SailGovernanceAbi = [
|
|
37631
37568
|
{
|
|
37632
37569
|
type: "function",
|
|
@@ -37672,7 +37609,7 @@ var SailGovernanceAbi = [
|
|
|
37672
37609
|
}
|
|
37673
37610
|
];
|
|
37674
37611
|
|
|
37675
|
-
// ../sdk/
|
|
37612
|
+
// ../sdk/dist/safe.js
|
|
37676
37613
|
init_esm2();
|
|
37677
37614
|
var setManagerAbi = [
|
|
37678
37615
|
{
|
|
@@ -37762,10 +37699,7 @@ function buildSafeSetupInitializer(params) {
|
|
|
37762
37699
|
});
|
|
37763
37700
|
}
|
|
37764
37701
|
function buildApprovedHashSignature(owner2) {
|
|
37765
|
-
return encodePacked(
|
|
37766
|
-
["bytes32", "bytes32", "uint8"],
|
|
37767
|
-
[pad(owner2, { size: 32 }), pad("0x", { size: 32 }), 1]
|
|
37768
|
-
);
|
|
37702
|
+
return encodePacked(["bytes32", "bytes32", "uint8"], [pad(owner2, { size: 32 }), pad("0x", { size: 32 }), 1]);
|
|
37769
37703
|
}
|
|
37770
37704
|
var safeProxyFactoryAbi = [
|
|
37771
37705
|
{
|
|
@@ -37778,15 +37712,11 @@ var safeProxyFactoryAbi = [
|
|
|
37778
37712
|
];
|
|
37779
37713
|
function computeSafeProxyAddress(params) {
|
|
37780
37714
|
const { initializer, saltNonce, proxyCreationCode } = params;
|
|
37781
|
-
const initCodeHash = keccak256(
|
|
37782
|
-
|
|
37783
|
-
|
|
37784
|
-
|
|
37785
|
-
|
|
37786
|
-
);
|
|
37787
|
-
const salt = keccak256(
|
|
37788
|
-
encodePacked(["bytes32", "uint256"], [keccak256(initializer), saltNonce])
|
|
37789
|
-
);
|
|
37715
|
+
const initCodeHash = keccak256(concat([
|
|
37716
|
+
proxyCreationCode,
|
|
37717
|
+
encodeAbiParameters([{ type: "address" }], [SAFE_V141.singletonL2])
|
|
37718
|
+
]));
|
|
37719
|
+
const salt = keccak256(encodePacked(["bytes32", "uint256"], [keccak256(initializer), saltNonce]));
|
|
37790
37720
|
return getCreate2Address({
|
|
37791
37721
|
from: SAFE_V141.proxyFactory,
|
|
37792
37722
|
salt,
|
|
@@ -37795,20 +37725,13 @@ function computeSafeProxyAddress(params) {
|
|
|
37795
37725
|
}
|
|
37796
37726
|
function computeKernelBoundSalt(params) {
|
|
37797
37727
|
const { saltNonce, deployer, permissionSigner, manager, feePolicy } = params;
|
|
37798
|
-
return BigInt(
|
|
37799
|
-
|
|
37800
|
-
|
|
37801
|
-
|
|
37802
|
-
|
|
37803
|
-
|
|
37804
|
-
|
|
37805
|
-
{ type: "address" },
|
|
37806
|
-
{ type: "address" }
|
|
37807
|
-
],
|
|
37808
|
-
[saltNonce, deployer, permissionSigner, manager, feePolicy]
|
|
37809
|
-
)
|
|
37810
|
-
)
|
|
37811
|
-
);
|
|
37728
|
+
return BigInt(keccak256(encodeAbiParameters([
|
|
37729
|
+
{ type: "uint256" },
|
|
37730
|
+
{ type: "address" },
|
|
37731
|
+
{ type: "address" },
|
|
37732
|
+
{ type: "address" },
|
|
37733
|
+
{ type: "address" }
|
|
37734
|
+
], [saltNonce, deployer, permissionSigner, manager, feePolicy])));
|
|
37812
37735
|
}
|
|
37813
37736
|
function computeSailSmaAddress(params) {
|
|
37814
37737
|
const boundSalt = computeKernelBoundSalt(params);
|
|
@@ -37855,7 +37778,7 @@ function buildSetManagerExecTransaction(params) {
|
|
|
37855
37778
|
return { to: params.safe, data };
|
|
37856
37779
|
}
|
|
37857
37780
|
|
|
37858
|
-
// ../sdk/
|
|
37781
|
+
// ../sdk/dist/discovery.js
|
|
37859
37782
|
var SAFE_TX_SERVICE_SLUGS = {
|
|
37860
37783
|
1: "eth",
|
|
37861
37784
|
100: "gno",
|
|
@@ -37883,7 +37806,7 @@ async function discoverSafesForOwner(owner2, chainId) {
|
|
|
37883
37806
|
return data.safes ?? [];
|
|
37884
37807
|
}
|
|
37885
37808
|
|
|
37886
|
-
// ../sdk/
|
|
37809
|
+
// ../sdk/dist/fees.js
|
|
37887
37810
|
function min(a, b) {
|
|
37888
37811
|
return a < b ? a : b;
|
|
37889
37812
|
}
|
|
@@ -37919,7 +37842,7 @@ async function estimatePermissionFee(publicClient, governance, permission) {
|
|
|
37919
37842
|
}
|
|
37920
37843
|
}
|
|
37921
37844
|
|
|
37922
|
-
// ../sdk/
|
|
37845
|
+
// ../sdk/dist/intelligence.js
|
|
37923
37846
|
var SAIL_INTELLIGENCE_BASE_URL = "https://api.sail.money";
|
|
37924
37847
|
var SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
|
|
37925
37848
|
|