@vultisig/core-chain 1.3.1 → 1.4.0

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 (75) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/chains/evm/contract/universalRouter/decode.d.ts +12 -0
  3. package/dist/chains/evm/contract/universalRouter/decode.d.ts.map +1 -0
  4. package/dist/chains/evm/contract/universalRouter/decode.js +333 -0
  5. package/dist/chains/evm/contract/universalRouter/decode.js.map +1 -0
  6. package/dist/chains/evm/contract/universalRouter/opcodes.d.ts +39 -0
  7. package/dist/chains/evm/contract/universalRouter/opcodes.d.ts.map +1 -0
  8. package/dist/chains/evm/contract/universalRouter/opcodes.js +39 -0
  9. package/dist/chains/evm/contract/universalRouter/opcodes.js.map +1 -0
  10. package/dist/chains/evm/contract/universalRouter/types.d.ts +24 -0
  11. package/dist/chains/evm/contract/universalRouter/types.d.ts.map +1 -0
  12. package/dist/chains/evm/contract/universalRouter/types.js +2 -0
  13. package/dist/chains/evm/contract/universalRouter/types.js.map +1 -0
  14. package/dist/coin/balance/resolvers/bittensor.d.ts.map +1 -1
  15. package/dist/coin/balance/resolvers/bittensor.js +16 -6
  16. package/dist/coin/balance/resolvers/bittensor.js.map +1 -1
  17. package/dist/swap/general/kyber/api/quote.d.ts +2 -2
  18. package/dist/swap/general/kyber/api/quote.d.ts.map +1 -1
  19. package/dist/swap/general/kyber/api/quote.js +6 -4
  20. package/dist/swap/general/kyber/api/quote.js.map +1 -1
  21. package/dist/swap/general/kyber/api/route.d.ts +2 -2
  22. package/dist/swap/general/kyber/api/route.d.ts.map +1 -1
  23. package/dist/swap/general/kyber/api/route.js +3 -3
  24. package/dist/swap/general/kyber/api/route.js.map +1 -1
  25. package/dist/swap/general/kyber/api/tx.d.ts +4 -4
  26. package/dist/swap/general/kyber/api/tx.d.ts.map +1 -1
  27. package/dist/swap/general/kyber/api/tx.js +23 -3
  28. package/dist/swap/general/kyber/api/tx.js.map +1 -1
  29. package/dist/swap/general/kyber/config.d.ts +8 -0
  30. package/dist/swap/general/kyber/config.d.ts.map +1 -1
  31. package/dist/swap/general/kyber/config.js +10 -0
  32. package/dist/swap/general/kyber/config.js.map +1 -1
  33. package/dist/swap/quote/findSwapQuote.js +2 -2
  34. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  35. package/dist/tx/broadcast/resolvers/bittensor.d.ts.map +1 -1
  36. package/dist/tx/broadcast/resolvers/bittensor.js +5 -3
  37. package/dist/tx/broadcast/resolvers/bittensor.js.map +1 -1
  38. package/dist/tx/broadcast/resolvers/cardano.d.ts.map +1 -1
  39. package/dist/tx/broadcast/resolvers/cardano.js +4 -1
  40. package/dist/tx/broadcast/resolvers/cardano.js.map +1 -1
  41. package/dist/tx/broadcast/resolvers/cosmos.d.ts.map +1 -1
  42. package/dist/tx/broadcast/resolvers/cosmos.js +9 -3
  43. package/dist/tx/broadcast/resolvers/cosmos.js.map +1 -1
  44. package/dist/tx/broadcast/resolvers/evm.d.ts.map +1 -1
  45. package/dist/tx/broadcast/resolvers/evm.js +7 -3
  46. package/dist/tx/broadcast/resolvers/evm.js.map +1 -1
  47. package/dist/tx/broadcast/resolvers/polkadot.d.ts.map +1 -1
  48. package/dist/tx/broadcast/resolvers/polkadot.js +25 -10
  49. package/dist/tx/broadcast/resolvers/polkadot.js.map +1 -1
  50. package/dist/tx/broadcast/resolvers/qbtc.d.ts.map +1 -1
  51. package/dist/tx/broadcast/resolvers/qbtc.js +12 -4
  52. package/dist/tx/broadcast/resolvers/qbtc.js.map +1 -1
  53. package/dist/tx/broadcast/resolvers/ripple.d.ts.map +1 -1
  54. package/dist/tx/broadcast/resolvers/ripple.js +22 -5
  55. package/dist/tx/broadcast/resolvers/ripple.js.map +1 -1
  56. package/dist/tx/broadcast/resolvers/solana.d.ts.map +1 -1
  57. package/dist/tx/broadcast/resolvers/solana.js +13 -7
  58. package/dist/tx/broadcast/resolvers/solana.js.map +1 -1
  59. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  60. package/dist/tx/broadcast/resolvers/sui.js +12 -4
  61. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  62. package/dist/tx/broadcast/resolvers/ton.d.ts.map +1 -1
  63. package/dist/tx/broadcast/resolvers/ton.js +8 -3
  64. package/dist/tx/broadcast/resolvers/ton.js.map +1 -1
  65. package/dist/tx/broadcast/resolvers/tron.d.ts.map +1 -1
  66. package/dist/tx/broadcast/resolvers/tron.js +16 -10
  67. package/dist/tx/broadcast/resolvers/tron.js.map +1 -1
  68. package/dist/tx/broadcast/resolvers/utxo.d.ts.map +1 -1
  69. package/dist/tx/broadcast/resolvers/utxo.js +4 -1
  70. package/dist/tx/broadcast/resolvers/utxo.js.map +1 -1
  71. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +29 -0
  72. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -0
  73. package/dist/tx/broadcast/verifyBroadcastByHash.js +35 -0
  74. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -0
  75. package/package.json +21 -1
