@vultisig/core-chain 2.28.0 → 2.29.1

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.
Files changed (78) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/dist/chains/cosmos/cosmosGasLimitRecord.js +3 -3
  3. package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
  4. package/dist/chains/cosmos/gas.d.ts +28 -1
  5. package/dist/chains/cosmos/gas.d.ts.map +1 -1
  6. package/dist/chains/cosmos/gas.js +37 -5
  7. package/dist/chains/cosmos/gas.js.map +1 -1
  8. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts +82 -0
  9. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts.map +1 -0
  10. package/dist/chains/cosmos/resolveCosmosGasLimit.js +71 -0
  11. package/dist/chains/cosmos/resolveCosmosGasLimit.js.map +1 -0
  12. package/dist/chains/cosmos/terraClassicTax.d.ts +68 -0
  13. package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
  14. package/dist/chains/cosmos/terraClassicTax.js +85 -0
  15. package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
  16. package/dist/chains/sui/client.d.ts +11 -2
  17. package/dist/chains/sui/client.d.ts.map +1 -1
  18. package/dist/chains/sui/client.js +5 -4
  19. package/dist/chains/sui/client.js.map +1 -1
  20. package/dist/chains/sui/config.d.ts +28 -0
  21. package/dist/chains/sui/config.d.ts.map +1 -1
  22. package/dist/chains/sui/config.js +27 -0
  23. package/dist/chains/sui/config.js.map +1 -1
  24. package/dist/chains/sui/listAllCoins.d.ts +44 -0
  25. package/dist/chains/sui/listAllCoins.d.ts.map +1 -0
  26. package/dist/chains/sui/listAllCoins.js +43 -0
  27. package/dist/chains/sui/listAllCoins.js.map +1 -0
  28. package/dist/chains/sui/transactionResult.d.ts +59 -0
  29. package/dist/chains/sui/transactionResult.d.ts.map +1 -0
  30. package/dist/chains/sui/transactionResult.js +43 -0
  31. package/dist/chains/sui/transactionResult.js.map +1 -0
  32. package/dist/coin/balance/resolvers/sui.d.ts.map +1 -1
  33. package/dist/coin/balance/resolvers/sui.js +6 -3
  34. package/dist/coin/balance/resolvers/sui.js.map +1 -1
  35. package/dist/coin/token/metadata/chains.d.ts +1 -1
  36. package/dist/coin/token/metadata/chains.d.ts.map +1 -1
  37. package/dist/coin/token/metadata/chains.js +1 -0
  38. package/dist/coin/token/metadata/chains.js.map +1 -1
  39. package/dist/coin/token/metadata/index.d.ts.map +1 -1
  40. package/dist/coin/token/metadata/index.js +2 -0
  41. package/dist/coin/token/metadata/index.js.map +1 -1
  42. package/dist/coin/token/metadata/resolvers/ripple.d.ts +17 -0
  43. package/dist/coin/token/metadata/resolvers/ripple.d.ts.map +1 -0
  44. package/dist/coin/token/metadata/resolvers/ripple.js +44 -0
  45. package/dist/coin/token/metadata/resolvers/ripple.js.map +1 -0
  46. package/dist/coin/token/metadata/resolvers/sui.d.ts +1 -1
  47. package/dist/coin/token/metadata/resolvers/sui.d.ts.map +1 -1
  48. package/dist/coin/token/metadata/resolvers/sui.js +6 -3
  49. package/dist/coin/token/metadata/resolvers/sui.js.map +1 -1
  50. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
  51. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +2 -1
  52. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
  53. package/dist/swap/native/limitSwapMemo.d.ts +35 -5
  54. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  55. package/dist/swap/native/limitSwapMemo.js +32 -7
  56. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  57. package/dist/tx/broadcast/resolvers/sui.d.ts +2 -8
  58. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  59. package/dist/tx/broadcast/resolvers/sui.js +18 -17
  60. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  61. package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
  62. package/dist/tx/broadcast/transientRetry.js +30 -2
  63. package/dist/tx/broadcast/transientRetry.js.map +1 -1
  64. package/dist/tx/hash/resolvers/sui.d.ts.map +1 -1
  65. package/dist/tx/hash/resolvers/sui.js +13 -3
  66. package/dist/tx/hash/resolvers/sui.js.map +1 -1
  67. package/dist/tx/status/resolvers/sui.d.ts.map +1 -1
  68. package/dist/tx/status/resolvers/sui.js +15 -6
  69. package/dist/tx/status/resolvers/sui.js.map +1 -1
  70. package/dist/utils/isValidTokenId.d.ts +11 -0
  71. package/dist/utils/isValidTokenId.d.ts.map +1 -1
  72. package/dist/utils/isValidTokenId.js +31 -2
  73. package/dist/utils/isValidTokenId.js.map +1 -1
  74. package/package.json +22 -7
  75. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts +0 -49
  76. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts.map +0 -1
  77. package/dist/chains/cosmos/resolveCosmosGasFee.js +0 -35
  78. package/dist/chains/cosmos/resolveCosmosGasFee.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { isValidStructTag } from '@mysten/sui/utils';
