@xchainjs/xchain-mayachain-amm 3.0.6 → 3.0.8

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/lib/index.esm.js CHANGED
@@ -1,15 +1,16 @@
1
- import { AssetAETH, Client as Client$6, defaultArbParams } from '@xchainjs/xchain-arbitrum';
2
- import { BTCChain, Client as Client$5, defaultBTCParams } from '@xchainjs/xchain-bitcoin';
1
+ import { AssetAETH, Client as Client$7, defaultArbParams } from '@xchainjs/xchain-arbitrum';
2
+ import { BTCChain, Client as Client$6, defaultBTCParams } from '@xchainjs/xchain-bitcoin';
3
3
  import { Network } from '@xchainjs/xchain-client';
4
- import { DASHChain, Client as Client$3, defaultDashParams } from '@xchainjs/xchain-dash';
5
- import { AssetETH as AssetETH$1, ETHChain, Client as Client$4, defaultEthParams } from '@xchainjs/xchain-ethereum';
4
+ import { DASHChain, Client as Client$4, defaultDashParams } from '@xchainjs/xchain-dash';
5
+ import { AssetETH as AssetETH$1, ETHChain, Client as Client$5, defaultEthParams } from '@xchainjs/xchain-ethereum';
6
6
  import 'crypto';
7
7
  import require$$0$4$1 from 'buffer';
8
8
  import { ethers } from 'ethers';
9
- import { KUJIChain, Client as Client$2, defaultKujiParams, AssetKUJI } from '@xchainjs/xchain-kujira';
10
- import { MAYAChain, Client, AssetCacao, CACAO_DECIMAL } from '@xchainjs/xchain-mayachain';
9
+ import { KUJIChain, Client as Client$3, defaultKujiParams, AssetKUJI } from '@xchainjs/xchain-kujira';
10
+ import { MAYAChain, Client as Client$1, AssetCacao, CACAO_DECIMAL } from '@xchainjs/xchain-mayachain';
11
11
  import { MayachainQuery } from '@xchainjs/xchain-mayachain-query';
12
- import { THORChain, Client as Client$1, AssetRuneNative } from '@xchainjs/xchain-thorchain';
12
+ import { RadixChain, Client, generateAddressParam, AssetXRD, generateBucketParam, generateStringParam } from '@xchainjs/xchain-radix';
13
+ import { THORChain, Client as Client$2, AssetRuneNative } from '@xchainjs/xchain-thorchain';
13
14
  import { Wallet as Wallet$1 } from '@xchainjs/xchain-wallet';
14
15
 
