@dev.sail.money/sailor 1.3.0-208 → 1.3.0-210
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/package.json +1 -1
- package/packages/cli/dist/index.cjs +166 -100
- package/packages/cli/dist/server.cjs +1256 -48
- package/packages/sdk/dist/intelligence.d.ts +1 -1
- package/packages/sdk/dist/intelligence.js +1 -1
- package/packages/sdk/dist/signing.d.ts +29 -0
- package/packages/sdk/dist/signing.d.ts.map +1 -1
- package/packages/ui/dist/assets/{add-CfTRVkh-.js → add-CLs0-B0p.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-VZChJwJf.js → all-wallets-CDOk28sj.js} +1 -1
- package/packages/ui/dist/assets/{app-store-CuFK1xBJ.js → app-store-DVzpi1qN.js} +1 -1
- package/packages/ui/dist/assets/{apple-DETqVk_I.js → apple-C9U9iH1l.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-CnNYsZfo.js → arrow-bottom-DjQ4jGMe.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-DZwJF3UO.js → arrow-bottom-circle-jxial9Si.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-CBnisTAa.js → arrow-left-BjAyI8D1.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-DA3Y1Yzf.js → arrow-right-BlFO4Tcx.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-e8-FE_fo.js → arrow-top-DJ3oh3DH.js} +1 -1
- package/packages/ui/dist/assets/{bank-DdwromQn.js → bank-B98it1qN.js} +1 -1
- package/packages/ui/dist/assets/{basic-DLYER2un.js → basic-DsgeyPNu.js} +1 -1
- package/packages/ui/dist/assets/{browser-BJNrv4Zj.js → browser-j4vCeHwE.js} +1 -1
- package/packages/ui/dist/assets/{card-DB6j4DSk.js → card-CzxbMvEd.js} +1 -1
- package/packages/ui/dist/assets/{ccip-Dy_s323Y.js → ccip-U9yiu_EK.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-Db9oicko.js → checkmark-D5sWBbk3.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-D9MgGHxv.js → checkmark-bold-BW6w3KCC.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-IGUDJRKN.js → chevron-bottom-BbHhmTQq.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-CWpfP-rw.js → chevron-left-D8BDH4Wo.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-BejY0vtE.js → chevron-right-BQuQk5zc.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-BaUN0LGF.js → chevron-top-1oeSXkx4.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-fox1tIqs.js → chrome-store-B1OMtzC-.js} +1 -1
- package/packages/ui/dist/assets/{clock-DlqB4Ehi.js → clock-e0HueehS.js} +1 -1
- package/packages/ui/dist/assets/{close-03e52feP.js → close-Cy1ytr26.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-BO3nv4hx.js → coinPlaceholder-DqJu3ZPV.js} +1 -1
- package/packages/ui/dist/assets/{compass-CIqPRE0k.js → compass-XDz_N2Hg.js} +1 -1
- package/packages/ui/dist/assets/{copy-D5cJBwZq.js → copy-DmDo3Nob.js} +1 -1
- package/packages/ui/dist/assets/{core-COelOg3-.js → core-DbkMGSYW.js} +3 -3
- package/packages/ui/dist/assets/cursor-DRFqL8nZ.js +3 -0
- package/packages/ui/dist/assets/{cursor-transparent-Cvbiq9Br.js → cursor-transparent-DF2aA10D.js} +1 -1
- package/packages/ui/dist/assets/{desktop-Dp2wtF3n.js → desktop-CVydOWLn.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-Dx_IGM73.js → disconnect-BuN2Whnz.js} +1 -1
- package/packages/ui/dist/assets/{discord-Cxryn14a.js → discord-DMNPvTB2.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-D8aNXWCx.js → etherscan-CacW-93f.js} +1 -1
- package/packages/ui/dist/assets/{events-DR6OOHz2.js → events-CZkVDFih.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-BBCaPLj1.js → exclamation-triangle-B26hIvqO.js} +1 -1
- package/packages/ui/dist/assets/{extension-bACRNBl5.js → extension-B7rI0gv7.js} +1 -1
- package/packages/ui/dist/assets/{external-link-BZRqHo3q.js → external-link-CX8skCbH.js} +1 -1
- package/packages/ui/dist/assets/{facebook-TAdUitg4.js → facebook-BDqbE6kl.js} +1 -1
- package/packages/ui/dist/assets/{fallback-DGiwrboN.js → fallback-DWQYKf3l.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-YzdobBfR.js → farcaster-zQ3oQzZ8.js} +1 -1
- package/packages/ui/dist/assets/{filters-CT-xLEoI.js → filters-DCglZYsM.js} +1 -1
- package/packages/ui/dist/assets/{github-DxPBbmEL.js → github-BH-BYjss.js} +1 -1
- package/packages/ui/dist/assets/{google-B0TMgFhK.js → google-DYFWxZbC.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-Be6sRPTw.js → help-circle-BXH_DtZ_.js} +1 -1
- package/packages/ui/dist/assets/{id-Dem_akbE.js → id-Dr2yTeX1.js} +1 -1
- package/packages/ui/dist/assets/{image-CszBzFVG.js → image-DeJey1Eg.js} +1 -1
- package/packages/ui/dist/assets/{index-DXqj6oYp.js → index-BP-UuQ8g.js} +1 -1
- package/packages/ui/dist/assets/{index-DAawBKd2.js → index-BksbyFjf.js} +1 -1
- package/packages/ui/dist/assets/{index-homh6mWC.js → index-C55-Ne92.js} +1 -1
- package/packages/ui/dist/assets/{index-Cb5eBfrN.js → index-D6_Zei-R.js} +71 -71
- package/packages/ui/dist/assets/{index-C2n9XvGG.js → index-DVjAiPHI.js} +3 -3
- package/packages/ui/dist/assets/{index-B0FDHAiK.js → index-uSdXE5b_.js} +1 -1
- package/packages/ui/dist/assets/{index.es-DJgl78dj.js → index.es-dZlNPpfR.js} +4 -4
- package/packages/ui/dist/assets/{info-BimGN4NK.js → info-B91pD5Rw.js} +1 -1
- package/packages/ui/dist/assets/{info-circle-lnKEJu2R.js → info-circle-CySl3_on.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-DS1vEMce.js → lightbulb-wwG8LQLo.js} +1 -1
- package/packages/ui/dist/assets/{mail-DoS3Wibk.js → mail-D617YZ8y.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-CMIU3BwW.js → metamask-sdk-RbLbxUgF.js} +1 -1
- package/packages/ui/dist/assets/{mobile-B09Cs95_.js → mobile-CD9KlA0m.js} +1 -1
- package/packages/ui/dist/assets/{more-CLBZT8WI.js → more-BQ_rpPXo.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-C45Cp8rY.js → network-placeholder-BA7nl9e6.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-CAVclL3u.js → nftPlaceholder-D1EaaeDn.js} +1 -1
- package/packages/ui/dist/assets/{off-CwE8HoZ0.js → off-DnGG35_w.js} +1 -1
- package/packages/ui/dist/assets/{parseSignature-kmMNHYjl.js → parseSignature-E29x8poM.js} +1 -1
- package/packages/ui/dist/assets/{play-store-DiFF_6n4.js → play-store-C5u2FvYB.js} +1 -1
- package/packages/ui/dist/assets/{plus-aygpl_pZ.js → plus-CM4xJkvI.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-DpIS4fFK.js → qr-code-kM3FUIdR.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-Qk2N74JE.js → recycle-horizontal-DWrRWIBM.js} +1 -1
- package/packages/ui/dist/assets/{refresh-sWRq9Vnt.js → refresh-CztbjK2d.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-YQxBa9i9.js → reown-logo-DUHEIodF.js} +1 -1
- package/packages/ui/dist/assets/{search-Bt6BSPcC.js → search-BJtb4mn1.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-BUh3OoFd.js → secp256k1-BjrTZpQx.js} +1 -1
- package/packages/ui/dist/assets/{send-ym-Fn17O.js → send-B3_kavG1.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-fBE2gnqc.js → swapHorizontal-BrF9POiv.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-CekQ22FJ.js → swapHorizontalBold-Dgf8OjXj.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-B9BI9ovU.js → swapHorizontalMedium-C6wX0JZj.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-DOC75mBH.js → swapHorizontalRoundedBold-DTAVw6oF.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-CSQAPH0z.js → swapVertical-KGlTFNoi.js} +1 -1
- package/packages/ui/dist/assets/{telegram-BPjzFxKU.js → telegram-DnLrK-4y.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-DP6hdXH8.js → three-dots-C6_oMJfw.js} +1 -1
- package/packages/ui/dist/assets/{twitch-CgHMd-f3.js → twitch-DvPqPD4f.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-BrR8ynXm.js → twitterIcon-BZdk82Am.js} +1 -1
- package/packages/ui/dist/assets/{verify-D35D7Wtv.js → verify-CbESD5G0.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-DCP5CT59.js → verify-filled-BRjTrLxw.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-B-ZptWk0.js → w3m-modal-D9b2TGHc.js} +1 -1
- package/packages/ui/dist/assets/{wallet-Cnb4dkr3.js → wallet-B87E5UId.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-CCzk0PqU.js → wallet-placeholder-DmssSbYf.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-f6tQZYRi.js → walletconnect-CZkLKWMZ.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-zxMagvfx.js → warning-circle-BPTpHB1P.js} +1 -1
- package/packages/ui/dist/assets/{x-D0nEGO1G.js → x-D_dEtEDU.js} +1 -1
- package/packages/ui/dist/index.html +1 -1
- package/packages/ui/dist/assets/cursor-CRb7R3u1.js +0 -3
|
@@ -15943,7 +15943,7 @@ var require_get_intrinsic = __commonJS({
|
|
|
15943
15943
|
var abs = require_abs();
|
|
15944
15944
|
var floor = require_floor();
|
|
15945
15945
|
var max = require_max();
|
|
15946
|
-
var
|
|
15946
|
+
var min2 = require_min();
|
|
15947
15947
|
var pow = require_pow();
|
|
15948
15948
|
var round = require_round();
|
|
15949
15949
|
var sign3 = require_sign();
|
|
@@ -16057,7 +16057,7 @@ var require_get_intrinsic = __commonJS({
|
|
|
16057
16057
|
"%Math.abs%": abs,
|
|
16058
16058
|
"%Math.floor%": floor,
|
|
16059
16059
|
"%Math.max%": max,
|
|
16060
|
-
"%Math.min%":
|
|
16060
|
+
"%Math.min%": min2,
|
|
16061
16061
|
"%Math.pow%": pow,
|
|
16062
16062
|
"%Math.round%": round,
|
|
16063
16063
|
"%Math.sign%": sign3,
|
|
@@ -22055,12 +22055,12 @@ var require_cookie = __commonJS({
|
|
|
22055
22055
|
} while (++index2 < max);
|
|
22056
22056
|
return max;
|
|
22057
22057
|
}
|
|
22058
|
-
function endIndex(str, index2,
|
|
22059
|
-
while (index2 >
|
|
22058
|
+
function endIndex(str, index2, min2) {
|
|
22059
|
+
while (index2 > min2) {
|
|
22060
22060
|
var code = str.charCodeAt(--index2);
|
|
22061
22061
|
if (code !== 32 && code !== 9) return index2 + 1;
|
|
22062
22062
|
}
|
|
22063
|
-
return
|
|
22063
|
+
return min2;
|
|
22064
22064
|
}
|
|
22065
22065
|
function serialize(name, val, opt) {
|
|
22066
22066
|
var enc = opt && opt.encode || encodeURIComponent;
|
|
@@ -26953,8 +26953,8 @@ var init_encoding = __esm({
|
|
|
26953
26953
|
"../../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/errors/encoding.js"() {
|
|
26954
26954
|
init_base();
|
|
26955
26955
|
IntegerOutOfRangeError = class extends BaseError {
|
|
26956
|
-
constructor({ max, min, signed, size: size6, value }) {
|
|
26957
|
-
super(`Number "${value}" is not in safe ${size6 ? `${size6 * 8}-bit ${signed ? "signed" : "unsigned"} ` : ""}integer range ${max ? `(${
|
|
26956
|
+
constructor({ max, min: min2, signed, size: size6, value }) {
|
|
26957
|
+
super(`Number "${value}" is not in safe ${size6 ? `${size6 * 8}-bit ${signed ? "signed" : "unsigned"} ` : ""}integer range ${max ? `(${min2} to ${max})` : `(above ${min2})`}`, { name: "IntegerOutOfRangeError" });
|
|
26958
26958
|
}
|
|
26959
26959
|
};
|
|
26960
26960
|
SizeOverflowError = class extends BaseError {
|
|
@@ -27265,9 +27265,9 @@ function aexists(instance, checkFinished = true) {
|
|
|
27265
27265
|
}
|
|
27266
27266
|
function aoutput(out, instance) {
|
|
27267
27267
|
abytes(out);
|
|
27268
|
-
const
|
|
27269
|
-
if (out.length <
|
|
27270
|
-
throw new Error("digestInto() expects output buffer of length at least " +
|
|
27268
|
+
const min2 = instance.outputLen;
|
|
27269
|
+
if (out.length < min2) {
|
|
27270
|
+
throw new Error("digestInto() expects output buffer of length at least " + min2);
|
|
27271
27271
|
}
|
|
27272
27272
|
}
|
|
27273
27273
|
function u32(arr) {
|
|
@@ -28063,11 +28063,11 @@ function encodeBool(value) {
|
|
|
28063
28063
|
function encodeNumber(value, { signed, size: size6 = 256 }) {
|
|
28064
28064
|
if (typeof size6 === "number") {
|
|
28065
28065
|
const max = 2n ** (BigInt(size6) - (signed ? 1n : 0n)) - 1n;
|
|
28066
|
-
const
|
|
28067
|
-
if (value > max || value <
|
|
28066
|
+
const min2 = signed ? -max - 1n : 0n;
|
|
28067
|
+
if (value > max || value < min2)
|
|
28068
28068
|
throw new IntegerOutOfRangeError({
|
|
28069
28069
|
max: max.toString(),
|
|
28070
|
-
min:
|
|
28070
|
+
min: min2.toString(),
|
|
28071
28071
|
signed,
|
|
28072
28072
|
size: size6 / 8,
|
|
28073
28073
|
value: value.toString()
|
|
@@ -29898,12 +29898,12 @@ function utf8ToBytes2(str) {
|
|
|
29898
29898
|
throw new Error("string expected");
|
|
29899
29899
|
return new Uint8Array(new TextEncoder().encode(str));
|
|
29900
29900
|
}
|
|
29901
|
-
function inRange(n,
|
|
29902
|
-
return isPosBig(n) && isPosBig(
|
|
29901
|
+
function inRange(n, min2, max) {
|
|
29902
|
+
return isPosBig(n) && isPosBig(min2) && isPosBig(max) && min2 <= n && n < max;
|
|
29903
29903
|
}
|
|
29904
|
-
function aInRange(title, n,
|
|
29905
|
-
if (!inRange(n,
|
|
29906
|
-
throw new Error("expected valid " + title + ": " +
|
|
29904
|
+
function aInRange(title, n, min2, max) {
|
|
29905
|
+
if (!inRange(n, min2, max))
|
|
29906
|
+
throw new Error("expected valid " + title + ": " + min2 + " <= n < " + max + ", got " + n);
|
|
29907
29907
|
}
|
|
29908
29908
|
function bitLen(n) {
|
|
29909
29909
|
let len;
|
|
@@ -34260,8 +34260,8 @@ var init_encoding2 = __esm({
|
|
|
34260
34260
|
"../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/errors/encoding.js"() {
|
|
34261
34261
|
init_base2();
|
|
34262
34262
|
IntegerOutOfRangeError2 = class extends BaseError3 {
|
|
34263
|
-
constructor({ max, min, signed, size: size6, value }) {
|
|
34264
|
-
super(`Number "${value}" is not in safe ${size6 ? `${size6 * 8}-bit ${signed ? "signed" : "unsigned"} ` : ""}integer range ${max ? `(${
|
|
34263
|
+
constructor({ max, min: min2, signed, size: size6, value }) {
|
|
34264
|
+
super(`Number "${value}" is not in safe ${size6 ? `${size6 * 8}-bit ${signed ? "signed" : "unsigned"} ` : ""}integer range ${max ? `(${min2} to ${max})` : `(above ${min2})`}`, { name: "IntegerOutOfRangeError" });
|
|
34265
34265
|
}
|
|
34266
34266
|
};
|
|
34267
34267
|
InvalidBytesBooleanError = class extends BaseError3 {
|
|
@@ -34990,11 +34990,11 @@ function encodeBool2(value) {
|
|
|
34990
34990
|
function encodeNumber2(value, { signed, size: size6 = 256 }) {
|
|
34991
34991
|
if (typeof size6 === "number") {
|
|
34992
34992
|
const max = 2n ** (BigInt(size6) - (signed ? 1n : 0n)) - 1n;
|
|
34993
|
-
const
|
|
34994
|
-
if (value > max || value <
|
|
34993
|
+
const min2 = signed ? -max - 1n : 0n;
|
|
34994
|
+
if (value > max || value < min2)
|
|
34995
34995
|
throw new IntegerOutOfRangeError2({
|
|
34996
34996
|
max: max.toString(),
|
|
34997
|
-
min:
|
|
34997
|
+
min: min2.toString(),
|
|
34998
34998
|
signed,
|
|
34999
34999
|
size: size6 / 8,
|
|
35000
35000
|
value: value.toString()
|
|
@@ -38094,8 +38094,8 @@ var init_Hex = __esm({
|
|
|
38094
38094
|
encoder6 = /* @__PURE__ */ new TextEncoder();
|
|
38095
38095
|
hexes5 = /* @__PURE__ */ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, "0"));
|
|
38096
38096
|
IntegerOutOfRangeError3 = class extends BaseError4 {
|
|
38097
|
-
constructor({ max, min, signed, size: size6, value }) {
|
|
38098
|
-
super(`Number \`${value}\` is not in safe${size6 ? ` ${size6 * 8}-bit` : ""}${signed ? " signed" : " unsigned"} integer range ${max ? `(\`${
|
|
38097
|
+
constructor({ max, min: min2, signed, size: size6, value }) {
|
|
38098
|
+
super(`Number \`${value}\` is not in safe${size6 ? ` ${size6 * 8}-bit` : ""}${signed ? " signed" : " unsigned"} integer range ${max ? `(\`${min2}\` to \`${max}\`)` : `(above \`${min2}\`)`}`);
|
|
38099
38099
|
Object.defineProperty(this, "name", {
|
|
38100
38100
|
enumerable: true,
|
|
38101
38101
|
configurable: true,
|
|
@@ -38597,7 +38597,7 @@ var init_contracts = __esm({
|
|
|
38597
38597
|
});
|
|
38598
38598
|
|
|
38599
38599
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/errors/chain.js
|
|
38600
|
-
var ChainDoesNotSupportContract, ClientChainNotConfiguredError, InvalidChainIdError2;
|
|
38600
|
+
var ChainDoesNotSupportContract, ChainMismatchError, ChainNotFoundError, ClientChainNotConfiguredError, InvalidChainIdError2;
|
|
38601
38601
|
var init_chain2 = __esm({
|
|
38602
38602
|
"../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/errors/chain.js"() {
|
|
38603
38603
|
init_base2();
|
|
@@ -38616,6 +38616,27 @@ var init_chain2 = __esm({
|
|
|
38616
38616
|
});
|
|
38617
38617
|
}
|
|
38618
38618
|
};
|
|
38619
|
+
ChainMismatchError = class extends BaseError3 {
|
|
38620
|
+
constructor({ chain: chain2, currentChainId }) {
|
|
38621
|
+
super(`The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain2.id} \u2013 ${chain2.name}).`, {
|
|
38622
|
+
metaMessages: [
|
|
38623
|
+
`Current Chain ID: ${currentChainId}`,
|
|
38624
|
+
`Expected Chain ID: ${chain2.id} \u2013 ${chain2.name}`
|
|
38625
|
+
],
|
|
38626
|
+
name: "ChainMismatchError"
|
|
38627
|
+
});
|
|
38628
|
+
}
|
|
38629
|
+
};
|
|
38630
|
+
ChainNotFoundError = class extends BaseError3 {
|
|
38631
|
+
constructor() {
|
|
38632
|
+
super([
|
|
38633
|
+
"No chain was provided to the request.",
|
|
38634
|
+
"Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."
|
|
38635
|
+
].join("\n"), {
|
|
38636
|
+
name: "ChainNotFoundError"
|
|
38637
|
+
});
|
|
38638
|
+
}
|
|
38639
|
+
};
|
|
38619
38640
|
ClientChainNotConfiguredError = class extends BaseError3 {
|
|
38620
38641
|
constructor() {
|
|
38621
38642
|
super("No chain was provided to the Client.", {
|
|
@@ -40679,6 +40700,52 @@ var LocalKeyring = class _LocalKeyring {
|
|
|
40679
40700
|
}
|
|
40680
40701
|
};
|
|
40681
40702
|
|
|
40703
|
+
// ../sdk/dist/abis/SailGovernance.js
|
|
40704
|
+
var SailGovernanceAbi = [
|
|
40705
|
+
{
|
|
40706
|
+
type: "function",
|
|
40707
|
+
name: "baseFee",
|
|
40708
|
+
stateMutability: "view",
|
|
40709
|
+
inputs: [],
|
|
40710
|
+
outputs: [{ type: "uint256" }]
|
|
40711
|
+
},
|
|
40712
|
+
{
|
|
40713
|
+
type: "function",
|
|
40714
|
+
name: "complexityRate",
|
|
40715
|
+
stateMutability: "view",
|
|
40716
|
+
inputs: [],
|
|
40717
|
+
outputs: [{ type: "uint256" }]
|
|
40718
|
+
},
|
|
40719
|
+
{
|
|
40720
|
+
type: "function",
|
|
40721
|
+
name: "MAX_PERMISSION_FEE_WEI",
|
|
40722
|
+
stateMutability: "view",
|
|
40723
|
+
inputs: [],
|
|
40724
|
+
outputs: [{ type: "uint256" }]
|
|
40725
|
+
},
|
|
40726
|
+
{
|
|
40727
|
+
type: "function",
|
|
40728
|
+
name: "permissionRegistrationFee",
|
|
40729
|
+
stateMutability: "view",
|
|
40730
|
+
inputs: [],
|
|
40731
|
+
outputs: [{ type: "uint256" }]
|
|
40732
|
+
},
|
|
40733
|
+
{
|
|
40734
|
+
type: "function",
|
|
40735
|
+
name: "maxPermissionsPerAccount",
|
|
40736
|
+
stateMutability: "view",
|
|
40737
|
+
inputs: [],
|
|
40738
|
+
outputs: [{ type: "uint256" }]
|
|
40739
|
+
},
|
|
40740
|
+
{
|
|
40741
|
+
type: "function",
|
|
40742
|
+
name: "isPaused",
|
|
40743
|
+
stateMutability: "view",
|
|
40744
|
+
inputs: [],
|
|
40745
|
+
outputs: [{ type: "bool" }]
|
|
40746
|
+
}
|
|
40747
|
+
];
|
|
40748
|
+
|
|
40682
40749
|
// ../sdk/dist/safe.js
|
|
40683
40750
|
init_esm();
|
|
40684
40751
|
var gnosisSafeAbi = [
|
|
@@ -40740,6 +40807,42 @@ function buildSafeSetupInitializer(params) {
|
|
|
40740
40807
|
});
|
|
40741
40808
|
}
|
|
40742
40809
|
|
|
40810
|
+
// ../sdk/dist/fees.js
|
|
40811
|
+
function min(a, b) {
|
|
40812
|
+
return a < b ? a : b;
|
|
40813
|
+
}
|
|
40814
|
+
async function estimatePermissionFee(publicClient, governance, permission) {
|
|
40815
|
+
try {
|
|
40816
|
+
const [baseFee, complexityRate, cap, code] = await Promise.all([
|
|
40817
|
+
publicClient.readContract({
|
|
40818
|
+
address: governance,
|
|
40819
|
+
abi: SailGovernanceAbi,
|
|
40820
|
+
functionName: "baseFee"
|
|
40821
|
+
}),
|
|
40822
|
+
publicClient.readContract({
|
|
40823
|
+
address: governance,
|
|
40824
|
+
abi: SailGovernanceAbi,
|
|
40825
|
+
functionName: "complexityRate"
|
|
40826
|
+
}),
|
|
40827
|
+
publicClient.readContract({
|
|
40828
|
+
address: governance,
|
|
40829
|
+
abi: SailGovernanceAbi,
|
|
40830
|
+
functionName: "MAX_PERMISSION_FEE_WEI"
|
|
40831
|
+
}),
|
|
40832
|
+
publicClient.getBytecode({ address: permission })
|
|
40833
|
+
]);
|
|
40834
|
+
const byteLength = code ? BigInt((code.length - 2) / 2) : 0n;
|
|
40835
|
+
const fee = min(baseFee, cap) + min(byteLength * complexityRate, cap);
|
|
40836
|
+
return min(fee, cap);
|
|
40837
|
+
} catch {
|
|
40838
|
+
return publicClient.readContract({
|
|
40839
|
+
address: governance,
|
|
40840
|
+
abi: SailGovernanceAbi,
|
|
40841
|
+
functionName: "permissionRegistrationFee"
|
|
40842
|
+
});
|
|
40843
|
+
}
|
|
40844
|
+
}
|
|
40845
|
+
|
|
40743
40846
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/getAction.js
|
|
40744
40847
|
function getAction(client, actionFn, name) {
|
|
40745
40848
|
const action_implicit = client[actionFn.name];
|
|
@@ -42800,6 +42903,56 @@ function watchContractEvent(client, parameters) {
|
|
|
42800
42903
|
return enablePolling ? pollContractEvent() : subscribeContractEvent();
|
|
42801
42904
|
}
|
|
42802
42905
|
|
|
42906
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/writeContract.js
|
|
42907
|
+
init_parseAccount();
|
|
42908
|
+
|
|
42909
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/errors/account.js
|
|
42910
|
+
init_base2();
|
|
42911
|
+
var AccountNotFoundError = class extends BaseError3 {
|
|
42912
|
+
constructor({ docsPath: docsPath9 } = {}) {
|
|
42913
|
+
super([
|
|
42914
|
+
"Could not find an Account to execute with this Action.",
|
|
42915
|
+
"Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."
|
|
42916
|
+
].join("\n"), {
|
|
42917
|
+
docsPath: docsPath9,
|
|
42918
|
+
docsSlug: "account",
|
|
42919
|
+
name: "AccountNotFoundError"
|
|
42920
|
+
});
|
|
42921
|
+
}
|
|
42922
|
+
};
|
|
42923
|
+
var AccountTypeNotSupportedError = class extends BaseError3 {
|
|
42924
|
+
constructor({ docsPath: docsPath9, metaMessages, type }) {
|
|
42925
|
+
super(`Account type "${type}" is not supported.`, {
|
|
42926
|
+
docsPath: docsPath9,
|
|
42927
|
+
metaMessages,
|
|
42928
|
+
name: "AccountTypeNotSupportedError"
|
|
42929
|
+
});
|
|
42930
|
+
}
|
|
42931
|
+
};
|
|
42932
|
+
|
|
42933
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/writeContract.js
|
|
42934
|
+
init_encodeFunctionData2();
|
|
42935
|
+
|
|
42936
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendTransaction.js
|
|
42937
|
+
init_parseAccount();
|
|
42938
|
+
init_base2();
|
|
42939
|
+
|
|
42940
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/chain/assertCurrentChain.js
|
|
42941
|
+
init_chain2();
|
|
42942
|
+
function assertCurrentChain({ chain: chain2, currentChainId }) {
|
|
42943
|
+
if (!chain2)
|
|
42944
|
+
throw new ChainNotFoundError();
|
|
42945
|
+
if (currentChainId !== chain2.id)
|
|
42946
|
+
throw new ChainMismatchError({ chain: chain2, currentChainId });
|
|
42947
|
+
}
|
|
42948
|
+
|
|
42949
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendTransaction.js
|
|
42950
|
+
init_concat2();
|
|
42951
|
+
init_extract();
|
|
42952
|
+
init_transactionRequest();
|
|
42953
|
+
init_lru2();
|
|
42954
|
+
init_assertRequest();
|
|
42955
|
+
|
|
42803
42956
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendRawTransaction.js
|
|
42804
42957
|
async function sendRawTransaction(client, { serializedTransaction }) {
|
|
42805
42958
|
return client.request({
|
|
@@ -42808,6 +42961,218 @@ async function sendRawTransaction(client, { serializedTransaction }) {
|
|
|
42808
42961
|
}, { retryCount: 0 });
|
|
42809
42962
|
}
|
|
42810
42963
|
|
|
42964
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendTransaction.js
|
|
42965
|
+
var supportsWalletNamespace = new LruMap2(128);
|
|
42966
|
+
async function sendTransaction(client, parameters) {
|
|
42967
|
+
const { account: account_ = client.account, assertChainId = true, chain: chain2 = client.chain, accessList, authorizationList, blobs, data, dataSuffix = typeof client.dataSuffix === "string" ? client.dataSuffix : client.dataSuffix?.value, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, type, value, ...rest } = parameters;
|
|
42968
|
+
if (typeof account_ === "undefined")
|
|
42969
|
+
throw new AccountNotFoundError({
|
|
42970
|
+
docsPath: "/docs/actions/wallet/sendTransaction"
|
|
42971
|
+
});
|
|
42972
|
+
const account = account_ ? parseAccount(account_) : null;
|
|
42973
|
+
let nonceManagerParameters;
|
|
42974
|
+
try {
|
|
42975
|
+
assertRequest(parameters);
|
|
42976
|
+
const to = await (async () => {
|
|
42977
|
+
if (parameters.to)
|
|
42978
|
+
return parameters.to;
|
|
42979
|
+
if (parameters.to === null)
|
|
42980
|
+
return void 0;
|
|
42981
|
+
if (authorizationList && authorizationList.length > 0)
|
|
42982
|
+
return await recoverAuthorizationAddress({
|
|
42983
|
+
authorization: authorizationList[0]
|
|
42984
|
+
}).catch(() => {
|
|
42985
|
+
throw new BaseError3("`to` is required. Could not infer from `authorizationList`.");
|
|
42986
|
+
});
|
|
42987
|
+
return void 0;
|
|
42988
|
+
})();
|
|
42989
|
+
if (account?.type === "json-rpc" || account === null) {
|
|
42990
|
+
let chainId;
|
|
42991
|
+
if (chain2 !== null) {
|
|
42992
|
+
chainId = await getAction(client, getChainId, "getChainId")({});
|
|
42993
|
+
if (assertChainId)
|
|
42994
|
+
assertCurrentChain({
|
|
42995
|
+
currentChainId: chainId,
|
|
42996
|
+
chain: chain2
|
|
42997
|
+
});
|
|
42998
|
+
}
|
|
42999
|
+
const chainFormat = client.chain?.formatters?.transactionRequest?.format;
|
|
43000
|
+
const format = chainFormat || formatTransactionRequest;
|
|
43001
|
+
const request = format({
|
|
43002
|
+
// Pick out extra data that might exist on the chain's transaction request type.
|
|
43003
|
+
...extract(rest, { format: chainFormat }),
|
|
43004
|
+
accessList,
|
|
43005
|
+
account,
|
|
43006
|
+
authorizationList,
|
|
43007
|
+
blobs,
|
|
43008
|
+
chainId,
|
|
43009
|
+
data: dataSuffix ? concat2([data ?? "0x", dataSuffix]) : data,
|
|
43010
|
+
gas,
|
|
43011
|
+
gasPrice,
|
|
43012
|
+
maxFeePerBlobGas,
|
|
43013
|
+
maxFeePerGas,
|
|
43014
|
+
maxPriorityFeePerGas,
|
|
43015
|
+
nonce,
|
|
43016
|
+
to,
|
|
43017
|
+
type,
|
|
43018
|
+
value
|
|
43019
|
+
}, "sendTransaction");
|
|
43020
|
+
const isWalletNamespaceSupported = supportsWalletNamespace.get(client.uid);
|
|
43021
|
+
const method = isWalletNamespaceSupported ? "wallet_sendTransaction" : "eth_sendTransaction";
|
|
43022
|
+
try {
|
|
43023
|
+
return await client.request({
|
|
43024
|
+
method,
|
|
43025
|
+
params: [request]
|
|
43026
|
+
}, { retryCount: 0 });
|
|
43027
|
+
} catch (e) {
|
|
43028
|
+
if (isWalletNamespaceSupported === false)
|
|
43029
|
+
throw e;
|
|
43030
|
+
const error = e;
|
|
43031
|
+
if (error.name === "InvalidInputRpcError" || error.name === "InvalidParamsRpcError" || error.name === "MethodNotFoundRpcError" || error.name === "MethodNotSupportedRpcError") {
|
|
43032
|
+
return await client.request({
|
|
43033
|
+
method: "wallet_sendTransaction",
|
|
43034
|
+
params: [request]
|
|
43035
|
+
}, { retryCount: 0 }).then((hash4) => {
|
|
43036
|
+
supportsWalletNamespace.set(client.uid, true);
|
|
43037
|
+
return hash4;
|
|
43038
|
+
}).catch((e2) => {
|
|
43039
|
+
const walletNamespaceError = e2;
|
|
43040
|
+
if (walletNamespaceError.name === "MethodNotFoundRpcError" || walletNamespaceError.name === "MethodNotSupportedRpcError") {
|
|
43041
|
+
supportsWalletNamespace.set(client.uid, false);
|
|
43042
|
+
throw error;
|
|
43043
|
+
}
|
|
43044
|
+
throw walletNamespaceError;
|
|
43045
|
+
});
|
|
43046
|
+
}
|
|
43047
|
+
throw error;
|
|
43048
|
+
}
|
|
43049
|
+
}
|
|
43050
|
+
if (account?.type === "local") {
|
|
43051
|
+
if (account.nonceManager && typeof nonce === "undefined") {
|
|
43052
|
+
const requestChainId = rest.chainId;
|
|
43053
|
+
const chainId = await (async () => {
|
|
43054
|
+
if (typeof requestChainId === "number")
|
|
43055
|
+
return requestChainId;
|
|
43056
|
+
if (chain2)
|
|
43057
|
+
return chain2.id;
|
|
43058
|
+
return getAction(client, getChainId, "getChainId")({});
|
|
43059
|
+
})();
|
|
43060
|
+
nonceManagerParameters = { address: account.address, chainId };
|
|
43061
|
+
}
|
|
43062
|
+
const request = await getAction(client, prepareTransactionRequest, "prepareTransactionRequest")({
|
|
43063
|
+
account,
|
|
43064
|
+
accessList,
|
|
43065
|
+
authorizationList,
|
|
43066
|
+
blobs,
|
|
43067
|
+
chain: chain2,
|
|
43068
|
+
data: dataSuffix ? concat2([data ?? "0x", dataSuffix]) : data,
|
|
43069
|
+
gas,
|
|
43070
|
+
gasPrice,
|
|
43071
|
+
maxFeePerBlobGas,
|
|
43072
|
+
maxFeePerGas,
|
|
43073
|
+
maxPriorityFeePerGas,
|
|
43074
|
+
nonce,
|
|
43075
|
+
nonceManager: account.nonceManager,
|
|
43076
|
+
parameters: [...defaultParameters, "sidecars"],
|
|
43077
|
+
type,
|
|
43078
|
+
value,
|
|
43079
|
+
...rest,
|
|
43080
|
+
to
|
|
43081
|
+
});
|
|
43082
|
+
const serializer = chain2?.serializers?.transaction;
|
|
43083
|
+
const serializedTransaction = await account.signTransaction(request, {
|
|
43084
|
+
serializer
|
|
43085
|
+
});
|
|
43086
|
+
return await getAction(client, sendRawTransaction, "sendRawTransaction")({
|
|
43087
|
+
serializedTransaction
|
|
43088
|
+
});
|
|
43089
|
+
}
|
|
43090
|
+
if (account?.type === "smart")
|
|
43091
|
+
throw new AccountTypeNotSupportedError({
|
|
43092
|
+
metaMessages: [
|
|
43093
|
+
"Consider using the `sendUserOperation` Action instead."
|
|
43094
|
+
],
|
|
43095
|
+
docsPath: "/docs/actions/bundler/sendUserOperation",
|
|
43096
|
+
type: "smart"
|
|
43097
|
+
});
|
|
43098
|
+
throw new AccountTypeNotSupportedError({
|
|
43099
|
+
docsPath: "/docs/actions/wallet/sendTransaction",
|
|
43100
|
+
type: account?.type
|
|
43101
|
+
});
|
|
43102
|
+
} catch (err) {
|
|
43103
|
+
if (err instanceof AccountTypeNotSupportedError)
|
|
43104
|
+
throw err;
|
|
43105
|
+
if (nonceManagerParameters)
|
|
43106
|
+
account?.nonceManager?.reset(nonceManagerParameters);
|
|
43107
|
+
throw getTransactionError(err, {
|
|
43108
|
+
...parameters,
|
|
43109
|
+
account,
|
|
43110
|
+
chain: parameters.chain || void 0
|
|
43111
|
+
});
|
|
43112
|
+
}
|
|
43113
|
+
}
|
|
43114
|
+
|
|
43115
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/writeContract.js
|
|
43116
|
+
async function writeContract(client, parameters) {
|
|
43117
|
+
return writeContract.internal(client, sendTransaction, "sendTransaction", parameters);
|
|
43118
|
+
}
|
|
43119
|
+
(function(writeContract2) {
|
|
43120
|
+
async function internal(client, actionFn, name, parameters) {
|
|
43121
|
+
const { abi: abi2, account: account_ = client.account, address, args, functionName, ...request } = parameters;
|
|
43122
|
+
if (typeof account_ === "undefined")
|
|
43123
|
+
throw new AccountNotFoundError({
|
|
43124
|
+
docsPath: "/docs/contract/writeContract"
|
|
43125
|
+
});
|
|
43126
|
+
const account = account_ ? parseAccount(account_) : null;
|
|
43127
|
+
const data = encodeFunctionData2({
|
|
43128
|
+
abi: abi2,
|
|
43129
|
+
args,
|
|
43130
|
+
functionName
|
|
43131
|
+
});
|
|
43132
|
+
try {
|
|
43133
|
+
return await getAction(client, actionFn, name)({
|
|
43134
|
+
data,
|
|
43135
|
+
to: address,
|
|
43136
|
+
account,
|
|
43137
|
+
...request
|
|
43138
|
+
});
|
|
43139
|
+
} catch (error) {
|
|
43140
|
+
throw getContractError(error, {
|
|
43141
|
+
abi: abi2,
|
|
43142
|
+
address,
|
|
43143
|
+
args,
|
|
43144
|
+
docsPath: "/docs/contract/writeContract",
|
|
43145
|
+
functionName,
|
|
43146
|
+
sender: account?.address
|
|
43147
|
+
});
|
|
43148
|
+
}
|
|
43149
|
+
}
|
|
43150
|
+
writeContract2.internal = internal;
|
|
43151
|
+
})(writeContract || (writeContract = {}));
|
|
43152
|
+
|
|
43153
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/waitForCallsStatus.js
|
|
43154
|
+
init_base2();
|
|
43155
|
+
|
|
43156
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/errors/calls.js
|
|
43157
|
+
init_base2();
|
|
43158
|
+
var BundleFailedError = class extends BaseError3 {
|
|
43159
|
+
constructor(result) {
|
|
43160
|
+
super(`Call bundle failed with status: ${result.statusCode}`, {
|
|
43161
|
+
name: "BundleFailedError"
|
|
43162
|
+
});
|
|
43163
|
+
Object.defineProperty(this, "result", {
|
|
43164
|
+
enumerable: true,
|
|
43165
|
+
configurable: true,
|
|
43166
|
+
writable: true,
|
|
43167
|
+
value: void 0
|
|
43168
|
+
});
|
|
43169
|
+
this.result = result;
|
|
43170
|
+
}
|
|
43171
|
+
};
|
|
43172
|
+
|
|
43173
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/waitForCallsStatus.js
|
|
43174
|
+
init_withResolvers();
|
|
43175
|
+
|
|
42811
43176
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/promise/withRetry.js
|
|
42812
43177
|
init_utils4();
|
|
42813
43178
|
function withRetry(fn, { delay: delay_ = 100, retryCount = 2, shouldRetry: shouldRetry2 = () => true, signal } = {}) {
|
|
@@ -42850,6 +43215,14 @@ function withRetry(fn, { delay: delay_ = 100, retryCount = 2, shouldRetry: shoul
|
|
|
42850
43215
|
});
|
|
42851
43216
|
}
|
|
42852
43217
|
|
|
43218
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/waitForCallsStatus.js
|
|
43219
|
+
init_stringify2();
|
|
43220
|
+
|
|
43221
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/getCallsStatus.js
|
|
43222
|
+
init_slice2();
|
|
43223
|
+
init_trim2();
|
|
43224
|
+
init_fromHex2();
|
|
43225
|
+
|
|
42853
43226
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/formatters/transactionReceipt.js
|
|
42854
43227
|
init_fromHex2();
|
|
42855
43228
|
var receiptStatuses = {
|
|
@@ -42877,6 +43250,251 @@ function formatTransactionReceipt(transactionReceipt, _) {
|
|
|
42877
43250
|
return receipt;
|
|
42878
43251
|
}
|
|
42879
43252
|
|
|
43253
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendCalls.js
|
|
43254
|
+
init_parseAccount();
|
|
43255
|
+
init_base2();
|
|
43256
|
+
init_rpc();
|
|
43257
|
+
init_encodeFunctionData2();
|
|
43258
|
+
init_concat2();
|
|
43259
|
+
init_fromHex2();
|
|
43260
|
+
init_toHex2();
|
|
43261
|
+
var fallbackMagicIdentifier = "0x5792579257925792579257925792579257925792579257925792579257925792";
|
|
43262
|
+
var fallbackTransactionErrorMagicIdentifier = numberToHex2(0, {
|
|
43263
|
+
size: 32
|
|
43264
|
+
});
|
|
43265
|
+
async function sendCalls(client, parameters) {
|
|
43266
|
+
const { account: account_ = client.account, chain: chain2 = client.chain, experimental_fallback, experimental_fallbackDelay = 32, forceAtomic = false, id, version: version5 = "2.0.0" } = parameters;
|
|
43267
|
+
const account = account_ ? parseAccount(account_) : null;
|
|
43268
|
+
let capabilities = parameters.capabilities;
|
|
43269
|
+
if (client.dataSuffix && !parameters.capabilities?.dataSuffix) {
|
|
43270
|
+
if (typeof client.dataSuffix === "string")
|
|
43271
|
+
capabilities = {
|
|
43272
|
+
...parameters.capabilities,
|
|
43273
|
+
dataSuffix: { value: client.dataSuffix, optional: true }
|
|
43274
|
+
};
|
|
43275
|
+
else
|
|
43276
|
+
capabilities = {
|
|
43277
|
+
...parameters.capabilities,
|
|
43278
|
+
dataSuffix: {
|
|
43279
|
+
value: client.dataSuffix.value,
|
|
43280
|
+
...client.dataSuffix.required ? {} : { optional: true }
|
|
43281
|
+
}
|
|
43282
|
+
};
|
|
43283
|
+
}
|
|
43284
|
+
const calls = parameters.calls.map((call_) => {
|
|
43285
|
+
const call2 = call_;
|
|
43286
|
+
const data = call2.abi ? encodeFunctionData2({
|
|
43287
|
+
abi: call2.abi,
|
|
43288
|
+
functionName: call2.functionName,
|
|
43289
|
+
args: call2.args
|
|
43290
|
+
}) : call2.data;
|
|
43291
|
+
return {
|
|
43292
|
+
data: call2.dataSuffix && data ? concat2([data, call2.dataSuffix]) : data,
|
|
43293
|
+
to: call2.to,
|
|
43294
|
+
value: call2.value ? numberToHex2(call2.value) : void 0
|
|
43295
|
+
};
|
|
43296
|
+
});
|
|
43297
|
+
try {
|
|
43298
|
+
const response = await client.request({
|
|
43299
|
+
method: "wallet_sendCalls",
|
|
43300
|
+
params: [
|
|
43301
|
+
{
|
|
43302
|
+
atomicRequired: forceAtomic,
|
|
43303
|
+
calls,
|
|
43304
|
+
capabilities,
|
|
43305
|
+
chainId: numberToHex2(chain2.id),
|
|
43306
|
+
from: account?.address,
|
|
43307
|
+
id,
|
|
43308
|
+
version: version5
|
|
43309
|
+
}
|
|
43310
|
+
]
|
|
43311
|
+
}, { retryCount: 0 });
|
|
43312
|
+
if (typeof response === "string")
|
|
43313
|
+
return { id: response };
|
|
43314
|
+
return response;
|
|
43315
|
+
} catch (err) {
|
|
43316
|
+
const error = err;
|
|
43317
|
+
if (experimental_fallback && (error.name === "MethodNotFoundRpcError" || error.name === "MethodNotSupportedRpcError" || error.name === "UnknownRpcError" || error.details.toLowerCase().includes("does not exist / is not available") || error.details.toLowerCase().includes("missing or invalid. request()") || error.details.toLowerCase().includes("did not match any variant of untagged enum") || error.details.toLowerCase().includes("account upgraded to unsupported contract") || error.details.toLowerCase().includes("eip-7702 not supported") || error.details.toLowerCase().includes("unsupported wc_ method") || // magic.link
|
|
43318
|
+
error.details.toLowerCase().includes("feature toggled misconfigured") || // Trust Wallet
|
|
43319
|
+
error.details.toLowerCase().includes("jsonrpcengine: response has no error or result for request"))) {
|
|
43320
|
+
if (capabilities) {
|
|
43321
|
+
const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);
|
|
43322
|
+
if (hasNonOptionalCapability) {
|
|
43323
|
+
const message = "non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";
|
|
43324
|
+
throw new UnsupportedNonOptionalCapabilityError(new BaseError3(message, {
|
|
43325
|
+
details: message
|
|
43326
|
+
}));
|
|
43327
|
+
}
|
|
43328
|
+
}
|
|
43329
|
+
if (forceAtomic && calls.length > 1) {
|
|
43330
|
+
const message = "`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";
|
|
43331
|
+
throw new AtomicityNotSupportedError(new BaseError3(message, {
|
|
43332
|
+
details: message
|
|
43333
|
+
}));
|
|
43334
|
+
}
|
|
43335
|
+
const results = [];
|
|
43336
|
+
for (const call2 of calls) {
|
|
43337
|
+
try {
|
|
43338
|
+
const value = await sendTransaction(client, {
|
|
43339
|
+
account,
|
|
43340
|
+
chain: chain2,
|
|
43341
|
+
data: call2.data,
|
|
43342
|
+
to: call2.to,
|
|
43343
|
+
value: call2.value ? hexToBigInt2(call2.value) : void 0
|
|
43344
|
+
});
|
|
43345
|
+
results.push({ status: "fulfilled", value });
|
|
43346
|
+
} catch (reason) {
|
|
43347
|
+
results.push({ reason, status: "rejected" });
|
|
43348
|
+
}
|
|
43349
|
+
if (experimental_fallbackDelay > 0)
|
|
43350
|
+
await new Promise((resolve) => setTimeout(resolve, experimental_fallbackDelay));
|
|
43351
|
+
}
|
|
43352
|
+
if (results.every((r) => r.status === "rejected"))
|
|
43353
|
+
throw results[0].reason;
|
|
43354
|
+
const hashes = results.map((result) => {
|
|
43355
|
+
if (result.status === "fulfilled")
|
|
43356
|
+
return result.value;
|
|
43357
|
+
return fallbackTransactionErrorMagicIdentifier;
|
|
43358
|
+
});
|
|
43359
|
+
return {
|
|
43360
|
+
id: concat2([
|
|
43361
|
+
...hashes,
|
|
43362
|
+
numberToHex2(chain2.id, { size: 32 }),
|
|
43363
|
+
fallbackMagicIdentifier
|
|
43364
|
+
])
|
|
43365
|
+
};
|
|
43366
|
+
}
|
|
43367
|
+
throw getTransactionError(err, {
|
|
43368
|
+
...parameters,
|
|
43369
|
+
account,
|
|
43370
|
+
chain: parameters.chain
|
|
43371
|
+
});
|
|
43372
|
+
}
|
|
43373
|
+
}
|
|
43374
|
+
|
|
43375
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/getCallsStatus.js
|
|
43376
|
+
async function getCallsStatus(client, parameters) {
|
|
43377
|
+
async function getStatus(id) {
|
|
43378
|
+
const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2));
|
|
43379
|
+
if (isTransactions) {
|
|
43380
|
+
const chainId2 = trim2(sliceHex2(id, -64, -32));
|
|
43381
|
+
const hashes = sliceHex2(id, 0, -64).slice(2).match(/.{1,64}/g);
|
|
43382
|
+
const receipts2 = await Promise.all(hashes.map((hash4) => fallbackTransactionErrorMagicIdentifier.slice(2) !== hash4 ? client.request({
|
|
43383
|
+
method: "eth_getTransactionReceipt",
|
|
43384
|
+
params: [`0x${hash4}`]
|
|
43385
|
+
}, { dedupe: true }) : void 0));
|
|
43386
|
+
const status2 = (() => {
|
|
43387
|
+
if (receipts2.some((r) => r === null))
|
|
43388
|
+
return 100;
|
|
43389
|
+
if (receipts2.every((r) => r?.status === "0x1"))
|
|
43390
|
+
return 200;
|
|
43391
|
+
if (receipts2.every((r) => r?.status === "0x0"))
|
|
43392
|
+
return 500;
|
|
43393
|
+
return 600;
|
|
43394
|
+
})();
|
|
43395
|
+
return {
|
|
43396
|
+
atomic: false,
|
|
43397
|
+
chainId: hexToNumber3(chainId2),
|
|
43398
|
+
receipts: receipts2.filter(Boolean),
|
|
43399
|
+
status: status2,
|
|
43400
|
+
version: "2.0.0"
|
|
43401
|
+
};
|
|
43402
|
+
}
|
|
43403
|
+
return client.request({
|
|
43404
|
+
method: "wallet_getCallsStatus",
|
|
43405
|
+
params: [id]
|
|
43406
|
+
});
|
|
43407
|
+
}
|
|
43408
|
+
const { atomic = false, chainId, receipts, version: version5 = "2.0.0", ...response } = await getStatus(parameters.id);
|
|
43409
|
+
const [status, statusCode] = (() => {
|
|
43410
|
+
const statusCode2 = response.status;
|
|
43411
|
+
if (statusCode2 >= 100 && statusCode2 < 200)
|
|
43412
|
+
return ["pending", statusCode2];
|
|
43413
|
+
if (statusCode2 >= 200 && statusCode2 < 300)
|
|
43414
|
+
return ["success", statusCode2];
|
|
43415
|
+
if (statusCode2 >= 300 && statusCode2 < 700)
|
|
43416
|
+
return ["failure", statusCode2];
|
|
43417
|
+
if (statusCode2 === "CONFIRMED")
|
|
43418
|
+
return ["success", 200];
|
|
43419
|
+
if (statusCode2 === "PENDING")
|
|
43420
|
+
return ["pending", 100];
|
|
43421
|
+
return [void 0, statusCode2];
|
|
43422
|
+
})();
|
|
43423
|
+
return {
|
|
43424
|
+
...response,
|
|
43425
|
+
atomic,
|
|
43426
|
+
// @ts-expect-error: for backwards compatibility
|
|
43427
|
+
chainId: chainId ? hexToNumber3(chainId) : void 0,
|
|
43428
|
+
receipts: receipts?.map((receipt) => ({
|
|
43429
|
+
...receipt,
|
|
43430
|
+
blockNumber: hexToBigInt2(receipt.blockNumber),
|
|
43431
|
+
gasUsed: hexToBigInt2(receipt.gasUsed),
|
|
43432
|
+
status: receiptStatuses[receipt.status]
|
|
43433
|
+
})) ?? [],
|
|
43434
|
+
statusCode,
|
|
43435
|
+
status,
|
|
43436
|
+
version: version5
|
|
43437
|
+
};
|
|
43438
|
+
}
|
|
43439
|
+
|
|
43440
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/waitForCallsStatus.js
|
|
43441
|
+
async function waitForCallsStatus(client, parameters) {
|
|
43442
|
+
const {
|
|
43443
|
+
id,
|
|
43444
|
+
pollingInterval = client.pollingInterval,
|
|
43445
|
+
status = ({ statusCode }) => statusCode === 200 || statusCode >= 300,
|
|
43446
|
+
retryCount = 4,
|
|
43447
|
+
retryDelay = ({ count }) => ~~(1 << count) * 200,
|
|
43448
|
+
// exponential backoff
|
|
43449
|
+
timeout = 6e4,
|
|
43450
|
+
throwOnFailure = false
|
|
43451
|
+
} = parameters;
|
|
43452
|
+
const observerId = stringify2(["waitForCallsStatus", client.uid, id]);
|
|
43453
|
+
const { promise, resolve, reject } = withResolvers();
|
|
43454
|
+
let timer;
|
|
43455
|
+
const unobserve = observe(observerId, { resolve, reject }, (emit) => {
|
|
43456
|
+
const unpoll = poll(async () => {
|
|
43457
|
+
const done = (fn) => {
|
|
43458
|
+
clearTimeout(timer);
|
|
43459
|
+
unpoll();
|
|
43460
|
+
fn();
|
|
43461
|
+
unobserve();
|
|
43462
|
+
};
|
|
43463
|
+
try {
|
|
43464
|
+
const result = await withRetry(async () => {
|
|
43465
|
+
const result2 = await getAction(client, getCallsStatus, "getCallsStatus")({ id });
|
|
43466
|
+
if (throwOnFailure && result2.status === "failure")
|
|
43467
|
+
throw new BundleFailedError(result2);
|
|
43468
|
+
return result2;
|
|
43469
|
+
}, {
|
|
43470
|
+
retryCount,
|
|
43471
|
+
delay: retryDelay
|
|
43472
|
+
});
|
|
43473
|
+
if (!status(result))
|
|
43474
|
+
return;
|
|
43475
|
+
done(() => emit.resolve(result));
|
|
43476
|
+
} catch (error) {
|
|
43477
|
+
done(() => emit.reject(error));
|
|
43478
|
+
}
|
|
43479
|
+
}, {
|
|
43480
|
+
interval: pollingInterval,
|
|
43481
|
+
emitOnBegin: true
|
|
43482
|
+
});
|
|
43483
|
+
return unpoll;
|
|
43484
|
+
});
|
|
43485
|
+
timer = timeout ? setTimeout(() => {
|
|
43486
|
+
unobserve();
|
|
43487
|
+
clearTimeout(timer);
|
|
43488
|
+
reject(new WaitForCallsStatusTimeoutError({ id }));
|
|
43489
|
+
}, timeout) : void 0;
|
|
43490
|
+
return await promise;
|
|
43491
|
+
}
|
|
43492
|
+
var WaitForCallsStatusTimeoutError = class extends BaseError3 {
|
|
43493
|
+
constructor({ id }) {
|
|
43494
|
+
super(`Timed out while waiting for call bundle with id "${id}" to be confirmed.`, { name: "WaitForCallsStatusTimeoutError" });
|
|
43495
|
+
}
|
|
43496
|
+
};
|
|
43497
|
+
|
|
42880
43498
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/clients/createClient.js
|
|
42881
43499
|
init_parseAccount();
|
|
42882
43500
|
|
|
@@ -44417,6 +45035,26 @@ function hashString(str, seed = 0) {
|
|
|
44417
45035
|
return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(36);
|
|
44418
45036
|
}
|
|
44419
45037
|
|
|
45038
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/chain/defineChain.js
|
|
45039
|
+
function defineChain(chain2) {
|
|
45040
|
+
const chainInstance = {
|
|
45041
|
+
formatters: void 0,
|
|
45042
|
+
fees: void 0,
|
|
45043
|
+
serializers: void 0,
|
|
45044
|
+
...chain2
|
|
45045
|
+
};
|
|
45046
|
+
function extend(base) {
|
|
45047
|
+
return (fnOrExtended) => {
|
|
45048
|
+
const properties = typeof fnOrExtended === "function" ? fnOrExtended(base) : fnOrExtended;
|
|
45049
|
+
const combined = { ...base, ...properties };
|
|
45050
|
+
return Object.assign(combined, { extend: extend(combined) });
|
|
45051
|
+
};
|
|
45052
|
+
}
|
|
45053
|
+
return Object.assign(chainInstance, {
|
|
45054
|
+
extend: extend(chainInstance)
|
|
45055
|
+
});
|
|
45056
|
+
}
|
|
45057
|
+
|
|
44420
45058
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/utils/index.js
|
|
44421
45059
|
init_fromHex2();
|
|
44422
45060
|
|
|
@@ -44649,6 +45287,32 @@ init_isAddress2();
|
|
|
44649
45287
|
init_size2();
|
|
44650
45288
|
init_toHex2();
|
|
44651
45289
|
init_regex4();
|
|
45290
|
+
init_stringify2();
|
|
45291
|
+
function serializeTypedData(parameters) {
|
|
45292
|
+
const { domain: domain_, message: message_, primaryType, types } = parameters;
|
|
45293
|
+
const normalizeData = (struct, data_) => {
|
|
45294
|
+
const data = { ...data_ };
|
|
45295
|
+
for (const param of struct) {
|
|
45296
|
+
const { name, type } = param;
|
|
45297
|
+
if (type === "address")
|
|
45298
|
+
data[name] = data[name].toLowerCase();
|
|
45299
|
+
}
|
|
45300
|
+
return data;
|
|
45301
|
+
};
|
|
45302
|
+
const domain = (() => {
|
|
45303
|
+
if (!types.EIP712Domain)
|
|
45304
|
+
return {};
|
|
45305
|
+
if (!domain_)
|
|
45306
|
+
return {};
|
|
45307
|
+
return normalizeData(types.EIP712Domain, domain_);
|
|
45308
|
+
})();
|
|
45309
|
+
const message = (() => {
|
|
45310
|
+
if (primaryType === "EIP712Domain")
|
|
45311
|
+
return void 0;
|
|
45312
|
+
return normalizeData(types[primaryType], message_);
|
|
45313
|
+
})();
|
|
45314
|
+
return stringify2({ domain, message, primaryType, types });
|
|
45315
|
+
}
|
|
44652
45316
|
function validateTypedData2(parameters) {
|
|
44653
45317
|
const { domain, message, primaryType, types } = parameters;
|
|
44654
45318
|
const validateData = (struct, data) => {
|
|
@@ -45564,11 +46228,11 @@ function encodeBoolean(value) {
|
|
|
45564
46228
|
function encodeNumber3(value, { signed, size: size6 }) {
|
|
45565
46229
|
if (typeof size6 === "number") {
|
|
45566
46230
|
const max = 2n ** (BigInt(size6) - (signed ? 1n : 0n)) - 1n;
|
|
45567
|
-
const
|
|
45568
|
-
if (value > max || value <
|
|
46231
|
+
const min2 = signed ? -max - 1n : 0n;
|
|
46232
|
+
if (value > max || value < min2)
|
|
45569
46233
|
throw new IntegerOutOfRangeError3({
|
|
45570
46234
|
max: max.toString(),
|
|
45571
|
-
min:
|
|
46235
|
+
min: min2.toString(),
|
|
45572
46236
|
signed,
|
|
45573
46237
|
size: size6 / 8,
|
|
45574
46238
|
value: value.toString()
|
|
@@ -48437,6 +49101,507 @@ function createPublicClient(parameters) {
|
|
|
48437
49101
|
return client.extend(publicActions);
|
|
48438
49102
|
}
|
|
48439
49103
|
|
|
49104
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/addChain.js
|
|
49105
|
+
init_toHex2();
|
|
49106
|
+
async function addChain(client, { chain: chain2 }) {
|
|
49107
|
+
const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain2;
|
|
49108
|
+
await client.request({
|
|
49109
|
+
method: "wallet_addEthereumChain",
|
|
49110
|
+
params: [
|
|
49111
|
+
{
|
|
49112
|
+
chainId: numberToHex2(id),
|
|
49113
|
+
chainName: name,
|
|
49114
|
+
nativeCurrency,
|
|
49115
|
+
rpcUrls: rpcUrls.default.http,
|
|
49116
|
+
blockExplorerUrls: blockExplorers ? Object.values(blockExplorers).map(({ url }) => url) : void 0
|
|
49117
|
+
}
|
|
49118
|
+
]
|
|
49119
|
+
}, { dedupe: true, retryCount: 0 });
|
|
49120
|
+
}
|
|
49121
|
+
|
|
49122
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/deployContract.js
|
|
49123
|
+
init_encodeDeployData();
|
|
49124
|
+
function deployContract(walletClient, parameters) {
|
|
49125
|
+
const { abi: abi2, args, bytecode, ...request } = parameters;
|
|
49126
|
+
const calldata = encodeDeployData({ abi: abi2, args, bytecode });
|
|
49127
|
+
return sendTransaction(walletClient, {
|
|
49128
|
+
...request,
|
|
49129
|
+
...request.authorizationList ? { to: null } : {},
|
|
49130
|
+
data: calldata
|
|
49131
|
+
});
|
|
49132
|
+
}
|
|
49133
|
+
|
|
49134
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/getAddresses.js
|
|
49135
|
+
init_getAddress2();
|
|
49136
|
+
async function getAddresses(client) {
|
|
49137
|
+
if (client.account?.type === "local")
|
|
49138
|
+
return [client.account.address];
|
|
49139
|
+
const addresses = await client.request({ method: "eth_accounts" }, { dedupe: true });
|
|
49140
|
+
return addresses.map((address) => checksumAddress2(address));
|
|
49141
|
+
}
|
|
49142
|
+
|
|
49143
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/getCapabilities.js
|
|
49144
|
+
init_parseAccount();
|
|
49145
|
+
init_toHex2();
|
|
49146
|
+
async function getCapabilities(client, parameters = {}) {
|
|
49147
|
+
const { account = client.account, chainId } = parameters;
|
|
49148
|
+
const account_ = account ? parseAccount(account) : void 0;
|
|
49149
|
+
const params = chainId ? [account_?.address, [numberToHex2(chainId)]] : [account_?.address];
|
|
49150
|
+
const capabilities_raw = await client.request({
|
|
49151
|
+
method: "wallet_getCapabilities",
|
|
49152
|
+
params
|
|
49153
|
+
});
|
|
49154
|
+
const capabilities = {};
|
|
49155
|
+
for (const [chainId2, capabilities_] of Object.entries(capabilities_raw)) {
|
|
49156
|
+
capabilities[Number(chainId2)] = {};
|
|
49157
|
+
for (let [key, value] of Object.entries(capabilities_)) {
|
|
49158
|
+
if (key === "addSubAccount")
|
|
49159
|
+
key = "unstable_addSubAccount";
|
|
49160
|
+
capabilities[Number(chainId2)][key] = value;
|
|
49161
|
+
}
|
|
49162
|
+
}
|
|
49163
|
+
return typeof chainId === "number" ? capabilities[chainId] : capabilities;
|
|
49164
|
+
}
|
|
49165
|
+
|
|
49166
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/getPermissions.js
|
|
49167
|
+
async function getPermissions(client) {
|
|
49168
|
+
const permissions = await client.request({ method: "wallet_getPermissions" }, { dedupe: true });
|
|
49169
|
+
return permissions;
|
|
49170
|
+
}
|
|
49171
|
+
|
|
49172
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/prepareAuthorization.js
|
|
49173
|
+
init_parseAccount();
|
|
49174
|
+
init_isAddressEqual();
|
|
49175
|
+
async function prepareAuthorization(client, parameters) {
|
|
49176
|
+
const { account: account_ = client.account, chainId, nonce } = parameters;
|
|
49177
|
+
if (!account_)
|
|
49178
|
+
throw new AccountNotFoundError({
|
|
49179
|
+
docsPath: "/docs/eip7702/prepareAuthorization"
|
|
49180
|
+
});
|
|
49181
|
+
const account = parseAccount(account_);
|
|
49182
|
+
const executor = (() => {
|
|
49183
|
+
if (!parameters.executor)
|
|
49184
|
+
return void 0;
|
|
49185
|
+
if (parameters.executor === "self")
|
|
49186
|
+
return parameters.executor;
|
|
49187
|
+
return parseAccount(parameters.executor);
|
|
49188
|
+
})();
|
|
49189
|
+
const authorization = {
|
|
49190
|
+
address: parameters.contractAddress ?? parameters.address,
|
|
49191
|
+
chainId,
|
|
49192
|
+
nonce
|
|
49193
|
+
};
|
|
49194
|
+
if (typeof authorization.chainId === "undefined")
|
|
49195
|
+
authorization.chainId = client.chain?.id ?? await getAction(client, getChainId, "getChainId")({});
|
|
49196
|
+
if (typeof authorization.nonce === "undefined") {
|
|
49197
|
+
authorization.nonce = await getAction(client, getTransactionCount, "getTransactionCount")({
|
|
49198
|
+
address: account.address,
|
|
49199
|
+
blockTag: "pending"
|
|
49200
|
+
});
|
|
49201
|
+
if (executor === "self" || executor?.address && isAddressEqual(executor.address, account.address))
|
|
49202
|
+
authorization.nonce += 1;
|
|
49203
|
+
}
|
|
49204
|
+
return authorization;
|
|
49205
|
+
}
|
|
49206
|
+
|
|
49207
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/requestAddresses.js
|
|
49208
|
+
init_getAddress2();
|
|
49209
|
+
async function requestAddresses(client) {
|
|
49210
|
+
const addresses = await client.request({ method: "eth_requestAccounts" }, { dedupe: true, retryCount: 0 });
|
|
49211
|
+
return addresses.map((address) => getAddress(address));
|
|
49212
|
+
}
|
|
49213
|
+
|
|
49214
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/requestPermissions.js
|
|
49215
|
+
async function requestPermissions(client, permissions) {
|
|
49216
|
+
return client.request({
|
|
49217
|
+
method: "wallet_requestPermissions",
|
|
49218
|
+
params: [permissions]
|
|
49219
|
+
}, { retryCount: 0 });
|
|
49220
|
+
}
|
|
49221
|
+
|
|
49222
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendCallsSync.js
|
|
49223
|
+
async function sendCallsSync(client, parameters) {
|
|
49224
|
+
const { chain: chain2 = client.chain } = parameters;
|
|
49225
|
+
const timeout = parameters.timeout ?? Math.max((chain2?.blockTime ?? 0) * 3, 5e3);
|
|
49226
|
+
const result = await getAction(client, sendCalls, "sendCalls")(parameters);
|
|
49227
|
+
const status = await getAction(client, waitForCallsStatus, "waitForCallsStatus")({
|
|
49228
|
+
...parameters,
|
|
49229
|
+
id: result.id,
|
|
49230
|
+
timeout
|
|
49231
|
+
});
|
|
49232
|
+
return status;
|
|
49233
|
+
}
|
|
49234
|
+
|
|
49235
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/sendTransactionSync.js
|
|
49236
|
+
init_parseAccount();
|
|
49237
|
+
init_base2();
|
|
49238
|
+
init_transaction2();
|
|
49239
|
+
init_concat2();
|
|
49240
|
+
init_extract();
|
|
49241
|
+
init_transactionRequest();
|
|
49242
|
+
init_lru2();
|
|
49243
|
+
init_assertRequest();
|
|
49244
|
+
var supportsWalletNamespace2 = new LruMap2(128);
|
|
49245
|
+
async function sendTransactionSync(client, parameters) {
|
|
49246
|
+
const { account: account_ = client.account, assertChainId = true, chain: chain2 = client.chain, accessList, authorizationList, blobs, data, dataSuffix = typeof client.dataSuffix === "string" ? client.dataSuffix : client.dataSuffix?.value, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, pollingInterval, throwOnReceiptRevert, type, value, ...rest } = parameters;
|
|
49247
|
+
const timeout = parameters.timeout ?? Math.max((chain2?.blockTime ?? 0) * 3, 5e3);
|
|
49248
|
+
if (typeof account_ === "undefined")
|
|
49249
|
+
throw new AccountNotFoundError({
|
|
49250
|
+
docsPath: "/docs/actions/wallet/sendTransactionSync"
|
|
49251
|
+
});
|
|
49252
|
+
const account = account_ ? parseAccount(account_) : null;
|
|
49253
|
+
let nonceManagerParameters;
|
|
49254
|
+
try {
|
|
49255
|
+
assertRequest(parameters);
|
|
49256
|
+
const to = await (async () => {
|
|
49257
|
+
if (parameters.to)
|
|
49258
|
+
return parameters.to;
|
|
49259
|
+
if (parameters.to === null)
|
|
49260
|
+
return void 0;
|
|
49261
|
+
if (authorizationList && authorizationList.length > 0)
|
|
49262
|
+
return await recoverAuthorizationAddress({
|
|
49263
|
+
authorization: authorizationList[0]
|
|
49264
|
+
}).catch(() => {
|
|
49265
|
+
throw new BaseError3("`to` is required. Could not infer from `authorizationList`.");
|
|
49266
|
+
});
|
|
49267
|
+
return void 0;
|
|
49268
|
+
})();
|
|
49269
|
+
if (account?.type === "json-rpc" || account === null) {
|
|
49270
|
+
let chainId;
|
|
49271
|
+
if (chain2 !== null) {
|
|
49272
|
+
chainId = await getAction(client, getChainId, "getChainId")({});
|
|
49273
|
+
if (assertChainId)
|
|
49274
|
+
assertCurrentChain({
|
|
49275
|
+
currentChainId: chainId,
|
|
49276
|
+
chain: chain2
|
|
49277
|
+
});
|
|
49278
|
+
}
|
|
49279
|
+
const chainFormat = client.chain?.formatters?.transactionRequest?.format;
|
|
49280
|
+
const format = chainFormat || formatTransactionRequest;
|
|
49281
|
+
const request = format({
|
|
49282
|
+
// Pick out extra data that might exist on the chain's transaction request type.
|
|
49283
|
+
...extract(rest, { format: chainFormat }),
|
|
49284
|
+
accessList,
|
|
49285
|
+
account,
|
|
49286
|
+
authorizationList,
|
|
49287
|
+
blobs,
|
|
49288
|
+
chainId,
|
|
49289
|
+
data: dataSuffix ? concat2([data ?? "0x", dataSuffix]) : data,
|
|
49290
|
+
gas,
|
|
49291
|
+
gasPrice,
|
|
49292
|
+
maxFeePerBlobGas,
|
|
49293
|
+
maxFeePerGas,
|
|
49294
|
+
maxPriorityFeePerGas,
|
|
49295
|
+
nonce,
|
|
49296
|
+
to,
|
|
49297
|
+
type,
|
|
49298
|
+
value
|
|
49299
|
+
}, "sendTransaction");
|
|
49300
|
+
const isWalletNamespaceSupported = supportsWalletNamespace2.get(client.uid);
|
|
49301
|
+
const method = isWalletNamespaceSupported ? "wallet_sendTransaction" : "eth_sendTransaction";
|
|
49302
|
+
const hash4 = await (async () => {
|
|
49303
|
+
try {
|
|
49304
|
+
return await client.request({
|
|
49305
|
+
method,
|
|
49306
|
+
params: [request]
|
|
49307
|
+
}, { retryCount: 0 });
|
|
49308
|
+
} catch (e) {
|
|
49309
|
+
if (isWalletNamespaceSupported === false)
|
|
49310
|
+
throw e;
|
|
49311
|
+
const error = e;
|
|
49312
|
+
if (error.name === "InvalidInputRpcError" || error.name === "InvalidParamsRpcError" || error.name === "MethodNotFoundRpcError" || error.name === "MethodNotSupportedRpcError") {
|
|
49313
|
+
return await client.request({
|
|
49314
|
+
method: "wallet_sendTransaction",
|
|
49315
|
+
params: [request]
|
|
49316
|
+
}, { retryCount: 0 }).then((hash5) => {
|
|
49317
|
+
supportsWalletNamespace2.set(client.uid, true);
|
|
49318
|
+
return hash5;
|
|
49319
|
+
}).catch((e2) => {
|
|
49320
|
+
const walletNamespaceError = e2;
|
|
49321
|
+
if (walletNamespaceError.name === "MethodNotFoundRpcError" || walletNamespaceError.name === "MethodNotSupportedRpcError") {
|
|
49322
|
+
supportsWalletNamespace2.set(client.uid, false);
|
|
49323
|
+
throw error;
|
|
49324
|
+
}
|
|
49325
|
+
throw walletNamespaceError;
|
|
49326
|
+
});
|
|
49327
|
+
}
|
|
49328
|
+
throw error;
|
|
49329
|
+
}
|
|
49330
|
+
})();
|
|
49331
|
+
const receipt = await getAction(client, waitForTransactionReceipt, "waitForTransactionReceipt")({
|
|
49332
|
+
checkReplacement: false,
|
|
49333
|
+
hash: hash4,
|
|
49334
|
+
pollingInterval,
|
|
49335
|
+
timeout
|
|
49336
|
+
});
|
|
49337
|
+
if (throwOnReceiptRevert && receipt.status === "reverted")
|
|
49338
|
+
throw new TransactionReceiptRevertedError({ receipt });
|
|
49339
|
+
return receipt;
|
|
49340
|
+
}
|
|
49341
|
+
if (account?.type === "local") {
|
|
49342
|
+
if (account.nonceManager && typeof nonce === "undefined") {
|
|
49343
|
+
const requestChainId = rest.chainId;
|
|
49344
|
+
const chainId = await (async () => {
|
|
49345
|
+
if (typeof requestChainId === "number")
|
|
49346
|
+
return requestChainId;
|
|
49347
|
+
if (chain2)
|
|
49348
|
+
return chain2.id;
|
|
49349
|
+
return getAction(client, getChainId, "getChainId")({});
|
|
49350
|
+
})();
|
|
49351
|
+
nonceManagerParameters = { address: account.address, chainId };
|
|
49352
|
+
}
|
|
49353
|
+
const request = await getAction(client, prepareTransactionRequest, "prepareTransactionRequest")({
|
|
49354
|
+
account,
|
|
49355
|
+
accessList,
|
|
49356
|
+
authorizationList,
|
|
49357
|
+
blobs,
|
|
49358
|
+
chain: chain2,
|
|
49359
|
+
data: dataSuffix ? concat2([data ?? "0x", dataSuffix]) : data,
|
|
49360
|
+
gas,
|
|
49361
|
+
gasPrice,
|
|
49362
|
+
maxFeePerBlobGas,
|
|
49363
|
+
maxFeePerGas,
|
|
49364
|
+
maxPriorityFeePerGas,
|
|
49365
|
+
nonce,
|
|
49366
|
+
nonceManager: account.nonceManager,
|
|
49367
|
+
parameters: [...defaultParameters, "sidecars"],
|
|
49368
|
+
type,
|
|
49369
|
+
value,
|
|
49370
|
+
...rest,
|
|
49371
|
+
to
|
|
49372
|
+
});
|
|
49373
|
+
const serializer = chain2?.serializers?.transaction;
|
|
49374
|
+
const serializedTransaction = await account.signTransaction(request, {
|
|
49375
|
+
serializer
|
|
49376
|
+
});
|
|
49377
|
+
return await getAction(client, sendRawTransactionSync, "sendRawTransactionSync")({
|
|
49378
|
+
serializedTransaction,
|
|
49379
|
+
throwOnReceiptRevert,
|
|
49380
|
+
timeout: parameters.timeout
|
|
49381
|
+
});
|
|
49382
|
+
}
|
|
49383
|
+
if (account?.type === "smart")
|
|
49384
|
+
throw new AccountTypeNotSupportedError({
|
|
49385
|
+
metaMessages: [
|
|
49386
|
+
"Consider using the `sendUserOperation` Action instead."
|
|
49387
|
+
],
|
|
49388
|
+
docsPath: "/docs/actions/bundler/sendUserOperation",
|
|
49389
|
+
type: "smart"
|
|
49390
|
+
});
|
|
49391
|
+
throw new AccountTypeNotSupportedError({
|
|
49392
|
+
docsPath: "/docs/actions/wallet/sendTransactionSync",
|
|
49393
|
+
type: account?.type
|
|
49394
|
+
});
|
|
49395
|
+
} catch (err) {
|
|
49396
|
+
if (err instanceof AccountTypeNotSupportedError)
|
|
49397
|
+
throw err;
|
|
49398
|
+
if (nonceManagerParameters && !(err instanceof TransactionReceiptRevertedError))
|
|
49399
|
+
account?.nonceManager?.reset(nonceManagerParameters);
|
|
49400
|
+
throw getTransactionError(err, {
|
|
49401
|
+
...parameters,
|
|
49402
|
+
account,
|
|
49403
|
+
chain: parameters.chain || void 0
|
|
49404
|
+
});
|
|
49405
|
+
}
|
|
49406
|
+
}
|
|
49407
|
+
|
|
49408
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/showCallsStatus.js
|
|
49409
|
+
async function showCallsStatus(client, parameters) {
|
|
49410
|
+
const { id } = parameters;
|
|
49411
|
+
await client.request({
|
|
49412
|
+
method: "wallet_showCallsStatus",
|
|
49413
|
+
params: [id]
|
|
49414
|
+
});
|
|
49415
|
+
return;
|
|
49416
|
+
}
|
|
49417
|
+
|
|
49418
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/signAuthorization.js
|
|
49419
|
+
init_parseAccount();
|
|
49420
|
+
async function signAuthorization2(client, parameters) {
|
|
49421
|
+
const { account: account_ = client.account } = parameters;
|
|
49422
|
+
if (!account_)
|
|
49423
|
+
throw new AccountNotFoundError({
|
|
49424
|
+
docsPath: "/docs/eip7702/signAuthorization"
|
|
49425
|
+
});
|
|
49426
|
+
const account = parseAccount(account_);
|
|
49427
|
+
if (!account.signAuthorization)
|
|
49428
|
+
throw new AccountTypeNotSupportedError({
|
|
49429
|
+
docsPath: "/docs/eip7702/signAuthorization",
|
|
49430
|
+
metaMessages: [
|
|
49431
|
+
"The `signAuthorization` Action does not support JSON-RPC Accounts."
|
|
49432
|
+
],
|
|
49433
|
+
type: account.type
|
|
49434
|
+
});
|
|
49435
|
+
const authorization = await prepareAuthorization(client, parameters);
|
|
49436
|
+
return account.signAuthorization(authorization);
|
|
49437
|
+
}
|
|
49438
|
+
|
|
49439
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/signMessage.js
|
|
49440
|
+
init_parseAccount();
|
|
49441
|
+
init_toHex2();
|
|
49442
|
+
async function signMessage2(client, { account: account_ = client.account, message }) {
|
|
49443
|
+
if (!account_)
|
|
49444
|
+
throw new AccountNotFoundError({
|
|
49445
|
+
docsPath: "/docs/actions/wallet/signMessage"
|
|
49446
|
+
});
|
|
49447
|
+
const account = parseAccount(account_);
|
|
49448
|
+
if (account.signMessage)
|
|
49449
|
+
return account.signMessage({ message });
|
|
49450
|
+
const message_ = (() => {
|
|
49451
|
+
if (typeof message === "string")
|
|
49452
|
+
return stringToHex2(message);
|
|
49453
|
+
if (message.raw instanceof Uint8Array)
|
|
49454
|
+
return toHex2(message.raw);
|
|
49455
|
+
return message.raw;
|
|
49456
|
+
})();
|
|
49457
|
+
return client.request({
|
|
49458
|
+
method: "personal_sign",
|
|
49459
|
+
params: [message_, account.address]
|
|
49460
|
+
}, { retryCount: 0 });
|
|
49461
|
+
}
|
|
49462
|
+
|
|
49463
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/signTransaction.js
|
|
49464
|
+
init_parseAccount();
|
|
49465
|
+
init_toHex2();
|
|
49466
|
+
init_transactionRequest();
|
|
49467
|
+
init_assertRequest();
|
|
49468
|
+
async function signTransaction2(client, parameters) {
|
|
49469
|
+
const { account: account_ = client.account, chain: chain2 = client.chain, ...transaction } = parameters;
|
|
49470
|
+
if (!account_)
|
|
49471
|
+
throw new AccountNotFoundError({
|
|
49472
|
+
docsPath: "/docs/actions/wallet/signTransaction"
|
|
49473
|
+
});
|
|
49474
|
+
const account = parseAccount(account_);
|
|
49475
|
+
assertRequest({
|
|
49476
|
+
account,
|
|
49477
|
+
...parameters
|
|
49478
|
+
});
|
|
49479
|
+
const chainId = await getAction(client, getChainId, "getChainId")({});
|
|
49480
|
+
if (chain2 !== null)
|
|
49481
|
+
assertCurrentChain({
|
|
49482
|
+
currentChainId: chainId,
|
|
49483
|
+
chain: chain2
|
|
49484
|
+
});
|
|
49485
|
+
const formatters = chain2?.formatters || client.chain?.formatters;
|
|
49486
|
+
const format = formatters?.transactionRequest?.format || formatTransactionRequest;
|
|
49487
|
+
if (account.signTransaction)
|
|
49488
|
+
return account.signTransaction({
|
|
49489
|
+
...transaction,
|
|
49490
|
+
account,
|
|
49491
|
+
chainId
|
|
49492
|
+
}, { serializer: client.chain?.serializers?.transaction });
|
|
49493
|
+
return await client.request({
|
|
49494
|
+
method: "eth_signTransaction",
|
|
49495
|
+
params: [
|
|
49496
|
+
{
|
|
49497
|
+
...format({
|
|
49498
|
+
...transaction,
|
|
49499
|
+
account
|
|
49500
|
+
}, "signTransaction"),
|
|
49501
|
+
chainId: numberToHex2(chainId),
|
|
49502
|
+
from: account.address
|
|
49503
|
+
}
|
|
49504
|
+
]
|
|
49505
|
+
}, { retryCount: 0 });
|
|
49506
|
+
}
|
|
49507
|
+
|
|
49508
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/signTypedData.js
|
|
49509
|
+
init_parseAccount();
|
|
49510
|
+
async function signTypedData2(client, parameters) {
|
|
49511
|
+
const { account: account_ = client.account, domain, message, primaryType } = parameters;
|
|
49512
|
+
if (!account_)
|
|
49513
|
+
throw new AccountNotFoundError({
|
|
49514
|
+
docsPath: "/docs/actions/wallet/signTypedData"
|
|
49515
|
+
});
|
|
49516
|
+
const account = parseAccount(account_);
|
|
49517
|
+
const types = {
|
|
49518
|
+
EIP712Domain: getTypesForEIP712Domain2({ domain }),
|
|
49519
|
+
...parameters.types
|
|
49520
|
+
};
|
|
49521
|
+
validateTypedData2({ domain, message, primaryType, types });
|
|
49522
|
+
if (account.signTypedData)
|
|
49523
|
+
return account.signTypedData({ domain, message, primaryType, types });
|
|
49524
|
+
const typedData = serializeTypedData({ domain, message, primaryType, types });
|
|
49525
|
+
return client.request({
|
|
49526
|
+
method: "eth_signTypedData_v4",
|
|
49527
|
+
params: [account.address, typedData]
|
|
49528
|
+
}, { retryCount: 0 });
|
|
49529
|
+
}
|
|
49530
|
+
|
|
49531
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/switchChain.js
|
|
49532
|
+
init_toHex2();
|
|
49533
|
+
async function switchChain(client, { id }) {
|
|
49534
|
+
await client.request({
|
|
49535
|
+
method: "wallet_switchEthereumChain",
|
|
49536
|
+
params: [
|
|
49537
|
+
{
|
|
49538
|
+
chainId: numberToHex2(id)
|
|
49539
|
+
}
|
|
49540
|
+
]
|
|
49541
|
+
}, { retryCount: 0 });
|
|
49542
|
+
}
|
|
49543
|
+
|
|
49544
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/watchAsset.js
|
|
49545
|
+
async function watchAsset(client, params) {
|
|
49546
|
+
const added = await client.request({
|
|
49547
|
+
method: "wallet_watchAsset",
|
|
49548
|
+
params
|
|
49549
|
+
}, { retryCount: 0 });
|
|
49550
|
+
return added;
|
|
49551
|
+
}
|
|
49552
|
+
|
|
49553
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/actions/wallet/writeContractSync.js
|
|
49554
|
+
async function writeContractSync(client, parameters) {
|
|
49555
|
+
return writeContract.internal(client, sendTransactionSync, "sendTransactionSync", parameters);
|
|
49556
|
+
}
|
|
49557
|
+
|
|
49558
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/clients/decorators/wallet.js
|
|
49559
|
+
function walletActions(client) {
|
|
49560
|
+
return {
|
|
49561
|
+
addChain: (args) => addChain(client, args),
|
|
49562
|
+
deployContract: (args) => deployContract(client, args),
|
|
49563
|
+
fillTransaction: (args) => fillTransaction(client, args),
|
|
49564
|
+
getAddresses: () => getAddresses(client),
|
|
49565
|
+
getCallsStatus: (args) => getCallsStatus(client, args),
|
|
49566
|
+
getCapabilities: (args) => getCapabilities(client, args),
|
|
49567
|
+
getChainId: () => getChainId(client),
|
|
49568
|
+
getPermissions: () => getPermissions(client),
|
|
49569
|
+
prepareAuthorization: (args) => prepareAuthorization(client, args),
|
|
49570
|
+
prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),
|
|
49571
|
+
requestAddresses: () => requestAddresses(client),
|
|
49572
|
+
requestPermissions: (args) => requestPermissions(client, args),
|
|
49573
|
+
sendCalls: (args) => sendCalls(client, args),
|
|
49574
|
+
sendCallsSync: (args) => sendCallsSync(client, args),
|
|
49575
|
+
sendRawTransaction: (args) => sendRawTransaction(client, args),
|
|
49576
|
+
sendRawTransactionSync: (args) => sendRawTransactionSync(client, args),
|
|
49577
|
+
sendTransaction: (args) => sendTransaction(client, args),
|
|
49578
|
+
sendTransactionSync: (args) => sendTransactionSync(client, args),
|
|
49579
|
+
showCallsStatus: (args) => showCallsStatus(client, args),
|
|
49580
|
+
signAuthorization: (args) => signAuthorization2(client, args),
|
|
49581
|
+
signMessage: (args) => signMessage2(client, args),
|
|
49582
|
+
signTransaction: (args) => signTransaction2(client, args),
|
|
49583
|
+
signTypedData: (args) => signTypedData2(client, args),
|
|
49584
|
+
switchChain: (args) => switchChain(client, args),
|
|
49585
|
+
waitForCallsStatus: (args) => waitForCallsStatus(client, args),
|
|
49586
|
+
watchAsset: (args) => watchAsset(client, args),
|
|
49587
|
+
writeContract: (args) => writeContract(client, args),
|
|
49588
|
+
writeContractSync: (args) => writeContractSync(client, args)
|
|
49589
|
+
};
|
|
49590
|
+
}
|
|
49591
|
+
|
|
49592
|
+
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/clients/createWalletClient.js
|
|
49593
|
+
function createWalletClient(parameters) {
|
|
49594
|
+
const { key = "wallet", name = "Wallet Client", transport } = parameters;
|
|
49595
|
+
const client = createClient({
|
|
49596
|
+
...parameters,
|
|
49597
|
+
key,
|
|
49598
|
+
name,
|
|
49599
|
+
transport,
|
|
49600
|
+
type: "walletClient"
|
|
49601
|
+
});
|
|
49602
|
+
return client.extend(walletActions);
|
|
49603
|
+
}
|
|
49604
|
+
|
|
48440
49605
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/clients/transports/createTransport.js
|
|
48441
49606
|
function createTransport({ key, methods, name, request, retryCount = 3, retryDelay = 150, timeout, type }, value) {
|
|
48442
49607
|
const uid2 = uid();
|
|
@@ -48620,7 +49785,7 @@ async function sign2({ hash: hash4, privateKey, to = "object" }) {
|
|
|
48620
49785
|
}
|
|
48621
49786
|
|
|
48622
49787
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/accounts/utils/signAuthorization.js
|
|
48623
|
-
async function
|
|
49788
|
+
async function signAuthorization3(parameters) {
|
|
48624
49789
|
const { chainId, nonce, privateKey, to = "object" } = parameters;
|
|
48625
49790
|
const address = parameters.contractAddress ?? parameters.address;
|
|
48626
49791
|
const signature = await sign2({
|
|
@@ -48639,13 +49804,13 @@ async function signAuthorization2(parameters) {
|
|
|
48639
49804
|
}
|
|
48640
49805
|
|
|
48641
49806
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/accounts/utils/signMessage.js
|
|
48642
|
-
async function
|
|
49807
|
+
async function signMessage3({ message, privateKey }) {
|
|
48643
49808
|
return await sign2({ hash: hashMessage2(message), privateKey, to: "hex" });
|
|
48644
49809
|
}
|
|
48645
49810
|
|
|
48646
49811
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/accounts/utils/signTransaction.js
|
|
48647
49812
|
init_keccak2562();
|
|
48648
|
-
async function
|
|
49813
|
+
async function signTransaction3(parameters) {
|
|
48649
49814
|
const { privateKey, transaction, serializer = serializeTransaction2 } = parameters;
|
|
48650
49815
|
const signableTransaction = (() => {
|
|
48651
49816
|
if (transaction.type === "eip4844")
|
|
@@ -48663,7 +49828,7 @@ async function signTransaction2(parameters) {
|
|
|
48663
49828
|
}
|
|
48664
49829
|
|
|
48665
49830
|
// ../../node_modules/.pnpm/viem@2.51.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@3.25.76/node_modules/viem/_esm/accounts/utils/signTypedData.js
|
|
48666
|
-
async function
|
|
49831
|
+
async function signTypedData3(parameters) {
|
|
48667
49832
|
const { privateKey, ...typedData } = parameters;
|
|
48668
49833
|
return await sign2({
|
|
48669
49834
|
hash: hashTypedData2(typedData),
|
|
@@ -48684,16 +49849,16 @@ function privateKeyToAccount2(privateKey, options = {}) {
|
|
|
48684
49849
|
return sign2({ hash: hash4, privateKey, to: "hex" });
|
|
48685
49850
|
},
|
|
48686
49851
|
async signAuthorization(authorization) {
|
|
48687
|
-
return
|
|
49852
|
+
return signAuthorization3({ ...authorization, privateKey });
|
|
48688
49853
|
},
|
|
48689
49854
|
async signMessage({ message }) {
|
|
48690
|
-
return
|
|
49855
|
+
return signMessage3({ message, privateKey });
|
|
48691
49856
|
},
|
|
48692
49857
|
async signTransaction(transaction, { serializer } = {}) {
|
|
48693
|
-
return
|
|
49858
|
+
return signTransaction3({ privateKey, transaction, serializer });
|
|
48694
49859
|
},
|
|
48695
49860
|
async signTypedData(typedData) {
|
|
48696
|
-
return
|
|
49861
|
+
return signTypedData3({ ...typedData, privateKey });
|
|
48697
49862
|
}
|
|
48698
49863
|
});
|
|
48699
49864
|
return {
|
|
@@ -49386,8 +50551,8 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49386
50551
|
}
|
|
49387
50552
|
res.json({ ok: true });
|
|
49388
50553
|
});
|
|
49389
|
-
app.post("/api/mandate-submit", (req, res) => {
|
|
49390
|
-
const { signature, signedAt } = req.body ?? {};
|
|
50554
|
+
app.post("/api/mandate-submit", async (req, res) => {
|
|
50555
|
+
const { signature, signedAt, permissions: signedAddrs, deadline } = req.body ?? {};
|
|
49391
50556
|
if (!signature) {
|
|
49392
50557
|
res.status(400).json({ error: "missing signature" });
|
|
49393
50558
|
return;
|
|
@@ -49399,17 +50564,57 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49399
50564
|
res.status(404).json({ error: "no mandate draft to submit" });
|
|
49400
50565
|
return;
|
|
49401
50566
|
}
|
|
50567
|
+
const safe = draft.account;
|
|
50568
|
+
const chainId = draft.chainId;
|
|
50569
|
+
const draftPerms = draft.permissions ?? draft.items ?? [];
|
|
50570
|
+
const permissionMeta = draftPerms.map((p) => ({
|
|
50571
|
+
template: p.label ?? p.template ?? null,
|
|
50572
|
+
address: p.address ?? p.template ?? null,
|
|
50573
|
+
explanation: p.explanation ?? null
|
|
50574
|
+
}));
|
|
50575
|
+
const addrs = (Array.isArray(signedAddrs) && signedAddrs.length ? signedAddrs : permissionMeta.map((p) => p.address)).filter(Boolean).map((a) => getAddress(a));
|
|
50576
|
+
let txHash = null;
|
|
50577
|
+
try {
|
|
50578
|
+
if (!deadline) throw new Error("missing deadline");
|
|
50579
|
+
if (addrs.length === 0) throw new Error("no permissions to register");
|
|
50580
|
+
const env = parseEnvFile(at(".env.local"));
|
|
50581
|
+
const password = process.env.SAIL_PASSPHRASE || env.SAIL_PASSPHRASE;
|
|
50582
|
+
if (!password) throw new Error("SAIL_PASSPHRASE not set \u2014 cannot unlock the agent key");
|
|
50583
|
+
const rpcUrl = env.RPC_URL || env.BASE_SEPOLIA_RPC_URL;
|
|
50584
|
+
if (!rpcUrl) throw new Error("RPC_URL not set in .sail/.env.local");
|
|
50585
|
+
const deployment = getSailDeployment(Number(chainId));
|
|
50586
|
+
if (!deployment?.kernel) throw new Error(`No SailKernel deployment for chain ${chainId}`);
|
|
50587
|
+
const keyring = await LocalKeyring.fromKeystoreFile(at("keys/manager.json"), password);
|
|
50588
|
+
const publicClient = createPublicClient({ transport: http(rpcUrl) });
|
|
50589
|
+
let fee = 0n;
|
|
50590
|
+
for (const a of addrs) fee += await estimatePermissionFee(publicClient, deployment.governance, a);
|
|
50591
|
+
const chain2 = defineChain({
|
|
50592
|
+
id: Number(chainId),
|
|
50593
|
+
name: `chain-${chainId}`,
|
|
50594
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
|
50595
|
+
rpcUrls: { default: { http: [rpcUrl] } }
|
|
50596
|
+
});
|
|
50597
|
+
const walletClient = createWalletClient({ account: keyring.viemAccount, chain: chain2, transport: http(rpcUrl) });
|
|
50598
|
+
const data = encodeFunctionData2({
|
|
50599
|
+
abi: SailKernelAbi,
|
|
50600
|
+
functionName: "registerPermissions",
|
|
50601
|
+
args: [getAddress(safe), addrs, BigInt(deadline), signature]
|
|
50602
|
+
});
|
|
50603
|
+
txHash = await walletClient.sendTransaction({ to: deployment.kernel, data, value: fee, account: keyring.viemAccount, chain: chain2 });
|
|
50604
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
50605
|
+
if (receipt.status !== "success") throw new Error(`registerPermissions reverted (tx ${txHash})`);
|
|
50606
|
+
} catch (err) {
|
|
50607
|
+
res.status(500).json({ error: `On-chain registration failed: ${err?.message ?? String(err)}` });
|
|
50608
|
+
return;
|
|
50609
|
+
}
|
|
49402
50610
|
const mandate = {
|
|
49403
|
-
safe
|
|
49404
|
-
chainId
|
|
50611
|
+
safe,
|
|
50612
|
+
chainId,
|
|
49405
50613
|
signedAt: signedAt || (/* @__PURE__ */ new Date()).toISOString(),
|
|
49406
50614
|
signature,
|
|
49407
|
-
registeredOnChain:
|
|
49408
|
-
|
|
49409
|
-
|
|
49410
|
-
params: it.params,
|
|
49411
|
-
explanation: it.explanation
|
|
49412
|
-
}))
|
|
50615
|
+
registeredOnChain: true,
|
|
50616
|
+
txHash,
|
|
50617
|
+
permissions: permissionMeta
|
|
49413
50618
|
};
|
|
49414
50619
|
try {
|
|
49415
50620
|
import_node_fs2.default.mkdirSync(sailDir, { recursive: true });
|
|
@@ -49419,7 +50624,10 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49419
50624
|
existing = Array.isArray(raw) ? raw : [raw];
|
|
49420
50625
|
} catch {
|
|
49421
50626
|
}
|
|
49422
|
-
|
|
50627
|
+
const deduped = existing.filter(
|
|
50628
|
+
(m) => !(m.safe?.toLowerCase() === safe?.toLowerCase() && m.chainId === chainId)
|
|
50629
|
+
);
|
|
50630
|
+
import_node_fs2.default.writeFileSync(at("mandate.json"), `${JSON.stringify([...deduped, mandate], null, 2)}
|
|
49423
50631
|
`);
|
|
49424
50632
|
try {
|
|
49425
50633
|
import_node_fs2.default.rmSync(at("mandate-draft.json"));
|