2
2
  import { Chain } from '@vultisig/core-chain/Chain';
3
- import { isValidXrplCurrencyCode, parseRippleTokenId } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
3
+ import { isValidXrplCurrencyCode, parseRippleTokenId, rippleTokenId, toXrplCurrencyCode, } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
4
4
  import { attempt } from '@vultisig/lib-utils/attempt';
5
5
  import { isValidAddress } from './isValidAddress.js';
6
6
  /**
@@ -22,8 +22,37 @@ export const isValidTokenId = ({ chain, id, walletCore }) => {
22
22
  return false;
23
23
  }
24
24
  const { currency, issuer } = parsed.data;
25
- return isValidXrplCurrencyCode(currency) && isValidAddress({ chain, address: issuer, walletCore });
25
+ // Accept either an on-ledger currency code (`USD`, or the 40-char hex form)
26
+ // or a human ticker (`SOLO`, `RLUSD`) — the latter is how tokens are
27
+ // referenced on explorers like xrpscan. `toXrplCurrencyCode` normalises a
28
+ // ticker to its on-ledger code; anything it cannot encode (e.g. a name
29
+ // longer than 20 bytes) is rejected.
30
+ const currencyCode = attempt(() => toXrplCurrencyCode(currency));
31
+ if ('error' in currencyCode) {
32
+ return false;
33
+ }
34
+ return isValidXrplCurrencyCode(currencyCode.data) && isValidAddress({ chain, address: issuer, walletCore });
26
35
  }
27
36
  return isValidAddress({ chain, address: id, walletCore });
28
37
  };
38
+ /**
39
+ * Canonical form of a custom token id, for storage and equality.
40
+ *
41
+ * Only XRPL needs normalising: a token may be entered by its human ticker
42
+ * (`SOLO.rsoLo…`, as shown on explorers) or by its on-ledger currency code, and
43
+ * both must resolve to the same id so a manually added token dedupes against the
44
+ * same token discovered from the ledger — which always uses the on-ledger code.
45
+ * `rippleTokenId` re-encodes the currency to that canonical form. For every other
46
+ * chain the id is already canonical and returned unchanged.
47
+ */
48
+ export const normalizeTokenId = ({ chain, id }) => {
49
+ if (chain !== Chain.Ripple) {
50
+ return id;
51
+ }
52
+ const canonical = attempt(() => rippleTokenId(parseRippleTokenId(id.trim())));
53
+ if ('error' in canonical) {
54
+ return id;
55
+ }
56
+ return canonical.data;
57
+ };
29
58
  //# sourceMappingURL=isValidTokenId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isValidTokenId.js","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidTokenId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAA;AAC/G,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAS,EAAE,EAAE;IACjE,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;QAExC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAA"}
1
+ {"version":3,"file":"isValidTokenId.js","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidTokenId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAS,EAAE,EAAE;IACjE,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;QAExC,4EAA4E;QAC5E,qEAAqE;QACrE,0EAA0E;QAC1E,uEAAuE;QACvE,qCAAqC;QACrC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChE,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAC7G,CAAC;IAED,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAA+B,EAAU,EAAE;IACrF,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAA;AACvB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "2.28.0",
3
+ "version": "2.29.1",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -375,10 +375,10 @@
375
375
  "import": "./dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js",
376
376
  "default": "./dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js"
377
377
  },