15
16
  /******************************************************************************
@@ -89608,19 +89609,29 @@ const isTokenCryptoAmount = (amount) => {
89608
89609
  const isProtocolBFTChain = (chain) => {
89609
89610
  return [AssetKUJI.chain, AssetRuneNative.chain].includes(chain);
89610
89611
  };
89612
+ /**
89613
+ * Check if a chain is Radix chain
89614
+ * @param {Chain} chain to check
89615
+ * @returns true if chain is Radix, otherwise, false
89616
+ */
89617
+ const isRadixChain = (chain) => {
89618
+ return chain === RadixChain;
89619
+ };
89611
89620
  const validateAddress = (network, chain, address) => {
89612
89621
  switch (chain) {
89613
89622
  case BTCChain:
89614
- return new Client$5(Object.assign(Object.assign({}, defaultBTCParams), { network })).validateAddress(address);
89623
+ return new Client$6(Object.assign(Object.assign({}, defaultBTCParams), { network })).validateAddress(address);
89615
89624
  case ETHChain:
89616
- return new Client$4(Object.assign(Object.assign({}, defaultEthParams), { network })).validateAddress(address);
89625
+ return new Client$5(Object.assign(Object.assign({}, defaultEthParams), { network })).validateAddress(address);
89617
89626
  case DASHChain:
89618
- return new Client$3(Object.assign(Object.assign({}, defaultDashParams), { network })).validateAddress(address);
89627
+ return new Client$4(Object.assign(Object.assign({}, defaultDashParams), { network })).validateAddress(address);
89619
89628
  case KUJIChain:
89620
- return new Client$2(Object.assign(Object.assign({}, defaultKujiParams), { network })).validateAddress(address);
89629
+ return new Client$3(Object.assign(Object.assign({}, defaultKujiParams), { network })).validateAddress(address);
89621
89630
  case THORChain:
89622
- return new Client$1({ network }).validateAddress(address);
89631
+ return new Client$2({ network }).validateAddress(address);
89623
89632
  case MAYAChain:
89633
+ return new Client$1({ network }).validateAddress(address);
89634
+ case RadixChain:
89624
89635
  return new Client({ network }).validateAddress(address);
89625
89636
  default:
89626
89637
  throw Error('Unsupported chain');
@@ -89651,8 +89662,8 @@ class MayachainAction {
89651
89662
  }
89652
89663
  static makeNonProtocolAction({ wallet, assetAmount, recipient, memo, }) {
89653
89664
  return __awaiter$8(this, void 0, void 0, function* () {
89654
- // Non EVM actions
89655
- if (!isProtocolEVMChain(assetAmount.asset.chain)) {
89665
+ // Non EVM actions and non Radix action
89666
+ if (!isProtocolEVMChain(assetAmount.asset.chain) && !eqAsset(assetAmount.asset, AssetXRD)) {
89656
89667
  if (isProtocolBFTChain(assetAmount.asset.chain)) {
89657
89668
  const hash = yield wallet.transfer({
89658
89669
  asset: assetAmount.asset,
@@ -89665,7 +89676,12 @@ class MayachainAction {
89665
89676
  url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89666
89677
  };
89667
89678
  }
89668
- const feeRates = yield wallet.getFeeRates(assetAmount.asset.chain);
89679
+ const feeRates = yield wallet.estimateTransferFees({
89680
+ asset: assetAmount.asset,
89681
+ amount: assetAmount.baseAmount,
89682
+ recipient,
89683
+ memo,
89684
+ });
89669
89685
  const hash = yield wallet.transfer({
89670
89686
  asset: assetAmount.asset,
89671
89687
  amount: assetAmount.baseAmount,
@@ -89678,11 +89694,34 @@ class MayachainAction {
89678
89694
  url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89679
89695
  };
89680
89696
  }
89681
- // EVM actions
89697
+ // EVM actions and Radix go through the router
89682
89698
  const mayachainQuery = new MayachainQuery();
89683
89699
  const inboundDetails = yield mayachainQuery.getChainInboundDetails(assetAmount.asset.chain);
89684
89700
  if (!inboundDetails.router)
89685
89701
  throw Error(`Unknown router for ${assetAmount.asset.chain} chain`);
89702
+ if (isRadixChain(assetAmount.asset.chain)) {
89703
+ // Radix
89704
+ const hash = yield wallet.transfer({
89705
+ asset: assetAmount.asset,
89706
+ recipient: inboundDetails.router,
89707
+ amount: assetAmount.baseAmount,
89708
+ methodToCall: {
89709
+ address: inboundDetails.router,
89710
+ methodName: 'user_deposit',
89711
+ params: [
89712
+ generateAddressParam(yield wallet.getAddress(AssetXRD.chain)),
89713
+ generateAddressParam(recipient),
89714
+ generateBucketParam(0),
89715
+ generateStringParam(memo),
89716
+ ],
89717
+ },
89718
+ });
89719
+ return {
89720
+ hash,
89721
+ url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89722
+ };
89723
+ }
89724
+ // Evm
89686
89725
  const isERC20 = isProtocolERC20Asset(assetAmount.asset);
89687
89726
  const checkSummedContractAddress = isERC20
89688
89727
  ? ethers.utils.getAddress(getContractAddressFromAsset(assetAmount.asset))
@@ -89739,13 +89778,14 @@ class MayachainAMM {
89739
89778
  * @returns {MayachainAMM} Returns the MayachainAMM instance.
89740
89779
  */
89741
89780
  constructor(mayachainQuery = new MayachainQuery(), wallet = new Wallet$1({
89742
- BTC: new Client$5(Object.assign(Object.assign({}, defaultBTCParams), { network: Network.Mainnet })),
89743
- ETH: new Client$4(Object.assign(Object.assign({}, defaultEthParams), { network: Network.Mainnet })),
89744
- DASH: new Client$3(Object.assign(Object.assign({}, defaultDashParams), { network: Network.Mainnet })),
89745
- KUJI: new Client$2(Object.assign(Object.assign({}, defaultKujiParams), { network: Network.Mainnet })),
89746
- ARB: new Client$6(Object.assign(Object.assign({}, defaultArbParams), { network: Network.Mainnet })),
89747
- THOR: new Client$1({ network: Network.Mainnet }),
89748
- MAYA: new Client({ network: Network.Mainnet }),
89781
+ BTC: new Client$6(Object.assign(Object.assign({}, defaultBTCParams), { network: Network.Mainnet })),
89782
+ ETH: new Client$5(Object.assign(Object.assign({}, defaultEthParams), { network: Network.Mainnet })),
89783
+ DASH: new Client$4(Object.assign(Object.assign({}, defaultDashParams), { network: Network.Mainnet })),
89784
+ KUJI: new Client$3(Object.assign(Object.assign({}, defaultKujiParams), { network: Network.Mainnet })),
89785
+ ARB: new Client$7(Object.assign(Object.assign({}, defaultArbParams), { network: Network.Mainnet })),
89786
+ THOR: new Client$2({ network: Network.Mainnet }),
89787
+ MAYA: new Client$1({ network: Network.Mainnet }),
89788
+ XRD: new Client({ network: Network.Mainnet }),
89749
89789
  })) {
89750
89790
  this.mayachainQuery = mayachainQuery;
89751
89791
  this.wallet = wallet;
package/lib/index.js CHANGED
@@ -13,6 +13,7 @@ var ethers = require('ethers');
13
13
  var xchainKujira = require('@xchainjs/xchain-kujira');
14
14
  var xchainMayachain = require('@xchainjs/xchain-mayachain');
15
15
  var xchainMayachainQuery = require('@xchainjs/xchain-mayachain-query');
16
+ var xchainRadix = require('@xchainjs/xchain-radix');
16
17
  var xchainThorchain = require('@xchainjs/xchain-thorchain');
17
18
  var xchainWallet = require('@xchainjs/xchain-wallet');
18
19
 
@@ -89616,6 +89617,14 @@ const isTokenCryptoAmount = (amount) => {
89616
89617
  const isProtocolBFTChain = (chain) => {
89617
89618
  return [xchainKujira.AssetKUJI.chain, xchainThorchain.AssetRuneNative.chain].includes(chain);
89618
89619
  };
89620
+ /**
89621
+ * Check if a chain is Radix chain
89622
+ * @param {Chain} chain to check
89623
+ * @returns true if chain is Radix, otherwise, false
89624
+ */
89625
+ const isRadixChain = (chain) => {
89626
+ return chain === xchainRadix.RadixChain;
89627
+ };
89619
89628
  const validateAddress = (network, chain, address) => {
89620
89629
  switch (chain) {
89621
89630
  case xchainBitcoin.BTCChain:
@@ -89630,6 +89639,8 @@ const validateAddress = (network, chain, address) => {
89630
89639
  return new xchainThorchain.Client({ network }).validateAddress(address);
89631
89640
  case xchainMayachain.MAYAChain:
89632
89641
  return new xchainMayachain.Client({ network }).validateAddress(address);
89642
+ case xchainRadix.RadixChain:
89643
+ return new xchainRadix.Client({ network }).validateAddress(address);
89633
89644
  default:
89634
89645
  throw Error('Unsupported chain');
89635
89646
  }
@@ -89659,8 +89670,8 @@ class MayachainAction {
89659
89670
  }
89660
89671
  static makeNonProtocolAction({ wallet, assetAmount, recipient, memo, }) {
89661
89672
  return __awaiter$8(this, void 0, void 0, function* () {
89662
- // Non EVM actions
89663
- if (!isProtocolEVMChain(assetAmount.asset.chain)) {
89673
+ // Non EVM actions and non Radix action
89674
+ if (!isProtocolEVMChain(assetAmount.asset.chain) && !eqAsset(assetAmount.asset, xchainRadix.AssetXRD)) {
89664
89675
  if (isProtocolBFTChain(assetAmount.asset.chain)) {
89665
89676
  const hash = yield wallet.transfer({
89666
89677
  asset: assetAmount.asset,
@@ -89673,7 +89684,12 @@ class MayachainAction {
89673
89684
  url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89674
89685
  };
89675
89686
  }
89676
- const feeRates = yield wallet.getFeeRates(assetAmount.asset.chain);
89687
+ const feeRates = yield wallet.estimateTransferFees({
89688
+ asset: assetAmount.asset,
89689
+ amount: assetAmount.baseAmount,
89690
+ recipient,
89691
+ memo,
89692
+ });
89677
89693
  const hash = yield wallet.transfer({
89678
89694
  asset: assetAmount.asset,
89679
89695
  amount: assetAmount.baseAmount,
@@ -89686,11 +89702,34 @@ class MayachainAction {
89686
89702
  url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89687
89703
  };
89688
89704
  }
89689
- // EVM actions
89705
+ // EVM actions and Radix go through the router
89690
89706
  const mayachainQuery = new xchainMayachainQuery.MayachainQuery();
89691
89707
  const inboundDetails = yield mayachainQuery.getChainInboundDetails(assetAmount.asset.chain);
89692
89708
  if (!inboundDetails.router)
89693
89709
  throw Error(`Unknown router for ${assetAmount.asset.chain} chain`);
89710
+ if (isRadixChain(assetAmount.asset.chain)) {
89711
+ // Radix
89712
+ const hash = yield wallet.transfer({
89713
+ asset: assetAmount.asset,
89714
+ recipient: inboundDetails.router,
89715
+ amount: assetAmount.baseAmount,
89716
+ methodToCall: {
89717
+ address: inboundDetails.router,
89718
+ methodName: 'user_deposit',
89719
+ params: [
89720
+ xchainRadix.generateAddressParam(yield wallet.getAddress(xchainRadix.AssetXRD.chain)),
89721
+ xchainRadix.generateAddressParam(recipient),
89722
+ xchainRadix.generateBucketParam(0),
89723
+ xchainRadix.generateStringParam(memo),
89724
+ ],
89725
+ },
89726
+ });
89727
+ return {
89728
+ hash,
89729
+ url: yield wallet.getExplorerTxUrl(assetAmount.asset.chain, hash),
89730
+ };
89731
+ }
89732
+ // Evm
89694
89733
  const isERC20 = isProtocolERC20Asset(assetAmount.asset);
89695
89734
  const checkSummedContractAddress = isERC20
89696
89735
  ? ethers.ethers.utils.getAddress(getContractAddressFromAsset(assetAmount.asset))
@@ -89754,6 +89793,7 @@ class MayachainAMM {
89754
89793
  ARB: new xchainArbitrum.Client(Object.assign(Object.assign({}, xchainArbitrum.defaultArbParams), { network: xchainClient.Network.Mainnet })),
89755
89794
  THOR: new xchainThorchain.Client({ network: xchainClient.Network.Mainnet }),
89756
89795
  MAYA: new xchainMayachain.Client({ network: xchainClient.Network.Mainnet }),
89796
+ XRD: new xchainRadix.Client({ network: xchainClient.Network.Mainnet }),
89757
89797
  })) {
89758
89798
  this.mayachainQuery = mayachainQuery;
89759
89799
  this.wallet = wallet;
package/lib/utils.d.ts CHANGED
@@ -25,4 +25,10 @@ export declare const isTokenCryptoAmount: (amount: CryptoAmount) => amount is To
25
25
  * @returns true if chain is EVM, otherwise, false
26
26
  */
27
27
  export declare const isProtocolBFTChain: (chain: Chain) => boolean;
28
+ /**
29
+ * Check if a chain is Radix chain
30
+ * @param {Chain} chain to check
31
+ * @returns true if chain is Radix, otherwise, false
32
+ */
33
+ export declare const isRadixChain: (chain: Chain) => boolean;
28
34
  export declare const validateAddress: (network: Network, chain: Chain, address: Address) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xchainjs/xchain-mayachain-amm",
3
- "version": "3.0.6",
3
+ "version": "3.0.8",
4
4
  "description": "module that exposes estimating & swapping cryptocurrency assets on mayachain",
5
5
  "keywords": [
6
6
  "MAYAChain",
@@ -36,16 +36,17 @@
36
36
  "url": "https://github.com/xchainjs/xchainjs-lib/issues"
37
37
  },
38
38
  "dependencies": {
39
- "@xchainjs/xchain-arbitrum": "1.0.5",
39
+ "@xchainjs/xchain-arbitrum": "1.0.7",
40
40
  "@xchainjs/xchain-bitcoin": "1.0.3",
41
41
  "@xchainjs/xchain-client": "1.0.3",
42
42
  "@xchainjs/xchain-dash": "1.0.3",
43
- "@xchainjs/xchain-ethereum": "1.0.5",
44
- "@xchainjs/xchain-kujira": "1.0.3",
45
- "@xchainjs/xchain-mayachain": "2.0.3",
46
- "@xchainjs/xchain-mayachain-query": "1.0.3",
47
- "@xchainjs/xchain-thorchain": "2.0.4",
48
- "@xchainjs/xchain-wallet": "1.0.6",
43
+ "@xchainjs/xchain-ethereum": "1.0.7",
44
+ "@xchainjs/xchain-kujira": "1.0.4",
45
+ "@xchainjs/xchain-mayachain": "2.0.4",
46
+ "@xchainjs/xchain-mayachain-query": "1.0.4",
47
+ "@xchainjs/xchain-radix": "1.1.0",
48
+ "@xchainjs/xchain-thorchain": "2.0.5",
49
+ "@xchainjs/xchain-wallet": "1.0.8",
49
50
  "ethers": "5.7.2"
50
51
  },
51
52
  "devDependencies": {