@dev.sail.money/sailor 1.4.0-244 → 1.4.0-246
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 +58 -32
- package/packages/cli/dist/server.cjs +66 -15
- package/packages/sdk/dist/chains.d.ts +7 -0
- package/packages/sdk/dist/chains.d.ts.map +1 -1
- package/packages/sdk/dist/chains.js +25 -2
- package/packages/sdk/dist/chains.js.map +1 -1
- package/packages/sdk/dist/fees.d.ts +7 -3
- package/packages/sdk/dist/fees.d.ts.map +1 -1
- package/packages/sdk/dist/fees.js +11 -7
- package/packages/sdk/dist/fees.js.map +1 -1
- package/packages/sdk/dist/index.d.ts +1 -1
- package/packages/sdk/dist/index.d.ts.map +1 -1
- package/packages/sdk/dist/index.js +1 -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/dist/signing.d.ts +8 -2
- package/packages/sdk/dist/signing.d.ts.map +1 -1
- package/packages/sdk/dist/types.d.ts +11 -0
- package/packages/sdk/dist/types.d.ts.map +1 -1
- package/packages/ui/dist/assets/{add-sHg4oAtj.js → add-CtJUci6C.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-BhPcqrMm.js → all-wallets-CmoyTLu1.js} +1 -1
- package/packages/ui/dist/assets/{app-store-B_PQMwCf.js → app-store-DTGAxMMc.js} +1 -1
- package/packages/ui/dist/assets/{apple-CqAFK7Fj.js → apple-CWqFpAem.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-CbxIflTv.js → arrow-bottom-BFcyIsf6.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-BFgY35YA.js → arrow-bottom-circle-D7LA8RLx.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-DCG2m2BY.js → arrow-left-Dw325uUv.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-NrPOhG6W.js → arrow-right-DUH-BM2U.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-BHTmGsDP.js → arrow-top-eaiSDE6T.js} +1 -1
- package/packages/ui/dist/assets/{bank-BqDvUazs.js → bank-CkMxHT1h.js} +1 -1
- package/packages/ui/dist/assets/{basic-CHFjQMod.js → basic-CUWDDxlb.js} +1 -1
- package/packages/ui/dist/assets/{browser-C_VdKE7p.js → browser-C7bBquZ7.js} +1 -1
- package/packages/ui/dist/assets/{card-w-1brQoV.js → card-DYhUqAqo.js} +1 -1
- package/packages/ui/dist/assets/{ccip-jvDTeGaI.js → ccip-Ce6Za_Q7.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-CLBmxdAF.js → checkmark-BYWSBHZq.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-Ca_e1PMs.js → checkmark-bold-DXcFaXzG.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-BhvFRdSL.js → chevron-bottom-DFvy00qk.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-cjMaNbHC.js → chevron-left-WiP3Cux5.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-CRuHR0b-.js → chevron-right-D92guNRC.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-Bq0a2jj-.js → chevron-top-4LSvHoLT.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-Cieq6j7x.js → chrome-store-DXliZUXe.js} +1 -1
- package/packages/ui/dist/assets/{clock-Dkj5WbVg.js → clock-sCqloEyi.js} +1 -1
- package/packages/ui/dist/assets/{close-C8eE6Dfz.js → close-Dz0TKSii.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-DndKH-8C.js → coinPlaceholder-QMi-sKN3.js} +1 -1
- package/packages/ui/dist/assets/{compass-DzoLByzm.js → compass-D-0gTf_V.js} +1 -1
- package/packages/ui/dist/assets/{copy-Y7UMmVLt.js → copy-DAc1EqPJ.js} +1 -1
- package/packages/ui/dist/assets/{core-BkWdAWjX.js → core-ntNpthWA.js} +3 -3
- package/packages/ui/dist/assets/{cursor-BAQNxqYB.js → cursor-BhrhwUyj.js} +1 -1
- package/packages/ui/dist/assets/{cursor-transparent-BUHY29Re.js → cursor-transparent-8cOX-3uX.js} +1 -1
- package/packages/ui/dist/assets/{desktop-DkZLCs5P.js → desktop-DyozX_8i.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-CphsO-wg.js → disconnect-B8CfjrDl.js} +1 -1
- package/packages/ui/dist/assets/{discord-CYH46bgt.js → discord-Dr3yXdjP.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-2-3-Icbx.js → etherscan-BNpBz1HD.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-Bx9-1mpn.js → exclamation-triangle-DFY30hb1.js} +1 -1
- package/packages/ui/dist/assets/{extension-BuDZDNPV.js → extension-Dv3iYkI2.js} +1 -1
- package/packages/ui/dist/assets/{external-link-k6oTiNch.js → external-link-BflubRj1.js} +1 -1
- package/packages/ui/dist/assets/{facebook-BVB4qCju.js → facebook-BWFRpFEI.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-CxfWmDK3.js → farcaster-jQMHtCE2.js} +1 -1
- package/packages/ui/dist/assets/{filters-CXyIzkBz.js → filters-Bj1lMjaM.js} +1 -1
- package/packages/ui/dist/assets/{github-Bga1HQTm.js → github-D3Y1bD4Z.js} +1 -1
- package/packages/ui/dist/assets/{google-CKLjkN5t.js → google-0pri24t7.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-CW4A601v.js → help-circle-9YlhA7Xs.js} +1 -1
- package/packages/ui/dist/assets/{id-BaRFLHqy.js → id-2yC43QZe.js} +1 -1
- package/packages/ui/dist/assets/{image-4pE_c0pP.js → image-C_b8Yv_f.js} +1 -1
- package/packages/ui/dist/assets/{index-BKPTb_0U.js → index-B7KR7tEX.js} +1 -1
- package/packages/ui/dist/assets/{index-BaLMTrx4.js → index-Bf44ZhbB.js} +1 -1
- package/packages/ui/dist/assets/index-Bhs04pyf.js +1780 -0
- package/packages/ui/dist/assets/{index-CguqCMNp.js → index-CwgW7-a2.js} +1 -1
- package/packages/ui/dist/assets/{index-_n5fH6AD.js → index-DeLyQU4R.js} +3 -3
- package/packages/ui/dist/assets/{index.es-rQvUXQTw.js → index.es-472Wq2GN.js} +4 -4
- package/packages/ui/dist/assets/{info-UMAWEFh_.js → info-MHTInMgZ.js} +1 -1
- package/packages/ui/dist/assets/{info-circle-DuTp8NTC.js → info-circle-CWkQmZMQ.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-CkYYJbAa.js → lightbulb-DSHpsXDK.js} +1 -1
- package/packages/ui/dist/assets/{mail-CntZNMWz.js → mail-BY9B7ocg.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-DIj7UxWU.js → metamask-sdk-CGt17A-t.js} +1 -1
- package/packages/ui/dist/assets/{mobile-DdyrzTfW.js → mobile-kvpaAq-t.js} +1 -1
- package/packages/ui/dist/assets/{more-DpZ1Bqpv.js → more-DWUvbIxb.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-B8yy8U56.js → network-placeholder-BPmLhg_I.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-BXFbCJ-Z.js → nftPlaceholder-BoffPbNz.js} +1 -1
- package/packages/ui/dist/assets/{off-DavoQSqH.js → off-BQiIFK5j.js} +1 -1
- package/packages/ui/dist/assets/{play-store-BJeHSxBp.js → play-store-DqQyxCwm.js} +1 -1
- package/packages/ui/dist/assets/{plus-B-L3uTWl.js → plus-CznpWpiG.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-CcQBy6o3.js → qr-code-vDajj4NN.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-BLC3_x1m.js → recycle-horizontal-1Blw-7_T.js} +1 -1
- package/packages/ui/dist/assets/{refresh-78cbzBlS.js → refresh-BGL9QB-h.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-Bx5RmN6G.js → reown-logo-Bt-5VP9T.js} +1 -1
- package/packages/ui/dist/assets/{search-XWB8l5E2.js → search-BjIZCK7B.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-u9EmDRXd.js → secp256k1-CsXOYtlo.js} +1 -1
- package/packages/ui/dist/assets/{send-BjGwACTt.js → send-C91RzpHQ.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-DJWcWn3A.js → swapHorizontal-BYL8bzzZ.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-CG930oAl.js → swapHorizontalBold-SZc8vSlj.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-CHIdtnCI.js → swapHorizontalMedium-DKWd3qQh.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-B2oGt4O4.js → swapHorizontalRoundedBold-B46POIZ2.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-CnjOFXH3.js → swapVertical-D4f0jkeH.js} +1 -1
- package/packages/ui/dist/assets/{telegram-BtOilYdH.js → telegram-BVVbjRio.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-D_VsAJlo.js → three-dots-DQVGHO9G.js} +1 -1
- package/packages/ui/dist/assets/{twitch-BIX3n7hL.js → twitch-CjcFqp-d.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-C3DDaPem.js → twitterIcon-B47ZoR0v.js} +1 -1
- package/packages/ui/dist/assets/{verify-CtzMScZy.js → verify-D3Gyf9Im.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-CVjdmBEW.js → verify-filled-B-9w_cGB.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-BZ3BUhSD.js → w3m-modal-B3dED8lF.js} +1 -1
- package/packages/ui/dist/assets/{wallet-hURaFgJp.js → wallet-D_B2tpmo.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-BcF2KreB.js → wallet-placeholder-DToho7LE.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-C8XCABRo.js → walletconnect-DTGJU1ef.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-BMz6LCU4.js → warning-circle-DdBh-wEA.js} +1 -1
- package/packages/ui/dist/assets/{x-deAHZeLU.js → x-CaOZqgx4.js} +1 -1
- package/packages/ui/dist/index.html +1 -1
- package/packages/ui/dist/assets/index-RMrT9ktE.js +0 -1780
package/package.json
CHANGED
|
@@ -35214,6 +35214,9 @@ var {
|
|
|
35214
35214
|
var CREATE2_KERNEL = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
|
|
35215
35215
|
var CREATE2_MANDATE_FACTORY = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
|
|
35216
35216
|
var CREATE2_GOVERNANCE = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
|
|
35217
|
+
var ETH = { name: "Ether", symbol: "ETH", decimals: 18 };
|
|
35218
|
+
var BNB = { name: "BNB", symbol: "BNB", decimals: 18 };
|
|
35219
|
+
var HYPE = { name: "HYPE", symbol: "HYPE", decimals: 18 };
|
|
35217
35220
|
var chains = {
|
|
35218
35221
|
// Ethereum mainnet
|
|
35219
35222
|
1: {
|
|
@@ -35225,7 +35228,8 @@ var chains = {
|
|
|
35225
35228
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35226
35229
|
governance: CREATE2_GOVERNANCE,
|
|
35227
35230
|
dispatchModel: "selective",
|
|
35228
|
-
protocols: {}
|
|
35231
|
+
protocols: {},
|
|
35232
|
+
nativeCurrency: ETH
|
|
35229
35233
|
},
|
|
35230
35234
|
// Base mainnet
|
|
35231
35235
|
8453: {
|
|
@@ -35237,7 +35241,8 @@ var chains = {
|
|
|
35237
35241
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35238
35242
|
governance: CREATE2_GOVERNANCE,
|
|
35239
35243
|
dispatchModel: "selective",
|
|
35240
|
-
protocols: {}
|
|
35244
|
+
protocols: {},
|
|
35245
|
+
nativeCurrency: ETH
|
|
35241
35246
|
},
|
|
35242
35247
|
// Arbitrum mainnet
|
|
35243
35248
|
42161: {
|
|
@@ -35249,7 +35254,8 @@ var chains = {
|
|
|
35249
35254
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35250
35255
|
governance: CREATE2_GOVERNANCE,
|
|
35251
35256
|
dispatchModel: "selective",
|
|
35252
|
-
protocols: {}
|
|
35257
|
+
protocols: {},
|
|
35258
|
+
nativeCurrency: ETH
|
|
35253
35259
|
},
|
|
35254
35260
|
// Optimism mainnet
|
|
35255
35261
|
10: {
|
|
@@ -35261,7 +35267,8 @@ var chains = {
|
|
|
35261
35267
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35262
35268
|
governance: CREATE2_GOVERNANCE,
|
|
35263
35269
|
dispatchModel: "selective",
|
|
35264
|
-
protocols: {}
|
|
35270
|
+
protocols: {},
|
|
35271
|
+
nativeCurrency: ETH
|
|
35265
35272
|
},
|
|
35266
35273
|
// Unichain mainnet
|
|
35267
35274
|
130: {
|
|
@@ -35273,9 +35280,10 @@ var chains = {
|
|
|
35273
35280
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35274
35281
|
governance: CREATE2_GOVERNANCE,
|
|
35275
35282
|
dispatchModel: "selective",
|
|
35276
|
-
protocols: {}
|
|
35283
|
+
protocols: {},
|
|
35284
|
+
nativeCurrency: ETH
|
|
35277
35285
|
},
|
|
35278
|
-
// BSC mainnet
|
|
35286
|
+
// BSC mainnet — native gas token is BNB, not ETH.
|
|
35279
35287
|
56: {
|
|
35280
35288
|
chainId: 56,
|
|
35281
35289
|
name: "BSC",
|
|
@@ -35285,7 +35293,8 @@ var chains = {
|
|
|
35285
35293
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35286
35294
|
governance: CREATE2_GOVERNANCE,
|
|
35287
35295
|
dispatchModel: "selective",
|
|
35288
|
-
protocols: {}
|
|
35296
|
+
protocols: {},
|
|
35297
|
+
nativeCurrency: BNB
|
|
35289
35298
|
},
|
|
35290
35299
|
// World Chain mainnet
|
|
35291
35300
|
480: {
|
|
@@ -35297,9 +35306,10 @@ var chains = {
|
|
|
35297
35306
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35298
35307
|
governance: CREATE2_GOVERNANCE,
|
|
35299
35308
|
dispatchModel: "selective",
|
|
35300
|
-
protocols: {}
|
|
35309
|
+
protocols: {},
|
|
35310
|
+
nativeCurrency: ETH
|
|
35301
35311
|
},
|
|
35302
|
-
// HyperEVM mainnet
|
|
35312
|
+
// HyperEVM mainnet — native gas token is HYPE, not ETH.
|
|
35303
35313
|
999: {
|
|
35304
35314
|
chainId: 999,
|
|
35305
35315
|
name: "HyperEVM",
|
|
@@ -35309,7 +35319,8 @@ var chains = {
|
|
|
35309
35319
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35310
35320
|
governance: CREATE2_GOVERNANCE,
|
|
35311
35321
|
dispatchModel: "selective",
|
|
35312
|
-
protocols: {}
|
|
35322
|
+
protocols: {},
|
|
35323
|
+
nativeCurrency: HYPE
|
|
35313
35324
|
},
|
|
35314
35325
|
// MegaETH mainnet
|
|
35315
35326
|
4326: {
|
|
@@ -35321,7 +35332,8 @@ var chains = {
|
|
|
35321
35332
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35322
35333
|
governance: CREATE2_GOVERNANCE,
|
|
35323
35334
|
dispatchModel: "selective",
|
|
35324
|
-
protocols: {}
|
|
35335
|
+
protocols: {},
|
|
35336
|
+
nativeCurrency: ETH
|
|
35325
35337
|
},
|
|
35326
35338
|
// Base Sepolia (testnet)
|
|
35327
35339
|
84532: {
|
|
@@ -35333,7 +35345,8 @@ var chains = {
|
|
|
35333
35345
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35334
35346
|
governance: CREATE2_GOVERNANCE,
|
|
35335
35347
|
dispatchModel: "selective",
|
|
35336
|
-
protocols: {}
|
|
35348
|
+
protocols: {},
|
|
35349
|
+
nativeCurrency: ETH
|
|
35337
35350
|
},
|
|
35338
35351
|
// Eth Sepolia (testnet)
|
|
35339
35352
|
11155111: {
|
|
@@ -35345,7 +35358,8 @@ var chains = {
|
|
|
35345
35358
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
35346
35359
|
governance: CREATE2_GOVERNANCE,
|
|
35347
35360
|
dispatchModel: "selective",
|
|
35348
|
-
protocols: {}
|
|
35361
|
+
protocols: {},
|
|
35362
|
+
nativeCurrency: ETH
|
|
35349
35363
|
}
|
|
35350
35364
|
};
|
|
35351
35365
|
function getChain(chainId) {
|
|
@@ -35356,6 +35370,9 @@ function getChain(chainId) {
|
|
|
35356
35370
|
return config;
|
|
35357
35371
|
}
|
|
35358
35372
|
var defaultRpcUrls = Object.fromEntries(Object.values(chains).map((c) => [c.chainId, c.defaultRpcUrl]));
|
|
35373
|
+
function getNativeCurrencySymbol(chainId) {
|
|
35374
|
+
return chains[chainId]?.nativeCurrency.symbol ?? "ETH";
|
|
35375
|
+
}
|
|
35359
35376
|
|
|
35360
35377
|
// ../sdk/dist/client.js
|
|
35361
35378
|
init_esm2();
|
|
@@ -38155,13 +38172,13 @@ async function estimateMandateRegistrationFee(publicClient, governance, permissi
|
|
|
38155
38172
|
const totalWei = flatFeeWei * BigInt(permissions.length);
|
|
38156
38173
|
return { totalWei, perPermission };
|
|
38157
38174
|
}
|
|
38158
|
-
function describeMandateFee(estimate) {
|
|
38175
|
+
function describeMandateFee(estimate, symbol = "ETH") {
|
|
38159
38176
|
const count = estimate.perPermission.length;
|
|
38160
38177
|
if (count === 0)
|
|
38161
|
-
return
|
|
38178
|
+
return `Registration fee: 0 ${symbol} (no new permissions to register)`;
|
|
38162
38179
|
const noun = count === 1 ? "permission" : "permissions";
|
|
38163
38180
|
const perFeeWei = estimate.perPermission[0].feeWei;
|
|
38164
|
-
return `Registration fee: ${formatEther(estimate.totalWei)}
|
|
38181
|
+
return `Registration fee: ${formatEther(estimate.totalWei)} ${symbol} (${count} ${noun} \xD7 ${formatEther(perFeeWei)} ${symbol})`;
|
|
38165
38182
|
}
|
|
38166
38183
|
var RegistrationFeeError = class extends Error {
|
|
38167
38184
|
/** Total fee required (wei). */
|
|
@@ -38175,9 +38192,9 @@ var RegistrationFeeError = class extends Error {
|
|
|
38175
38192
|
this.balanceWei = balanceWei;
|
|
38176
38193
|
}
|
|
38177
38194
|
};
|
|
38178
|
-
function assertFeeAffordable(balanceWei, totalFeeWei) {
|
|
38195
|
+
function assertFeeAffordable(balanceWei, totalFeeWei, symbol = "ETH") {
|
|
38179
38196
|
if (balanceWei < totalFeeWei) {
|
|
38180
|
-
throw new RegistrationFeeError(`Insufficient
|
|
38197
|
+
throw new RegistrationFeeError(`Insufficient ${symbol} for the ${formatEther(totalFeeWei)} ${symbol} registration fee; signer balance is ${formatEther(balanceWei)} ${symbol}.`, totalFeeWei, balanceWei);
|
|
38181
38198
|
}
|
|
38182
38199
|
}
|
|
38183
38200
|
|
|
@@ -41973,14 +41990,15 @@ init_esm2();
|
|
|
41973
41990
|
|
|
41974
41991
|
// src/lib/registration-fee.ts
|
|
41975
41992
|
function registrationGate(args) {
|
|
41976
|
-
const { estimate, agentBalanceWei } = args;
|
|
41993
|
+
const { estimate, agentBalanceWei, chainId } = args;
|
|
41994
|
+
const symbol = chainId !== void 0 ? getNativeCurrencySymbol(chainId) : "ETH";
|
|
41977
41995
|
if (agentBalanceWei !== void 0) {
|
|
41978
|
-
assertFeeAffordable(agentBalanceWei, estimate.totalWei);
|
|
41996
|
+
assertFeeAffordable(agentBalanceWei, estimate.totalWei, symbol);
|
|
41979
41997
|
}
|
|
41980
41998
|
return {
|
|
41981
41999
|
totalFeeWei: estimate.totalWei,
|
|
41982
42000
|
permissionCount: estimate.perPermission.length,
|
|
41983
|
-
disclosure: describeMandateFee(estimate)
|
|
42001
|
+
disclosure: describeMandateFee(estimate, symbol)
|
|
41984
42002
|
};
|
|
41985
42003
|
}
|
|
41986
42004
|
|
|
@@ -42372,7 +42390,7 @@ async function attachMandate(project, channel, publicClient, agentSigner, smaAdd
|
|
|
42372
42390
|
const agentBalanceWei = await publicClient.getBalance({
|
|
42373
42391
|
address: agentSigner.viemAccount.address
|
|
42374
42392
|
});
|
|
42375
|
-
const gate = registrationGate({ estimate: feeEstimate, agentBalanceWei });
|
|
42393
|
+
const gate = registrationGate({ estimate: feeEstimate, agentBalanceWei, chainId: project.chainId });
|
|
42376
42394
|
say(() => console.log(gate.disclosure));
|
|
42377
42395
|
say(() => console.log(`
|
|
42378
42396
|
Pushing signing request for "${template.label}" permission\u2026`));
|
|
@@ -42401,7 +42419,8 @@ Pushing signing request for "${template.label}" permission\u2026`));
|
|
|
42401
42419
|
// fee to disclose (zero-fee chains pass 0 ETH, still informative).
|
|
42402
42420
|
registrationFee: {
|
|
42403
42421
|
totalEth: formatEther(fee),
|
|
42404
|
-
permissionCount: 1
|
|
42422
|
+
permissionCount: 1,
|
|
42423
|
+
symbol: getNativeCurrencySymbol(project.chainId)
|
|
42405
42424
|
},
|
|
42406
42425
|
typedData
|
|
42407
42426
|
});
|
|
@@ -42481,7 +42500,8 @@ Connect the owner wallet (mandate signer) in the browser \u2014 the agent wallet
|
|
|
42481
42500
|
chainId: project.chainId,
|
|
42482
42501
|
// Registration fee actually paid by the agent for this permission.
|
|
42483
42502
|
fee: fee.toString(),
|
|
42484
|
-
feeEth: formatEther(fee)
|
|
42503
|
+
feeEth: formatEther(fee),
|
|
42504
|
+
feeSymbol: getNativeCurrencySymbol(project.chainId)
|
|
42485
42505
|
});
|
|
42486
42506
|
return txHash;
|
|
42487
42507
|
}
|
|
@@ -42928,7 +42948,8 @@ ${spec.label} clone (${options.template})`);
|
|
|
42928
42948
|
],
|
|
42929
42949
|
registrationFee: {
|
|
42930
42950
|
totalEth: formatEther(fee),
|
|
42931
|
-
permissionCount: 1
|
|
42951
|
+
permissionCount: 1,
|
|
42952
|
+
symbol: getNativeCurrencySymbol(project.chainId)
|
|
42932
42953
|
},
|
|
42933
42954
|
typedData
|
|
42934
42955
|
});
|
|
@@ -43011,7 +43032,8 @@ Connect the owner wallet (mandate signer) in the browser \u2014 the agent wallet
|
|
|
43011
43032
|
chainId: project.chainId,
|
|
43012
43033
|
// Registration fee actually paid by the agent for this permission.
|
|
43013
43034
|
fee: fee.toString(),
|
|
43014
|
-
feeEth: formatEther(fee)
|
|
43035
|
+
feeEth: formatEther(fee),
|
|
43036
|
+
feeSymbol: getNativeCurrencySymbol(project.chainId)
|
|
43015
43037
|
});
|
|
43016
43038
|
emit(json, () => {
|
|
43017
43039
|
}, {
|
|
@@ -43361,7 +43383,8 @@ Attaching ${permissions.length} permissions in one signature \u2014 the mandate
|
|
|
43361
43383
|
registrationFee: {
|
|
43362
43384
|
totalEth: formatEther(fee),
|
|
43363
43385
|
permissionCount: permissions.length,
|
|
43364
|
-
...permissions.length > 1 ? { perPermissionEth: formatEther(flatFee) } : {}
|
|
43386
|
+
...permissions.length > 1 ? { perPermissionEth: formatEther(flatFee) } : {},
|
|
43387
|
+
symbol: getNativeCurrencySymbol(project.chainId)
|
|
43365
43388
|
},
|
|
43366
43389
|
typedData
|
|
43367
43390
|
});
|
|
@@ -43406,7 +43429,8 @@ Attaching ${permissions.length} permissions in one signature \u2014 the mandate
|
|
|
43406
43429
|
chainId: project.chainId,
|
|
43407
43430
|
// Each permission in the batch is charged the same flat fee.
|
|
43408
43431
|
fee: flatFee.toString(),
|
|
43409
|
-
feeEth: formatEther(flatFee)
|
|
43432
|
+
feeEth: formatEther(flatFee),
|
|
43433
|
+
feeSymbol: getNativeCurrencySymbol(project.chainId)
|
|
43410
43434
|
});
|
|
43411
43435
|
say(() => {
|
|
43412
43436
|
if (!present) {
|
|
@@ -43636,7 +43660,8 @@ async function liveMandateFee(chainId, permissionAddresses) {
|
|
|
43636
43660
|
return null;
|
|
43637
43661
|
}
|
|
43638
43662
|
}
|
|
43639
|
-
function draftFeeFromEstimate(estimate) {
|
|
43663
|
+
function draftFeeFromEstimate(estimate, chainId) {
|
|
43664
|
+
const symbol = getNativeCurrencySymbol(chainId);
|
|
43640
43665
|
const perFeeWei = estimate.perPermission[0]?.feeWei ?? 0n;
|
|
43641
43666
|
return {
|
|
43642
43667
|
perPermissionWei: perFeeWei.toString(),
|
|
@@ -43644,7 +43669,8 @@ function draftFeeFromEstimate(estimate) {
|
|
|
43644
43669
|
totalWei: estimate.totalWei.toString(),
|
|
43645
43670
|
totalEth: formatEther(estimate.totalWei),
|
|
43646
43671
|
permissionCount: estimate.perPermission.length,
|
|
43647
|
-
disclosure: describeMandateFee(estimate)
|
|
43672
|
+
disclosure: describeMandateFee(estimate, symbol),
|
|
43673
|
+
symbol
|
|
43648
43674
|
};
|
|
43649
43675
|
}
|
|
43650
43676
|
function resolveActiveChain(account2) {
|
|
@@ -43752,7 +43778,7 @@ ${permissions.length} permission(s) tracked for SMA ${account2.safe}:
|
|
|
43752
43778
|
const unregisteredAddresses = chargeable.map((p) => p.address);
|
|
43753
43779
|
if (unregisteredAddresses.length > 0) {
|
|
43754
43780
|
const estimate = await liveMandateFee(chainId, unregisteredAddresses);
|
|
43755
|
-
if (estimate !== null) registrationFee = draftFeeFromEstimate(estimate);
|
|
43781
|
+
if (estimate !== null) registrationFee = draftFeeFromEstimate(estimate, chainId);
|
|
43756
43782
|
}
|
|
43757
43783
|
const draft = {
|
|
43758
43784
|
account: account2.safe,
|
|
@@ -43795,7 +43821,7 @@ Permissions tracked for SMA ${account2.safe}:
|
|
|
43795
43821
|
const estimate = await liveMandateFee(chainId, unregistered.map((p) => p.address));
|
|
43796
43822
|
if (estimate !== null) {
|
|
43797
43823
|
console.log(`
|
|
43798
|
-
${describeMandateFee(estimate)}`);
|
|
43824
|
+
${describeMandateFee(estimate, getNativeCurrencySymbol(chainId))}`);
|
|
43799
43825
|
console.log(" Paid by the agent wallet on registration, per permission.");
|
|
43800
43826
|
}
|
|
43801
43827
|
}
|
|
@@ -46402,6 +46402,9 @@ var import_websocket_server = __toESM(require_websocket_server(), 1);
|
|
|
46402
46402
|
var CREATE2_KERNEL = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
|
|
46403
46403
|
var CREATE2_MANDATE_FACTORY = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
|
|
46404
46404
|
var CREATE2_GOVERNANCE = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
|
|
46405
|
+
var ETH = { name: "Ether", symbol: "ETH", decimals: 18 };
|
|
46406
|
+
var BNB = { name: "BNB", symbol: "BNB", decimals: 18 };
|
|
46407
|
+
var HYPE = { name: "HYPE", symbol: "HYPE", decimals: 18 };
|
|
46405
46408
|
var chains = {
|
|
46406
46409
|
// Ethereum mainnet
|
|
46407
46410
|
1: {
|
|
@@ -46413,7 +46416,8 @@ var chains = {
|
|
|
46413
46416
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46414
46417
|
governance: CREATE2_GOVERNANCE,
|
|
46415
46418
|
dispatchModel: "selective",
|
|
46416
|
-
protocols: {}
|
|
46419
|
+
protocols: {},
|
|
46420
|
+
nativeCurrency: ETH
|
|
46417
46421
|
},
|
|
46418
46422
|
// Base mainnet
|
|
46419
46423
|
8453: {
|
|
@@ -46425,7 +46429,8 @@ var chains = {
|
|
|
46425
46429
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46426
46430
|
governance: CREATE2_GOVERNANCE,
|
|
46427
46431
|
dispatchModel: "selective",
|
|
46428
|
-
protocols: {}
|
|
46432
|
+
protocols: {},
|
|
46433
|
+
nativeCurrency: ETH
|
|
46429
46434
|
},
|
|
46430
46435
|
// Arbitrum mainnet
|
|
46431
46436
|
42161: {
|
|
@@ -46437,7 +46442,8 @@ var chains = {
|
|
|
46437
46442
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46438
46443
|
governance: CREATE2_GOVERNANCE,
|
|
46439
46444
|
dispatchModel: "selective",
|
|
46440
|
-
protocols: {}
|
|
46445
|
+
protocols: {},
|
|
46446
|
+
nativeCurrency: ETH
|
|
46441
46447
|
},
|
|
46442
46448
|
// Optimism mainnet
|
|
46443
46449
|
10: {
|
|
@@ -46449,7 +46455,8 @@ var chains = {
|
|
|
46449
46455
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46450
46456
|
governance: CREATE2_GOVERNANCE,
|
|
46451
46457
|
dispatchModel: "selective",
|
|
46452
|
-
protocols: {}
|
|
46458
|
+
protocols: {},
|
|
46459
|
+
nativeCurrency: ETH
|
|
46453
46460
|
},
|
|
46454
46461
|
// Unichain mainnet
|
|
46455
46462
|
130: {
|
|
@@ -46461,9 +46468,10 @@ var chains = {
|
|
|
46461
46468
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46462
46469
|
governance: CREATE2_GOVERNANCE,
|
|
46463
46470
|
dispatchModel: "selective",
|
|
46464
|
-
protocols: {}
|
|
46471
|
+
protocols: {},
|
|
46472
|
+
nativeCurrency: ETH
|
|
46465
46473
|
},
|
|
46466
|
-
// BSC mainnet
|
|
46474
|
+
// BSC mainnet — native gas token is BNB, not ETH.
|
|
46467
46475
|
56: {
|
|
46468
46476
|
chainId: 56,
|
|
46469
46477
|
name: "BSC",
|
|
@@ -46473,7 +46481,8 @@ var chains = {
|
|
|
46473
46481
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46474
46482
|
governance: CREATE2_GOVERNANCE,
|
|
46475
46483
|
dispatchModel: "selective",
|
|
46476
|
-
protocols: {}
|
|
46484
|
+
protocols: {},
|
|
46485
|
+
nativeCurrency: BNB
|
|
46477
46486
|
},
|
|
46478
46487
|
// World Chain mainnet
|
|
46479
46488
|
480: {
|
|
@@ -46485,9 +46494,10 @@ var chains = {
|
|
|
46485
46494
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46486
46495
|
governance: CREATE2_GOVERNANCE,
|
|
46487
46496
|
dispatchModel: "selective",
|
|
46488
|
-
protocols: {}
|
|
46497
|
+
protocols: {},
|
|
46498
|
+
nativeCurrency: ETH
|
|
46489
46499
|
},
|
|
46490
|
-
// HyperEVM mainnet
|
|
46500
|
+
// HyperEVM mainnet — native gas token is HYPE, not ETH.
|
|
46491
46501
|
999: {
|
|
46492
46502
|
chainId: 999,
|
|
46493
46503
|
name: "HyperEVM",
|
|
@@ -46497,7 +46507,8 @@ var chains = {
|
|
|
46497
46507
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46498
46508
|
governance: CREATE2_GOVERNANCE,
|
|
46499
46509
|
dispatchModel: "selective",
|
|
46500
|
-
protocols: {}
|
|
46510
|
+
protocols: {},
|
|
46511
|
+
nativeCurrency: HYPE
|
|
46501
46512
|
},
|
|
46502
46513
|
// MegaETH mainnet
|
|
46503
46514
|
4326: {
|
|
@@ -46509,7 +46520,8 @@ var chains = {
|
|
|
46509
46520
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46510
46521
|
governance: CREATE2_GOVERNANCE,
|
|
46511
46522
|
dispatchModel: "selective",
|
|
46512
|
-
protocols: {}
|
|
46523
|
+
protocols: {},
|
|
46524
|
+
nativeCurrency: ETH
|
|
46513
46525
|
},
|
|
46514
46526
|
// Base Sepolia (testnet)
|
|
46515
46527
|
84532: {
|
|
@@ -46521,7 +46533,8 @@ var chains = {
|
|
|
46521
46533
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46522
46534
|
governance: CREATE2_GOVERNANCE,
|
|
46523
46535
|
dispatchModel: "selective",
|
|
46524
|
-
protocols: {}
|
|
46536
|
+
protocols: {},
|
|
46537
|
+
nativeCurrency: ETH
|
|
46525
46538
|
},
|
|
46526
46539
|
// Eth Sepolia (testnet)
|
|
46527
46540
|
11155111: {
|
|
@@ -46533,10 +46546,14 @@ var chains = {
|
|
|
46533
46546
|
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
46534
46547
|
governance: CREATE2_GOVERNANCE,
|
|
46535
46548
|
dispatchModel: "selective",
|
|
46536
|
-
protocols: {}
|
|
46549
|
+
protocols: {},
|
|
46550
|
+
nativeCurrency: ETH
|
|
46537
46551
|
}
|
|
46538
46552
|
};
|
|
46539
46553
|
var defaultRpcUrls = Object.fromEntries(Object.values(chains).map((c) => [c.chainId, c.defaultRpcUrl]));
|
|
46554
|
+
function getNativeCurrencySymbol(chainId) {
|
|
46555
|
+
return chains[chainId]?.nativeCurrency.symbol ?? "ETH";
|
|
46556
|
+
}
|
|
46540
46557
|
|
|
46541
46558
|
// ../sdk/dist/abis/SailKernel.js
|
|
46542
46559
|
var SailKernelAbi = [
|
|
@@ -48085,6 +48102,8 @@ var CHAIN_RPC_ENV_KEYS = {
|
|
|
48085
48102
|
};
|
|
48086
48103
|
var SUPPORTED_CHAIN_IDS = [1, 8453, 42161, 10, 130, 56, 480, 999, 4326, 84532];
|
|
48087
48104
|
var DEFAULT_RPC_URLS = { ...defaultRpcUrls };
|
|
48105
|
+
var REGISTRATION_FEE_TTL_MS = 5 * 60 * 1e3;
|
|
48106
|
+
var registrationFeeCache = /* @__PURE__ */ new Map();
|
|
48088
48107
|
function resolveRpcUrl(env, chainId) {
|
|
48089
48108
|
const keys = CHAIN_RPC_ENV_KEYS[chainId] ?? [`RPC_URL_${chainId}`];
|
|
48090
48109
|
for (const k of keys) {
|
|
@@ -48744,6 +48763,7 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
48744
48763
|
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
48745
48764
|
if (receipt.status !== "success") throw new Error(`registerPermissions reverted (tx ${txHash})`);
|
|
48746
48765
|
const feeEth = formatEther(flatFee);
|
|
48766
|
+
const feeSymbol = getNativeCurrencySymbol(Number(chainId));
|
|
48747
48767
|
for (const addr of addrs) {
|
|
48748
48768
|
const meta = permissionMeta.find((p) => p.address && getAddress(p.address) === addr);
|
|
48749
48769
|
const ev = {
|
|
@@ -48756,7 +48776,8 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
48756
48776
|
txHash,
|
|
48757
48777
|
chainId,
|
|
48758
48778
|
fee: flatFee.toString(),
|
|
48759
|
-
feeEth
|
|
48779
|
+
feeEth,
|
|
48780
|
+
feeSymbol
|
|
48760
48781
|
};
|
|
48761
48782
|
try {
|
|
48762
48783
|
import_node_fs2.default.appendFileSync(at("activity.jsonl"), `${JSON.stringify(ev)}
|
|
@@ -49367,14 +49388,43 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49367
49388
|
const env = parseEnvFile(at(".env.local"));
|
|
49368
49389
|
const chainId = Number(account.chainId ?? env.CHAIN_ID ?? 0);
|
|
49369
49390
|
let kernel = env.KERNEL_ADDRESS;
|
|
49391
|
+
let governance;
|
|
49370
49392
|
if (!kernel) {
|
|
49371
49393
|
try {
|
|
49372
|
-
|
|
49394
|
+
const deployment = getSailDeployment(chainId);
|
|
49395
|
+
kernel = deployment?.kernel;
|
|
49396
|
+
governance = deployment?.governance;
|
|
49373
49397
|
} catch {
|
|
49374
49398
|
kernel = void 0;
|
|
49375
49399
|
}
|
|
49400
|
+
} else {
|
|
49401
|
+
try {
|
|
49402
|
+
governance = getSailDeployment(chainId)?.governance;
|
|
49403
|
+
} catch {
|
|
49404
|
+
governance = void 0;
|
|
49405
|
+
}
|
|
49376
49406
|
}
|
|
49377
49407
|
const rpcUrl = resolveRpcUrl(env, chainId);
|
|
49408
|
+
let registrationFee = null;
|
|
49409
|
+
if (!localOnly && governance && rpcUrl) {
|
|
49410
|
+
const cached = registrationFeeCache.get(chainId);
|
|
49411
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
49412
|
+
registrationFee = cached.fee;
|
|
49413
|
+
} else {
|
|
49414
|
+
try {
|
|
49415
|
+
const feeClient = createPublicClient({ transport: http(rpcUrl, { timeout: 4e3 }) });
|
|
49416
|
+
const feeWei = await readPermissionRegistrationFee(feeClient, governance);
|
|
49417
|
+
registrationFee = {
|
|
49418
|
+
feeWei: feeWei.toString(),
|
|
49419
|
+
feeEth: formatEther(feeWei),
|
|
49420
|
+
symbol: getNativeCurrencySymbol(chainId)
|
|
49421
|
+
};
|
|
49422
|
+
registrationFeeCache.set(chainId, { fee: registrationFee, expiresAt: Date.now() + REGISTRATION_FEE_TTL_MS });
|
|
49423
|
+
} catch {
|
|
49424
|
+
registrationFee = null;
|
|
49425
|
+
}
|
|
49426
|
+
}
|
|
49427
|
+
}
|
|
49378
49428
|
const nameByAddr = /* @__PURE__ */ new Map();
|
|
49379
49429
|
const templateByAddr = /* @__PURE__ */ new Map();
|
|
49380
49430
|
try {
|
|
@@ -49402,6 +49452,7 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49402
49452
|
kernel: kernel ?? null,
|
|
49403
49453
|
rpcConfigured: Boolean(rpcUrl),
|
|
49404
49454
|
onchain: false,
|
|
49455
|
+
registrationFee,
|
|
49405
49456
|
sma: {
|
|
49406
49457
|
address: account.safe,
|
|
49407
49458
|
owner: account.owner,
|
|
@@ -11,4 +11,11 @@ export declare function getChain(chainId: number): ChainConfig;
|
|
|
11
11
|
export declare const defaultRpcUrls: Record<number, string>;
|
|
12
12
|
/** The public default RPC URL for a chainId, or undefined if unsupported. */
|
|
13
13
|
export declare function getDefaultRpcUrl(chainId: number): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* The native gas token symbol for a chain (e.g. "ETH", "BNB", "HYPE") — what
|
|
16
|
+
* `permissionRegistrationFee` is denominated in on that chain. Falls back to
|
|
17
|
+
* "ETH" for an unrecognized chainId so display code degrades gracefully
|
|
18
|
+
* instead of throwing.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getNativeCurrencySymbol(chainId: number): string;
|
|
14
21
|
//# sourceMappingURL=chains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAkB9C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgJ9C,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAQrD;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEjD,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
const CREATE2_KERNEL = "0x38b508756c976e876EFF05a29E731A4d348BA6ED";
|
|
10
10
|
const CREATE2_MANDATE_FACTORY = "0x6d2C802ffa0d9A8Ed69A5Bf22c1b63ccB566B8Fc";
|
|
11
11
|
const CREATE2_GOVERNANCE = "0x4315B37cA4A315A7042af1Fcb37F8436f4D24356";
|
|
12
|
+
const ETH = { name: "Ether", symbol: "ETH", decimals: 18 };
|
|
13
|
+
const BNB = { name: "BNB", symbol: "BNB", decimals: 18 };
|
|
14
|
+
const HYPE = { name: "HYPE", symbol: "HYPE", decimals: 18 };
|
|
12
15
|
export const chains = {
|
|
13
16
|
// Ethereum mainnet
|
|
14
17
|
1: {
|
|
@@ -21,6 +24,7 @@ export const chains = {
|
|
|
21
24
|
governance: CREATE2_GOVERNANCE,
|
|
22
25
|
dispatchModel: "selective",
|
|
23
26
|
protocols: {},
|
|
27
|
+
nativeCurrency: ETH,
|
|
24
28
|
},
|
|
25
29
|
// Base mainnet
|
|
26
30
|
8453: {
|
|
@@ -33,6 +37,7 @@ export const chains = {
|
|
|
33
37
|
governance: CREATE2_GOVERNANCE,
|
|
34
38
|
dispatchModel: "selective",
|
|
35
39
|
protocols: {},
|
|
40
|
+
nativeCurrency: ETH,
|
|
36
41
|
},
|
|
37
42
|
// Arbitrum mainnet
|
|
38
43
|
42161: {
|
|
@@ -45,6 +50,7 @@ export const chains = {
|
|
|
45
50
|
governance: CREATE2_GOVERNANCE,
|
|
46
51
|
dispatchModel: "selective",
|
|
47
52
|
protocols: {},
|
|
53
|
+
nativeCurrency: ETH,
|
|
48
54
|
},
|
|
49
55
|
// Optimism mainnet
|
|
50
56
|
10: {
|
|
@@ -57,6 +63,7 @@ export const chains = {
|
|
|
57
63
|
governance: CREATE2_GOVERNANCE,
|
|
58
64
|
dispatchModel: "selective",
|
|
59
65
|
protocols: {},
|
|
66
|
+
nativeCurrency: ETH,
|
|
60
67
|
},
|
|
61
68
|
// Unichain mainnet
|
|
62
69
|
130: {
|
|
@@ -69,8 +76,9 @@ export const chains = {
|
|
|
69
76
|
governance: CREATE2_GOVERNANCE,
|
|
70
77
|
dispatchModel: "selective",
|
|
71
78
|
protocols: {},
|
|
79
|
+
nativeCurrency: ETH,
|
|
72
80
|
},
|
|
73
|
-
// BSC mainnet
|
|
81
|
+
// BSC mainnet — native gas token is BNB, not ETH.
|
|
74
82
|
56: {
|
|
75
83
|
chainId: 56,
|
|
76
84
|
name: "BSC",
|
|
@@ -81,6 +89,7 @@ export const chains = {
|
|
|
81
89
|
governance: CREATE2_GOVERNANCE,
|
|
82
90
|
dispatchModel: "selective",
|
|
83
91
|
protocols: {},
|
|
92
|
+
nativeCurrency: BNB,
|
|
84
93
|
},
|
|
85
94
|
// World Chain mainnet
|
|
86
95
|
480: {
|
|
@@ -93,8 +102,9 @@ export const chains = {
|
|
|
93
102
|
governance: CREATE2_GOVERNANCE,
|
|
94
103
|
dispatchModel: "selective",
|
|
95
104
|
protocols: {},
|
|
105
|
+
nativeCurrency: ETH,
|
|
96
106
|
},
|
|
97
|
-
// HyperEVM mainnet
|
|
107
|
+
// HyperEVM mainnet — native gas token is HYPE, not ETH.
|
|
98
108
|
999: {
|
|
99
109
|
chainId: 999,
|
|
100
110
|
name: "HyperEVM",
|
|
@@ -105,6 +115,7 @@ export const chains = {
|
|
|
105
115
|
governance: CREATE2_GOVERNANCE,
|
|
106
116
|
dispatchModel: "selective",
|
|
107
117
|
protocols: {},
|
|
118
|
+
nativeCurrency: HYPE,
|
|
108
119
|
},
|
|
109
120
|
// MegaETH mainnet
|
|
110
121
|
4326: {
|
|
@@ -117,6 +128,7 @@ export const chains = {
|
|
|
117
128
|
governance: CREATE2_GOVERNANCE,
|
|
118
129
|
dispatchModel: "selective",
|
|
119
130
|
protocols: {},
|
|
131
|
+
nativeCurrency: ETH,
|
|
120
132
|
},
|
|
121
133
|
// Base Sepolia (testnet)
|
|
122
134
|
84532: {
|
|
@@ -129,6 +141,7 @@ export const chains = {
|
|
|
129
141
|
governance: CREATE2_GOVERNANCE,
|
|
130
142
|
dispatchModel: "selective",
|
|
131
143
|
protocols: {},
|
|
144
|
+
nativeCurrency: ETH,
|
|
132
145
|
},
|
|
133
146
|
// Eth Sepolia (testnet)
|
|
134
147
|
11155111: {
|
|
@@ -141,6 +154,7 @@ export const chains = {
|
|
|
141
154
|
governance: CREATE2_GOVERNANCE,
|
|
142
155
|
dispatchModel: "selective",
|
|
143
156
|
protocols: {},
|
|
157
|
+
nativeCurrency: ETH,
|
|
144
158
|
},
|
|
145
159
|
};
|
|
146
160
|
/** Returns the ChainConfig for a given chainId, or throws if unsupported. */
|
|
@@ -162,4 +176,13 @@ export const defaultRpcUrls = Object.fromEntries(Object.values(chains).map((c) =
|
|
|
162
176
|
export function getDefaultRpcUrl(chainId) {
|
|
163
177
|
return chains[chainId]?.defaultRpcUrl;
|
|
164
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* The native gas token symbol for a chain (e.g. "ETH", "BNB", "HYPE") — what
|
|
181
|
+
* `permissionRegistrationFee` is denominated in on that chain. Falls back to
|
|
182
|
+
* "ETH" for an unrecognized chainId so display code degrades gracefully
|
|
183
|
+
* instead of throwing.
|
|
184
|
+
*/
|
|
185
|
+
export function getNativeCurrencySymbol(chainId) {
|
|
186
|
+
return chains[chainId]?.nativeCurrency.symbol ?? "ETH";
|
|
187
|
+
}
|
|
165
188
|
//# sourceMappingURL=chains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,4CAA4C,CAAC;AACpE,MAAM,uBAAuB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAExE,MAAM,CAAC,MAAM,MAAM,GAAgC;IACjD,mBAAmB;IACnB,CAAC,EAAE;QACD,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,qBAAqB;QAChC,aAAa,EAAE,0BAA0B;QACzC,MAAM,EAAE,cAAc;QACtB,cAAc,EAAE,uBAAuB;QACvC,UAAU,EAAE,kBAAkB;QAC9B,aAAa,EAAE,WAAW;QAC1B,SAAS,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,12 @@ export declare function estimateMandateRegistrationFee(publicClient: PublicClien
|
|
|
41
41
|
* Plain-language disclosure of a mandate's flat registration fee, e.g.
|
|
42
42
|
* `"Registration fee: 0.00003 ETH (3 permissions × 0.00001 ETH)"`.
|
|
43
43
|
*
|
|
44
|
-
* Factual cost statement only — no price/value framing.
|
|
44
|
+
* Factual cost statement only — no price/value framing. `symbol` is the
|
|
45
|
+
* chain's native gas token (defaults to "ETH") — callers on a chain with its
|
|
46
|
+
* own gas token (BSC → BNB, HyperEVM → HYPE) MUST pass the correct symbol;
|
|
47
|
+
* the fee is always denominated in the chain's native token, never literally ETH.
|
|
45
48
|
*/
|
|
46
|
-
export declare function describeMandateFee(estimate: MandateFeeEstimate): string;
|
|
49
|
+
export declare function describeMandateFee(estimate: MandateFeeEstimate, symbol?: string): string;
|
|
47
50
|
/** Thrown when a signer cannot cover the registration fee. A typed error so the
|
|
48
51
|
* preflight block can't be silently disabled by re-wording a message string. */
|
|
49
52
|
export declare class RegistrationFeeError extends Error {
|
|
@@ -60,6 +63,7 @@ export declare function feeShortfall(balanceWei: bigint, totalFeeWei: bigint): b
|
|
|
60
63
|
* registration fee. Call this BEFORE prompting the owner to sign so an
|
|
61
64
|
* underfunded signer fails early rather than after a wasted signature or an
|
|
62
65
|
* on-chain revert. Scoped to the fee itself — gas is a separate concern.
|
|
66
|
+
* `symbol` is the chain's native gas token (defaults to "ETH").
|
|
63
67
|
*/
|
|
64
|
-
export declare function assertFeeAffordable(balanceWei: bigint, totalFeeWei: bigint): void;
|
|
68
|
+
export declare function assertFeeAffordable(balanceWei: bigint, totalFeeWei: bigint, symbol?: string): void;
|
|
65
69
|
//# sourceMappingURL=fees.d.ts.map
|