378
- "./chains/cosmos/resolveCosmosGasFee": {
379
- "types": "./dist/chains/cosmos/resolveCosmosGasFee.d.ts",
380
- "import": "./dist/chains/cosmos/resolveCosmosGasFee.js",
381
- "default": "./dist/chains/cosmos/resolveCosmosGasFee.js"
378
+ "./chains/cosmos/resolveCosmosGasLimit": {
379
+ "types": "./dist/chains/cosmos/resolveCosmosGasLimit.d.ts",
380
+ "import": "./dist/chains/cosmos/resolveCosmosGasLimit.js",
381
+ "default": "./dist/chains/cosmos/resolveCosmosGasLimit.js"
382
382
  },
383
383
  "./chains/cosmos/staking/lcdQueries": {
384
384
  "types": "./dist/chains/cosmos/staking/lcdQueries.d.ts",
@@ -820,11 +820,21 @@
820
820
  "import": "./dist/chains/sui/config.js",
821
821
  "default": "./dist/chains/sui/config.js"
822
822
  },
823
+ "./chains/sui/listAllCoins": {
824
+ "types": "./dist/chains/sui/listAllCoins.d.ts",
825
+ "import": "./dist/chains/sui/listAllCoins.js",
826
+ "default": "./dist/chains/sui/listAllCoins.js"
827
+ },
823
828
  "./chains/sui/sign": {
824
829
  "types": "./dist/chains/sui/sign.d.ts",
825
830
  "import": "./dist/chains/sui/sign.js",
826
831
  "default": "./dist/chains/sui/sign.js"
827
832
  },
833
+ "./chains/sui/transactionResult": {
834
+ "types": "./dist/chains/sui/transactionResult.d.ts",
835
+ "import": "./dist/chains/sui/transactionResult.js",
836
+ "default": "./dist/chains/sui/transactionResult.js"
837
+ },
828
838
  "./chains/thorchain/ruji/services/fetchMergeableTokenBalances": {
829
839
  "types": "./dist/chains/thorchain/ruji/services/fetchMergeableTokenBalances.d.ts",
830
840
  "import": "./dist/chains/thorchain/ruji/services/fetchMergeableTokenBalances.js",
@@ -1235,6 +1245,11 @@
1235
1245
  "import": "./dist/coin/token/metadata/resolvers/evm.js",
1236
1246
  "default": "./dist/coin/token/metadata/resolvers/evm.js"
1237
1247
  },
1248
+ "./coin/token/metadata/resolvers/ripple": {
1249
+ "types": "./dist/coin/token/metadata/resolvers/ripple.d.ts",
1250
+ "import": "./dist/coin/token/metadata/resolvers/ripple.js",
1251
+ "default": "./dist/coin/token/metadata/resolvers/ripple.js"
1252
+ },
1238
1253
  "./coin/token/metadata/resolvers/solana": {
1239
1254
  "types": "./dist/coin/token/metadata/resolvers/solana.d.ts",
1240
1255
  "import": "./dist/coin/token/metadata/resolvers/solana.js",
@@ -2159,13 +2174,13 @@
2159
2174
  },
2160
2175
  "dependencies": {
2161
2176
  "7z-wasm": "^1.2.0",
2162
- "@bufbuild/protobuf": "^2.12.0",
2177
+ "@bufbuild/protobuf": "^2.13.0",
2163
2178
  "@cosmjs/amino": "^0.39.0",
2164
2179
  "@cosmjs/encoding": "^0.39.0",
2165
2180
  "@cosmjs/proto-signing": "^0.39.0",
2166
2181
  "@cosmjs/stargate": "^0.39.0",
2167
2182
  "@lifi/sdk": "^4.1.0",
2168
- "@mysten/sui": "^2.20.3",
2183
+ "@mysten/sui": "^2.22.1",
2169
2184
  "@noble/hashes": "^1.8.0",
2170
2185
  "@polkadot/api": "^16.5.6",
2171
2186
  "@polkadot/util": "^14.0.3",
@@ -1,49 +0,0 @@
1
- /**
2
- * Resolves the effective Cosmos gas limit and fee amount for a native send,
3
- * honoring a relayed dynamic `gas_limit` when present.
4
- *
5
- * Shared by the signing-inputs resolver (what gets signed) and the fee-display
6
- * resolver (what the user sees) so the shown and signed fee can never drift —
7
- * the gas limit is part of the SignDoc, so both sides MUST agree.
8
- *
9
- * When the relayed limit exceeds the static per-chain limit, the fee amount is
10
- * scaled proportionally with a ceiling (exact integer math) so the tx pays for
11
- * the extra gas. Below or equal to the static limit, both values are left
12
- * untouched, keeping the non-dynamic path byte-identical.
13
- */
14
- /**
15
- * COSMOS-02: an IBC transfer (ICS-20 `MsgTransfer`, optionally PFM-forwarded
16
- * via memo) does measurably more work on the source leg than a plain bank
17
- * send — channel-state writes plus a relayer event — so the flat per-chain
18
- * limit (calibrated for `MsgSend`) is undersized and can run out of gas
19
- * mid-execution: the fee is spent, the transfer fails, and funds don't move
20
- * but the fee is still burned. PFM hops are budgeted by each forwarding
21
- * chain, not the source leg here, so ×2 headroom on the source leg is
22
- * sufficient. Mirrors the app's own `IBC_GAS_MULTIPLIER`
23
- * (vultiagent-app/src/services/cosmosTx.ts).
24
- */
25
- export declare const IBC_GAS_MULTIPLIER = 2n;
26
- type ResolveCosmosGasFeeInput = {
27
- /** static per-chain fee amount already stored in `CosmosSpecific.gas` */
28
- gas: bigint;
29
- /** relayed `CosmosSpecific.gas_limit` (undefined / 0 → use the static limit) */
30
- relayedGasLimit: bigint | undefined;
31
- /** static per-chain gas limit (`getCosmosGasLimit`) */
32
- staticGasLimit: bigint;
33
- /**
34
- * Whether this tx is an IBC transfer (`MsgTransfer`, optionally
35
- * PFM-forwarded). Applies `IBC_GAS_MULTIPLIER` to both the static gas
36
- * limit and its matching fee before resolving against a relayed limit.
37
- * Defaults to `false` so every other Cosmos message (plain sends, wasm
38
- * executes, staking) keeps paying the calibrated flat fee — a blanket
39
- * multiplier on all Cosmos messages would overpay non-IBC sends.
40
- */
41
- isIbcTransfer?: boolean;
42
- };
43
- type ResolveCosmosGasFeeResult = {
44
- resolvedGasLimit: bigint;
45
- feeAmount: bigint;
46
- };
47
- export declare const resolveCosmosGasFee: ({ gas, relayedGasLimit, staticGasLimit, isIbcTransfer, }: ResolveCosmosGasFeeInput) => ResolveCosmosGasFeeResult;
48
- export {};
49
- //# sourceMappingURL=resolveCosmosGasFee.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveCosmosGasFee.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/resolveCosmosGasFee.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,KAAK,wBAAwB,GAAG;IAC9B,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,0DAKjC,wBAAwB,KAAG,yBAY7B,CAAA"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Resolves the effective Cosmos gas limit and fee amount for a native send,
3
- * honoring a relayed dynamic `gas_limit` when present.
4
- *
5
- * Shared by the signing-inputs resolver (what gets signed) and the fee-display
6
- * resolver (what the user sees) so the shown and signed fee can never drift —
7
- * the gas limit is part of the SignDoc, so both sides MUST agree.
8
- *
9
- * When the relayed limit exceeds the static per-chain limit, the fee amount is
10
- * scaled proportionally with a ceiling (exact integer math) so the tx pays for
11
- * the extra gas. Below or equal to the static limit, both values are left
12
- * untouched, keeping the non-dynamic path byte-identical.
13
- */
14
- /**
15
- * COSMOS-02: an IBC transfer (ICS-20 `MsgTransfer`, optionally PFM-forwarded
16
- * via memo) does measurably more work on the source leg than a plain bank
17
- * send — channel-state writes plus a relayer event — so the flat per-chain
18
- * limit (calibrated for `MsgSend`) is undersized and can run out of gas
19
- * mid-execution: the fee is spent, the transfer fails, and funds don't move
20
- * but the fee is still burned. PFM hops are budgeted by each forwarding
21
- * chain, not the source leg here, so ×2 headroom on the source leg is
22
- * sufficient. Mirrors the app's own `IBC_GAS_MULTIPLIER`
23
- * (vultiagent-app/src/services/cosmosTx.ts).
24
- */
25
- export const IBC_GAS_MULTIPLIER = 2n;
26
- export const resolveCosmosGasFee = ({ gas, relayedGasLimit, staticGasLimit, isIbcTransfer = false, }) => {
27
- const effectiveStaticGasLimit = isIbcTransfer ? staticGasLimit * IBC_GAS_MULTIPLIER : staticGasLimit;
28
- const effectiveGas = isIbcTransfer ? gas * IBC_GAS_MULTIPLIER : gas;
29
- const resolvedGasLimit = relayedGasLimit && relayedGasLimit > 0n ? relayedGasLimit : effectiveStaticGasLimit;
30
- const feeAmount = resolvedGasLimit > effectiveStaticGasLimit
31
- ? (effectiveGas * resolvedGasLimit + effectiveStaticGasLimit - 1n) / effectiveStaticGasLimit
32
- : effectiveGas;
33
- return { resolvedGasLimit, feeAmount };
34
- };
35
- //# sourceMappingURL=resolveCosmosGasFee.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveCosmosGasFee.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/resolveCosmosGasFee.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAyBpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,aAAa,GAAG,KAAK,GACI,EAA6B,EAAE;IACxD,MAAM,uBAAuB,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAA;IACpG,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAA;IAEnE,MAAM,gBAAgB,GAAG,eAAe,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAA;IAE5G,MAAM,SAAS,GACb,gBAAgB,GAAG,uBAAuB;QACxC,CAAC,CAAC,CAAC,YAAY,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,EAAE,CAAC,GAAG,uBAAuB;QAC5F,CAAC,CAAC,YAAY,CAAA;IAElB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAA;AACxC,CAAC,CAAA"}