@@ -2,31 +2,33 @@ import { attempt } from '@vultisig/lib-utils/attempt';
2
2
  import { isInError } from '@vultisig/lib-utils/error/isInError';
3
3
  import { getKyberSwapRoute } from './route.js';
4
4
  import { getKyberSwapTx } from './tx.js';
5
- export const getKyberSwapQuote = async ({ from, to, amount, isAffiliate, }) => {
5
+ export const getKyberSwapQuote = async ({ from, to, amount, affiliateBps, }) => {
6
6
  const { routeSummary, routerAddress } = await getKyberSwapRoute({
7
7
  from,
8
8
  to,
9
9
  amount,
10
- isAffiliate,
10
+ affiliateBps,
11
11
  });
12
12
  const tx = await attempt(getKyberSwapTx({
13
13
  from,
14
+ to,
14
15
  routeSummary,
15
16
  routerAddress,
16
17
  amount,
17
18
  enableGasEstimation: true,
18
- isAffiliate,
19
+ affiliateBps,
19
20
  }));
20
21
  if ('error' in tx) {
21
22
  const { error } = tx;
22
23
  if (isInError(error, 'TransferHelper')) {
23
24
  return getKyberSwapTx({
24
25
  from,
26
+ to,
25
27
  routeSummary,
26
28
  routerAddress,
27
29
  amount,
28
30
  enableGasEstimation: false,
29
- isAffiliate,
31
+ affiliateBps,
30
32
  });
31
33
  }
32
34
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"quote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/quote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAK/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAOrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,WAAW,GACL,EAA6B,EAAE;IACrC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAiB,CAAC;QAC9D,IAAI;QACJ,EAAE;QACF,MAAM;QACN,WAAW;KACZ,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,cAAc,CAAC;QACb,IAAI;QACJ,YAAY;QACZ,aAAa;QACb,MAAM;QACN,mBAAmB,EAAE,IAAI;QACzB,WAAW;KACZ,CAAC,CACH,CAAA;IAED,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QACpB,IAAI,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACvC,OAAO,cAAc,CAAC;gBACpB,IAAI;gBACJ,YAAY;gBACZ,aAAa;gBACb,MAAM;gBACN,mBAAmB,EAAE,KAAK;gBAC1B,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO,EAAE,CAAC,IAAI,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/quote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAK/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAOrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,GACN,EAA6B,EAAE;IACrC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAiB,CAAC;QAC9D,IAAI;QACJ,EAAE;QACF,MAAM;QACN,YAAY;KACb,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,cAAc,CAAC;QACb,IAAI;QACJ,EAAE;QACF,YAAY;QACZ,aAAa;QACb,MAAM;QACN,mBAAmB,EAAE,IAAI;QACzB,YAAY;KACb,CAAC,CACH,CAAA;IAED,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QACpB,IAAI,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACvC,OAAO,cAAc,CAAC;gBACpB,IAAI;gBACJ,EAAE;gBACF,YAAY;gBACZ,aAAa;gBACb,MAAM;gBACN,mBAAmB,EAAE,KAAK;gBAC1B,YAAY;aACb,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO,EAAE,CAAC,IAAI,CAAA;AAChB,CAAC,CAAA"}
@@ -3,12 +3,12 @@ import { TransferDirection } from '@vultisig/lib-utils/TransferDirection';
3
3
  import { KyberSwapEnabledChain } from '../chains.js';
4
4
  type Input = Record<TransferDirection, AccountCoin<KyberSwapEnabledChain>> & {
5
5
  amount: bigint;
6
- isAffiliate: boolean;
6
+ affiliateBps?: number;
7
7
  };
8
8
  type KyberSwapRoute = {
9
9
  routeSummary: any;
10
10
  routerAddress: string;
11
11
  };
12
- export declare const getKyberSwapRoute: ({ from, to, amount, isAffiliate, }: Input) => Promise<KyberSwapRoute>;
12
+ export declare const getKyberSwapRoute: ({ from, to, amount, affiliateBps, }: Input) => Promise<KyberSwapRoute>;
13
13
  export {};
14
14
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAIjD,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,YAAY,EAAE,GAAG,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAoBD,eAAO,MAAM,iBAAiB,GAAU,oCAKrC,KAAK,KAAG,OAAO,CAAC,cAAc,CA2BhC,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AASjD,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,YAAY,EAAE,GAAG,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAkBD,eAAO,MAAM,iBAAiB,GAAU,qCAKrC,KAAK,KAAG,OAAO,CAAC,cAAc,CA2BhC,CAAA"}
@@ -1,9 +1,9 @@
1
1
  import { addQueryParams } from '@vultisig/lib-utils/query/addQueryParams';
2
2
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
3
3
  import { evmNativeCoinAddress } from '../../../../chains/evm/config.js';
4
- import { kyberSwapAffiliateConfig, kyberSwapSlippageTolerance } from '../config.js';
4
+ import { getKyberSwapAffiliateParams, kyberSwapAffiliateConfig, kyberSwapSlippageTolerance, } from '../config.js';
5
5
  import { getKyberSwapBaseUrl } from './baseUrl.js';
6
- export const getKyberSwapRoute = async ({ from, to, amount, isAffiliate, }) => {
6
+ export const getKyberSwapRoute = async ({ from, to, amount, affiliateBps, }) => {
7
7
  const [tokenIn, tokenOut] = [from, to].map(({ id }) => id || evmNativeCoinAddress);
8
8
  const routeParams = {
9
9
  tokenIn,
@@ -12,7 +12,7 @@ export const getKyberSwapRoute = async ({ from, to, amount, isAffiliate, }) => {
12
12
  saveGas: true,
13
13
  gasInclude: true,
14
14
  slippageTolerance: kyberSwapSlippageTolerance,
15
- ...(isAffiliate ? kyberSwapAffiliateConfig : {}),
15
+ ...getKyberSwapAffiliateParams(affiliateBps),
16
16
  };
17
17
  const routeUrl = addQueryParams(`${getKyberSwapBaseUrl(from.chain)}/routes`, routeParams);
18
18
  const { data } = await queryUrl(routeUrl, {
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAG7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AA8B/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,WAAW,GACL,EAA2B,EAAE;IACnC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CACxC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,oBAAoB,CACvC,CAAA;IAED,MAAM,WAAW,GAAyB;QACxC,OAAO;QACP,QAAQ;QACR,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;QAC3B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,0BAA0B;QAC7C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAA;IAED,MAAM,QAAQ,GAAG,cAAc,CAC7B,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3C,WAAW,CACZ,CAAA;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAyB,QAAQ,EAAE;QAChE,OAAO,EAAE;YACP,aAAa,EAAE,wBAAwB,CAAC,MAAM;SAC/C;KACF,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAG7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,EAEL,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AA4B/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,GACN,EAA2B,EAAE;IACnC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CACxC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,oBAAoB,CACvC,CAAA;IAED,MAAM,WAAW,GAAyB;QACxC,OAAO;QACP,QAAQ;QACR,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;QAC3B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,0BAA0B;QAC7C,GAAG,2BAA2B,CAAC,YAAY,CAAC;KAC7C,CAAA;IAED,MAAM,QAAQ,GAAG,cAAc,CAC7B,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3C,WAAW,CACZ,CAAA;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAyB,QAAQ,EAAE;QAChE,OAAO,EAAE;YACP,aAAa,EAAE,wBAAwB,CAAC,MAAM;SAC/C;KACF,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -1,14 +1,14 @@
1
+ import { TransferDirection } from '@vultisig/lib-utils/TransferDirection';
1
2
  import { AccountCoin } from '../../../../coin/AccountCoin.js';
2
3
  import { GeneralSwapQuote } from '../../GeneralSwapQuote.js';
3
4
  import { KyberSwapEnabledChain } from '../chains.js';
4
- type GetKyberSwapTxInput = {
5
- from: AccountCoin<KyberSwapEnabledChain>;
5
+ type GetKyberSwapTxInput = Record<TransferDirection, AccountCoin<KyberSwapEnabledChain>> & {
6
6
  routeSummary: any;
7
7
  routerAddress: string;
8
8
  amount: bigint;
9
9
  enableGasEstimation: boolean;
10
- isAffiliate: boolean;
10
+ affiliateBps?: number;
11
11
  };
12
- export declare const getKyberSwapTx: ({ from, routeSummary, routerAddress, amount, enableGasEstimation, isAffiliate, }: GetKyberSwapTxInput) => Promise<GeneralSwapQuote>;
12
+ export declare const getKyberSwapTx: ({ from, to, routeSummary, routerAddress, amount, enableGasEstimation, affiliateBps, }: GetKyberSwapTxInput) => Promise<GeneralSwapQuote>;
13
13
  export {};
14
14
  //# sourceMappingURL=tx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/tx.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAQjD,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAA;IACxC,YAAY,EAAE,GAAG,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,OAAO,CAAA;IAC5B,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAaD,eAAO,MAAM,cAAc,GAAU,kFAOlC,mBAAmB,KAAG,OAAO,CAAC,gBAAgB,CAiEhD,CAAA"}
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/tx.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAUjD,KAAK,mBAAmB,GAAG,MAAM,CAC/B,iBAAiB,EACjB,WAAW,CAAC,qBAAqB,CAAC,CACnC,GAAG;IACF,YAAY,EAAE,GAAG,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAsCD,eAAO,MAAM,cAAc,GAAU,uFAQlC,mBAAmB,KAAG,OAAO,CAAC,gBAAgB,CAqEhD,CAAA"}
@@ -2,10 +2,25 @@ import { extractErrorMsg } from '@vultisig/lib-utils/error/extractErrorMsg';
2
2
  import { isInError } from '@vultisig/lib-utils/error/isInError';
3
3
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
4
4
  import { convertDuration } from '@vultisig/lib-utils/time/convertDuration';
5
+ import { evmNativeCoinAddress } from '../../../../chains/evm/config.js';
5
6
  import { isFeeCoin } from '../../../../coin/utils/isFeeCoin.js';
6
- import { kyberSwapAffiliateConfig, kyberSwapSlippageTolerance, kyberSwapTxLifespan, } from '../config.js';
7
+ import { getKyberSwapAffiliateParams, hasAffiliateBps, kyberSwapAffiliateConfig, kyberSwapSlippageTolerance, kyberSwapTxLifespan, } from '../config.js';
7
8
  import { getKyberSwapBaseUrl } from './baseUrl.js';
8
- export const getKyberSwapTx = async ({ from, routeSummary, routerAddress, amount, enableGasEstimation, isAffiliate, }) => {
9
+ const getKyberSwapAffiliateFee = ({ amountOut, to, affiliateBps, }) => {
10
+ if (!hasAffiliateBps(affiliateBps)) {
11
+ return undefined;
12
+ }
13
+ const netAmountOut = BigInt(amountOut);
14
+ const feeRate = BigInt(affiliateBps);
15
+ const grossAmountOut = (netAmountOut * 10000n) / (10000n - feeRate);
16
+ return {
17
+ chain: to.chain,
18
+ id: to.id ?? evmNativeCoinAddress,
19
+ decimals: to.decimals,
20
+ amount: grossAmountOut - netAmountOut,
21
+ };
22
+ };
23
+ export const getKyberSwapTx = async ({ from, to, routeSummary, routerAddress, amount, enableGasEstimation, affiliateBps, }) => {
9
24
  const buildPayload = {
10
25
  routeSummary,
11
26
  sender: from.address,
@@ -13,7 +28,7 @@ export const getKyberSwapTx = async ({ from, routeSummary, routerAddress, amount
13
28
  slippageTolerance: kyberSwapSlippageTolerance,
14
29
  deadline: Math.round(convertDuration(Date.now() + convertDuration(kyberSwapTxLifespan, 'min', 'ms'), 'ms', 's')),
15
30
  enableGasEstimation,
16
- ...(isAffiliate ? kyberSwapAffiliateConfig : {}),
31
+ ...getKyberSwapAffiliateParams(affiliateBps),
17
32
  ignoreCappedSlippage: false,
18
33
  };
19
34
  const buildResponse = await queryUrl(`${getKyberSwapBaseUrl(from.chain)}/route/build`, {
@@ -49,6 +64,11 @@ export const getKyberSwapTx = async ({ from, routeSummary, routerAddress, amount
49
64
  data,
50
65
  value: isFeeCoin(from) ? amount.toString() : '0',
51
66
  gasLimit: gas ? BigInt(gas) : undefined,
67
+ affiliateFee: getKyberSwapAffiliateFee({
68
+ amountOut,
69
+ to,
70
+ affiliateBps,
71
+ }),
52
72
  },
53
73
  },
54
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/tx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/kyber/api/tx.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,12 @@ export declare const kyberSwapAffiliateConfig: {
5
5
  source: string;
6
6
  referral: string;
7
7
  };
8
+ export type KyberSwapAffiliateParams = typeof kyberSwapAffiliateConfig & {
9
+ feeAmount: number;
10
+ chargeFeeBy: 'currency_out';
11
+ isInBps: true;
12
+ feeReceiver: string;
13
+ };
14
+ export declare const hasAffiliateBps: (affiliateBps?: number) => affiliateBps is number;
15
+ export declare const getKyberSwapAffiliateParams: (affiliateBps?: number) => KyberSwapAffiliateParams | Record<string, never>;
8
16
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/kyber/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,eAAO,MAAM,mBAAmB,EAAE,OAAY,CAAA;AAE9C,eAAO,MAAM,0BAA0B,EAAE,MAAY,CAAA;AAErD,eAAO,MAAM,wBAAwB;;;CAGpC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/kyber/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,eAAO,MAAM,mBAAmB,EAAE,OAAY,CAAA;AAE9C,eAAO,MAAM,0BAA0B,EAAE,MAAY,CAAA;AAErD,eAAO,MAAM,wBAAwB;;;CAGpC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,GAAG;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,cAAc,CAAA;IAC3B,OAAO,EAAE,IAAI,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,KACpB,YAAY,IAAI,MACqD,CAAA;AAExE,eAAO,MAAM,2BAA2B,GACtC,eAAe,MAAM,KACpB,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAS1C,CAAA"}
@@ -4,4 +4,14 @@ export const kyberSwapAffiliateConfig = {
4
4
  source: 'vultisig-v0',
5
5
  referral: '0x8E247a480449c84a5fDD25974A8501f3EFa4ABb9',
6
6
  };
7
+ export const hasAffiliateBps = (affiliateBps) => affiliateBps !== undefined && affiliateBps > 0 && affiliateBps < 10000;
8
+ export const getKyberSwapAffiliateParams = (affiliateBps) => hasAffiliateBps(affiliateBps)
9
+ ? {
10
+ ...kyberSwapAffiliateConfig,
11
+ feeAmount: affiliateBps,
12
+ chargeFeeBy: 'currency_out',
13
+ isInBps: true,
14
+ feeReceiver: kyberSwapAffiliateConfig.referral,
15
+ }
16
+ : {};
7
17
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/kyber/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAY,EAAE,CAAA;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GAAW,GAAG,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,4CAA4C;CACvD,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/kyber/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAY,EAAE,CAAA;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GAAW,GAAG,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AASD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,YAAqB,EACG,EAAE,CAC1B,YAAY,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,KAAK,CAAA;AAExE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,YAAqB,EAC6B,EAAE,CACpD,eAAe,CAAC,YAAY,CAAC;IAC3B,CAAC,CAAC;QACE,GAAG,wBAAwB;QAC3B,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,wBAAwB,CAAC,QAAQ;KAC/C;IACH,CAAC,CAAC,EAAE,CAAA"}
@@ -63,9 +63,9 @@ export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTi
63
63
  chain: toChain,
64
64
  },
65
65
  amount: chainAmount,
66
- isAffiliate: !!affiliateBps,
66
+ affiliateBps,
67
67
  });
68
- return { quote: { general }, discounts: [] };
68
+ return { quote: { general }, discounts: vultDiscount };
69
69
  });
70
70
  }
71
71
  if (isOneOf(from.chain, oneInchSwapEnabledChains) &&
@@ -1 +1 @@
1
- {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mEAAmE,CAAA;AACvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAA;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAoB,MAAM,cAAc,CAAA;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAA;AAWlC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAClC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,QAAQ,EACR,gBAAgB,GACG,EAAsB,EAAE;IAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAA;IAElE,MAAM,YAAY,GAAmB,gBAAgB;QACnD,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC;QACxC,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,gBAAgB,GAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3E,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAC7D,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAC3B,OAAO,CAAC,KAAK,EAAE,6BAA6B,CAAC,SAAS,CAAC,CAAC,CACzD,CACF,CAAA;IAED,MAAM,iBAAiB,GAAG,GAAuB,EAAE,CACjD,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,IAAwB,EAAE;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;QAClC,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,SAAS;YACT,WAAW,EAAE,EAAE,CAAC,OAAO;YACvB,IAAI;YACJ,EAAE;YACF,MAAM,EAAE,YAAY;YACpB,QAAQ;YACR,YAAY;SACb,CAAC,CAAA;QAEF,OAAO;YACL,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,SAAS,EACP,SAAS,KAAK,KAAK,CAAC,SAAS;gBAC3B,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,gBAAgB,CAAC;gBACxC,CAAC,CAAC,YAAY;SACnB,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,kBAAkB,GAAG,GAAuB,EAAE;QAClD,MAAM,MAAM,GAAuB,EAAE,CAAA;QAErC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;QACxB,MAAM,WAAW,GAAG,MAAM,CAAA;QAE1B,IACE,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC;YAC1C,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC;YACxC,SAAS,KAAK,OAAO,EACrB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAwB,EAAE;gBACzC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC;oBACtC,IAAI,EAAE;wBACJ,GAAG,IAAI;wBACP,KAAK,EAAE,SAAS;qBACjB;oBACD,EAAE,EAAE;wBACF,GAAG,EAAE;wBACL,KAAK,EAAE,OAAO;qBACf;oBACD,MAAM,EAAE,WAAW;oBACnB,YAAY;iBACb,CAAC,CAAA;gBAEF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;YACxD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IACE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,CAAC;YAC7C,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EACvB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAwB,EAAE;gBACzC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;oBACxC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACzC,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM;oBAClC,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM;oBAC5B,MAAM,EAAE,WAAW;oBACnB,YAAY;iBACb,CAAC,CAAA;gBAEF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;YACxD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IACE,OAAO,CAAC,SAAS,EAAE,qBAAqB,CAAC;YACzC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,EACvC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAwB,EAAE;gBACzC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;oBACrC,IAAI,EAAE;wBACJ,GAAG,IAAI;wBACP,KAAK,EAAE,SAAS;qBACjB;oBACD,EAAE,EAAE;wBACF,GAAG,EAAE;wBACL,KAAK,EAAE,OAAO;qBACf;oBACD,MAAM,EAAE,WAAW;oBACnB,YAAY;iBACb,CAAC,CAAA;gBAEF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;YACxD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,uBAAuB,GAC3B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAE/B,MAAM,QAAQ,GAAG,uBAAuB;QACtC,CAAC,CAAC,CAAC,GAAG,kBAAkB,EAAE,EAAE,GAAG,iBAAiB,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAAE,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAA;IAErD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,iBAAiB,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;IAEtE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAA;IACH,CAAC;IAED,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"bittensor.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/bittensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAOjD,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,CACpD,UAAU,CAAC,SAAS,CAuBrB,CAAA"}
1
+ {"version":3,"file":"bittensor.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/bittensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAQjD,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,CACpD,UAAU,CAAC,SAAS,CA0BrB,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import { bittensorRpcUrl } from '@vultisig/core-chain/chains/bittensor/client';
2
2
  import { ensureHexPrefix } from '@vultisig/lib-utils/hex/ensureHexPrefix';
3
3
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
4
- export const broadcastBittensorTx = async ({ tx: { encoded } }) => {
5
- const hexWithPrefix = ensureHexPrefix(Buffer.from(encoded).toString('hex'));
4
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
+ export const broadcastBittensorTx = async ({ chain, tx }) => {
6
+ const hexWithPrefix = ensureHexPrefix(Buffer.from(tx.encoded).toString('hex'));
6
7
  const response = await queryUrl(bittensorRpcUrl, {
7
8
  body: {
8
9
  jsonrpc: '2.0',
@@ -17,7 +18,8 @@ export const broadcastBittensorTx = async ({ tx: { encoded } }) => {
17
18
  if (message.includes('Already Imported')) {
18
19
  return;
19
20
  }
20
- throw new Error(`Bittensor broadcast failed: ${message || `code ${response.error.code}`}`);
21
+ const err = new Error(`Bittensor broadcast failed: ${message || `code ${response.error.code}`}`);
22
+ await verifyBroadcastByHash({ chain, tx, error: err });
21
23
  }
22
24
  };
23
25
  //# sourceMappingURL=bittensor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bittensor.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/bittensor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAS7D,MAAM,CAAC,MAAM,oBAAoB,GAE7B,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;IAChC,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAE3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAc,eAAe,EAAE;QAC5D,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,wBAAwB;YAChC,MAAM,EAAE,CAAC,aAAa,CAAC;YACvB,EAAE,EAAE,CAAC;SACN;KACF,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;QAC5C,mFAAmF;QACnF,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,OAAM;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,IAAI,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAC1E,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"bittensor.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/bittensor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAOhE,MAAM,CAAC,MAAM,oBAAoB,GAE7B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,aAAa,GAAG,eAAe,CACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACxC,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAc,eAAe,EAAE;QAC5D,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,wBAAwB;YAChC,MAAM,EAAE,CAAC,aAAa,CAAC;YACvB,EAAE,EAAE,CAAC;SACN;KACF,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;QAC5C,mFAAmF;QACnF,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,+BAA+B,OAAO,IAAI,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAC1E,CAAA;QACD,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IACxD,CAAC;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AASjD,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,CAClD,UAAU,CAAC,OAAO,CA4BnB,CAAA"}
1
+ {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAUjD,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,CAClD,UAAU,CAAC,OAAO,CA8BnB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { getCardanoTxHash } from '@vultisig/core-chain/tx/hash/resolvers/cardano';
2
2
  import { isInError } from '@vultisig/lib-utils/error/isInError';
3
3
  import { submitCardanoCbor } from '../../../chains/cardano/submit/submitCardanoCbor.js';
4
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
4
5
  import { selectEncodedBytes } from './utxo.js';
5
6
  /**
6
7
  * Ogmios code for "transaction already known / in ledger". When the node
@@ -20,6 +21,8 @@ export const broadcastCardanoTx = async ({ chain, tx }) => {
20
21
  if (isInError(error, 'BadInputsUTxO', 'timed out', 'txn-mempool-conflict', 'already known')) {
21
22
  return null;
22
23
  }
23
- throw new Error(`Failed to broadcast transaction: ${error}`);
24
+ const broadcastError = new Error(`Failed to broadcast transaction: ${error}`);
25
+ await verifyBroadcastByHash({ chain, tx, error: broadcastError });
26
+ return null;
24
27
  };
25
28
  //# sourceMappingURL=cardano.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cardano.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAA;AAGpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAE3C;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAA;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAE3B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAE/E,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,IAAI,YAAY,KAAK,oBAAoB,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,IAAI,2BAA2B,CAAA;IAEzD,IACE,SAAS,CACP,KAAK,EACL,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,eAAe,CAChB,EACD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA"}
1
+ {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cardano.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAA;AAGpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAE3C;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAA;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAE3B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAE/E,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,IAAI,YAAY,KAAK,oBAAoB,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,IAAI,2BAA2B,CAAA;IAEzD,IACE,SAAS,CACP,KAAK,EACL,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,eAAe,CAChB,EACD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAA;IAC7E,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;IACjE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CAAC,WAAW,CAa9D,CAAA"}
1
+ {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CAAC,WAAW,CAoB9D,CAAA"}
@@ -1,13 +1,19 @@
1
1
  import { getCosmosClient } from '@vultisig/core-chain/chains/cosmos/client';
2
2
  import { attempt } from '@vultisig/lib-utils/attempt';
3
3
  import { isInError } from '@vultisig/lib-utils/error/isInError';
4
- export const broadcastCosmosTx = async ({ chain, tx: { serialized }, }) => {
4
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
+ export const broadcastCosmosTx = async ({ chain, tx, }) => {
6
+ const { serialized } = tx;
5
7
  const { tx_bytes } = JSON.parse(serialized);
6
8
  const decodedTxBytes = Buffer.from(tx_bytes, 'base64');
7
9
  const client = await getCosmosClient(chain);
8
10
  const { error } = await attempt(client.broadcastTx(decodedTxBytes));
9
- if (error && !isInError(error, 'tx already exists in cache')) {
10
- throw error;
11
+ if (!error) {
12
+ return;
11
13
  }
14
+ if (isInError(error, 'tx already exists in cache')) {
15
+ return;
16
+ }
17
+ await verifyBroadcastByHash({ chain, tx, error });
12
18
  };
13
19
  //# sourceMappingURL=cosmos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cosmos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAI/D,MAAM,CAAC,MAAM,iBAAiB,GAAqC,KAAK,EAAE,EACxE,KAAK,EACL,EAAE,EAAE,EAAE,UAAU,EAAE,GACnB,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAA;IAEnE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/cosmos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAqC,KAAK,EAAE,EACxE,KAAK,EACL,EAAE,GACH,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAA;IAEnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACnD,OAAM;IACR,CAAC;IAED,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACnD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/evm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAMrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,QAAQ,CAyBxD,CAAA"}
1
+ {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/evm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAMrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,QAAQ,CA8BxD,CAAA"}
@@ -2,14 +2,18 @@ import { getEvmClient } from '@vultisig/core-chain/chains/evm/client';
2
2
  import { attempt } from '@vultisig/lib-utils/attempt';
3
3
  import { isInError } from '@vultisig/lib-utils/error/isInError';
4
4
  import { ensureHexPrefix } from '@vultisig/lib-utils/hex/ensureHexPrefix';
5
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
6
  export const broadcastEvmTx = async ({ chain, tx, }) => {
6
7
  const client = getEvmClient(chain);
7
8
  const { error } = await attempt(client.sendRawTransaction({
8
9
  serializedTransaction: ensureHexPrefix(Buffer.from(tx.encoded).toString('hex')),
9
10
  }));
10
- if (error &&
11
- !isInError(error, 'already known', 'transaction already exists', 'tx already in mempool')) {
12
- throw error;
11
+ if (!error) {
12
+ return;
13
13
  }
14
+ if (isInError(error, 'already known', 'transaction already exists', 'tx already in mempool')) {
15
+ return;
16
+ }
17
+ await verifyBroadcastByHash({ chain, tx, error });
14
18
  };
15
19
  //# sourceMappingURL=evm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/evm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAIzE,MAAM,CAAC,MAAM,cAAc,GAAkC,KAAK,EAAE,EAClE,KAAK,EACL,EAAE,GACH,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAElC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7B,MAAM,CAAC,kBAAkB,CAAC;QACxB,qBAAqB,EAAE,eAAe,CACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACxC;KACF,CAAC,CACH,CAAA;IAED,IACE,KAAK;QACL,CAAC,SAAS,CACR,KAAK,EACL,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,CACxB,EACD,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/evm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAkC,KAAK,EAAE,EAClE,KAAK,EACL,EAAE,GACH,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAElC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7B,MAAM,CAAC,kBAAkB,CAAC;QACxB,qBAAqB,EAAE,eAAe,CACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACxC;KACF,CAAC,CACH,CAAA;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,IACE,SAAS,CACP,KAAK,EACL,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,CACxB,EACD,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACnD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"polkadot.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/polkadot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CACnD,UAAU,CAAC,QAAQ,CAYpB,CAAA"}
1
+ {"version":3,"file":"polkadot.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/polkadot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAQjD,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CACnD,UAAU,CAAC,QAAQ,CA+BpB,CAAA"}
@@ -1,15 +1,30 @@
1
1
  import { ensureHexPrefix } from '@vultisig/lib-utils/hex/ensureHexPrefix';
2
2
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
3
3
  import { polkadotRpcUrl } from '../../../chains/polkadot/client.js';
4
- export const broadcastPolkadotTx = async ({ tx: { encoded } }) => {
5
- const hexWithPrefix = ensureHexPrefix(Buffer.from(encoded).toString('hex'));
6
- await queryUrl(polkadotRpcUrl, {
7
- body: {
8
- jsonrpc: '2.0',
9
- method: 'author_submitExtrinsic',
10
- params: [hexWithPrefix],
11
- id: 1,
12
- },
13
- });
4
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
+ export const broadcastPolkadotTx = async ({ chain, tx }) => {
6
+ const hexWithPrefix = ensureHexPrefix(Buffer.from(tx.encoded).toString('hex'));
7
+ try {
8
+ const response = await queryUrl(polkadotRpcUrl, {
9
+ body: {
10
+ jsonrpc: '2.0',
11
+ method: 'author_submitExtrinsic',
12
+ params: [hexWithPrefix],
13
+ id: 1,
14
+ },
15
+ });
16
+ if (response.error) {
17
+ throw new Error(`Polkadot broadcast failed: ${response.error.message ?? `code ${response.error.code}`}`);
18
+ }
19
+ // Per JSON-RPC 2.0 a valid response must have exactly one of `result` /
20
+ // `error`. If both are missing (malformed gateway response, truncated
21
+ // body, …) do not silently assume success — force hash verification.
22
+ if (!response.result) {
23
+ throw new Error('Polkadot broadcast failed: missing extrinsic hash in RPC response');
24
+ }
25
+ }
26
+ catch (error) {
27
+ await verifyBroadcastByHash({ chain, tx, error });
28
+ }
14
29
  };
15
30
  //# sourceMappingURL=polkadot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"polkadot.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/polkadot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAGhE,MAAM,CAAC,MAAM,mBAAmB,GAE5B,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;IAChC,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAE3E,MAAM,QAAQ,CAAC,cAAc,EAAE;QAC7B,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,wBAAwB;YAChC,MAAM,EAAE,CAAC,aAAa,CAAC;YACvB,EAAE,EAAE,CAAC;SACN;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"polkadot.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/polkadot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAOhE,MAAM,CAAC,MAAM,mBAAmB,GAE5B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAE9E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAc,cAAc,EAAE;YAC3D,IAAI,EAAE;gBACJ,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,CAAC,aAAa,CAAC;gBACvB,EAAE,EAAE,CAAC;aACN;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CACxF,CAAA;QACH,CAAC;QAED,wEAAwE;QACxE,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"qbtc.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/qbtc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,eAAe,EAAE,mBAAmB,CAAC,OAAO,KAAK,CAAC,IAAI,CAoClE,CAAA"}
1
+ {"version":3,"file":"qbtc.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/qbtc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,eAAe,EAAE,mBAAmB,CAAC,OAAO,KAAK,CAAC,IAAI,CA8ClE,CAAA"}
@@ -1,7 +1,9 @@
1
1
  import { qbtcRestUrl } from '@vultisig/core-chain/chains/cosmos/qbtc/tendermintRpcUrl';
2
2
  import { attempt } from '@vultisig/lib-utils/attempt';
3
3
  import { isInError } from '@vultisig/lib-utils/error/isInError';
4
- export const broadcastQbtcTx = async ({ tx: { serialized }, }) => {
4
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
+ export const broadcastQbtcTx = async ({ chain, tx, }) => {
6
+ const { serialized } = tx;
5
7
  const { tx_bytes } = JSON.parse(serialized);
6
8
  const resp = await fetch(`${qbtcRestUrl}/cosmos/tx/v1beta1/txs`, {
7
9
  method: 'POST',
@@ -16,7 +18,9 @@ export const broadcastQbtcTx = async ({ tx: { serialized }, }) => {
16
18
  if (isInError(text, 'tx already exists in cache')) {
17
19
  return;
18
20
  }
19
- throw new Error(`QBTC broadcast failed (${resp.status}): ${text}`);
21
+ const err = new Error(`QBTC broadcast failed (${resp.status}): ${text}`);
22
+ await verifyBroadcastByHash({ chain, tx, error: err });
23
+ return;
20
24
  }
21
25
  const data = (await resp.json());
22
26
  const { error } = await attempt(async () => {
@@ -24,8 +28,12 @@ export const broadcastQbtcTx = async ({ tx: { serialized }, }) => {
24
28
  throw new Error(`QBTC tx error: ${data.tx_response.raw_log || data.tx_response.log}`);
25
29
  }
26
30
  });
27
- if (error && !isInError(error, 'tx already exists in cache')) {
28
- throw error;
31
+ if (!error) {
32
+ return;
29
33
  }
34
+ if (isInError(error, 'tx already exists in cache')) {
35
+ return;
36
+ }
37
+ await verifyBroadcastByHash({ chain, tx, error });
30
38
  };
31
39
  //# sourceMappingURL=qbtc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qbtc.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/qbtc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAI/D,MAAM,CAAC,MAAM,eAAe,GAA2C,KAAK,EAAE,EAC5E,EAAE,EAAE,EAAE,UAAU,EAAE,GACnB,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAyB,CAAA;IAEnE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,wBAAwB,EAAE;QAC/D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ;YACR,IAAI,EAAE,qBAAqB;SAC5B,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,SAAS,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAE9B,CAAA;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CACrE,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"qbtc.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/qbtc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,eAAe,GAA2C,KAAK,EAAE,EAC5E,KAAK,EACL,EAAE,GACH,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAyB,CAAA;IAEnE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,wBAAwB,EAAE;QAC/D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ;YACR,IAAI,EAAE,qBAAqB;SAC5B,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,SAAS,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;QACxE,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACtD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAE9B,CAAA;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CACrE,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACnD,OAAM;IACR,CAAC;IAED,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACnD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAQlB,CAAA"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAyBlB,CAAA"}
@@ -1,9 +1,26 @@
1
1
  import { getRippleClient } from '@vultisig/core-chain/chains/ripple/client';
2
- export const broadcastRippleTx = async ({ tx: { encoded } }) => {
2
+ import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
3
+ export const broadcastRippleTx = async ({ chain, tx }) => {
3
4
  const client = await getRippleClient();
4
- await client.request({
5
- command: 'submit',
6
- tx_blob: Buffer.from(encoded).toString('hex'),
7
- });
5
+ try {
6
+ // XRPL's `submit` resolves successfully even when the tx is rejected
7
+ // (e.g. `tefPAST_SEQ` / `tefALREADY` for duplicates, `tec*` for fee or
8
+ // balance failures). The rejection is carried in the response payload,
9
+ // not via a thrown error — inspect `engine_result` / `engine_result_code`
10
+ // so non-success outcomes still take the hash-verify path.
11
+ const response = await client.request({
12
+ command: 'submit',
13
+ tx_blob: Buffer.from(tx.encoded).toString('hex'),
14
+ });
15
+ const engineResultCode = response?.result?.engine_result_code;
16
+ if (typeof engineResultCode === 'number' && engineResultCode !== 0) {
17
+ const engineResult = response.result.engine_result ?? 'unknown';
18
+ const engineResultMessage = response.result.engine_result_message ?? '';
19
+ throw new Error(`Ripple broadcast rejected: ${engineResult}${engineResultMessage ? ` — ${engineResultMessage}` : ''}`);
20
+ }
21
+ }
22
+ catch (error) {
23
+ await verifyBroadcastByHash({ chain, tx, error });
24
+ }
8
25
  };
9
26
  //# sourceMappingURL=ripple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ripple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAI3E,MAAM,CAAC,MAAM,iBAAiB,GAE1B,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;IAChC,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAA;IAEtC,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9C,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ripple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAE1B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAA;IAEtC,IAAI,CAAC;QACH,qEAAqE;QACrE,uEAAuE;QACvE,uEAAuE;QACvE,0EAA0E;QAC1E,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YACpC,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;SACjD,CAAC,CAAA;QACF,MAAM,gBAAgB,GAAG,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAA;QAC7D,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAA;YAC/D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAA;YACvE,MAAM,IAAI,KAAK,CACb,8BAA8B,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtG,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAoBlB,CAAA"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAwBlB,CAAA"}