@aptos-labs/cross-chain-core 4.25.0 → 5.0.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 (40) hide show
  1. package/README.md +11 -0
  2. package/dist/CrossChainCore.d.ts +3 -3
  3. package/dist/CrossChainCore.d.ts.map +1 -1
  4. package/dist/config/mainnet/chains.d.ts +0 -14
  5. package/dist/config/mainnet/chains.d.ts.map +1 -1
  6. package/dist/config/mainnet/tokens.d.ts +0 -1
  7. package/dist/config/mainnet/tokens.d.ts.map +1 -1
  8. package/dist/config/testnet/chains.d.ts +0 -16
  9. package/dist/config/testnet/chains.d.ts.map +1 -1
  10. package/dist/config/testnet/tokens.d.ts +0 -1
  11. package/dist/config/testnet/tokens.d.ts.map +1 -1
  12. package/dist/index.js +272 -92
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +263 -73
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/providers/wormhole/signers/AptosLocalSigner.d.ts.map +1 -1
  17. package/dist/providers/wormhole/signers/AptosSigner.d.ts +7 -0
  18. package/dist/providers/wormhole/signers/AptosSigner.d.ts.map +1 -0
  19. package/dist/providers/wormhole/signers/Signer.d.ts +7 -2
  20. package/dist/providers/wormhole/signers/Signer.d.ts.map +1 -1
  21. package/dist/providers/wormhole/types.d.ts +14 -3
  22. package/dist/providers/wormhole/types.d.ts.map +1 -1
  23. package/dist/providers/wormhole/wormhole.d.ts +7 -9
  24. package/dist/providers/wormhole/wormhole.d.ts.map +1 -1
  25. package/dist/utils/getUsdcBalance.d.ts.map +1 -1
  26. package/dist/version.d.ts +1 -1
  27. package/dist/version.d.ts.map +1 -1
  28. package/package.json +9 -9
  29. package/src/CrossChainCore.ts +18 -19
  30. package/src/config/mainnet/chains.ts +15 -15
  31. package/src/config/mainnet/tokens.ts +10 -11
  32. package/src/config/testnet/chains.ts +15 -16
  33. package/src/config/testnet/tokens.ts +10 -11
  34. package/src/providers/wormhole/signers/AptosLocalSigner.ts +4 -3
  35. package/src/providers/wormhole/signers/AptosSigner.ts +139 -0
  36. package/src/providers/wormhole/signers/Signer.ts +26 -2
  37. package/src/providers/wormhole/types.ts +16 -3
  38. package/src/providers/wormhole/wormhole.ts +165 -29
  39. package/src/utils/getUsdcBalance.ts +9 -11
  40. package/src/version.ts +1 -1
package/dist/index.js CHANGED
@@ -31,15 +31,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
33
  AptosLocalSigner: () => AptosLocalSigner,
34
- AptosMainnetChain: () => AptosMainnetChain,
35
- AptosMainnetUSDCToken: () => AptosMainnetUSDCToken,
36
- AptosTestnetChain: () => AptosTestnetChain,
37
- AptosTestnetUSDCToken: () => AptosTestnetUSDCToken,
38
34
  Context: () => Context,
39
35
  CrossChainCore: () => CrossChainCore,
40
- Network: () => import_ts_sdk6.Network,
41
- NetworkToChainId: () => import_ts_sdk5.NetworkToChainId,
42
- NetworkToNodeAPI: () => import_ts_sdk5.NetworkToNodeAPI,
36
+ Network: () => import_ts_sdk7.Network,
37
+ NetworkToChainId: () => import_ts_sdk6.NetworkToChainId,
38
+ NetworkToNodeAPI: () => import_ts_sdk6.NetworkToNodeAPI,
43
39
  WormholeProvider: () => WormholeProvider,
44
40
  mainnetChains: () => mainnetChains,
45
41
  mainnetTokens: () => mainnetTokens,
@@ -50,11 +46,11 @@ __export(index_exports, {
50
46
  module.exports = __toCommonJS(index_exports);
51
47
 
52
48
  // src/CrossChainCore.ts
53
- var import_ts_sdk4 = require("@aptos-labs/ts-sdk");
49
+ var import_ts_sdk5 = require("@aptos-labs/ts-sdk");
54
50
 
55
51
  // src/providers/wormhole/wormhole.ts
56
52
  var import_sdk = require("@wormhole-foundation/sdk");
57
- var import_ts_sdk2 = require("@aptos-labs/ts-sdk");
53
+ var import_ts_sdk3 = require("@aptos-labs/ts-sdk");
58
54
  var import_aptos = __toESM(require("@wormhole-foundation/sdk/aptos"));
59
55
  var import_solana = __toESM(require("@wormhole-foundation/sdk/solana"));
60
56
  var import_evm = __toESM(require("@wormhole-foundation/sdk/evm"));
@@ -451,14 +447,86 @@ async function signAndSendTransaction3(request, wallet, chainName, options) {
451
447
  return receipt?.hash || "";
452
448
  }
453
449
 
450
+ // src/providers/wormhole/signers/AptosSigner.ts
451
+ var import_ts_sdk2 = require("@aptos-labs/ts-sdk");
452
+ var import_wallet_standard = require("@aptos-labs/wallet-standard");
453
+ async function signAndSendTransaction4(request, wallet, sponsorAccount) {
454
+ if (!wallet) {
455
+ throw new Error("wallet.sendTransaction is undefined").message;
456
+ }
457
+ const payload = request.transaction;
458
+ payload.functionArguments = payload.functionArguments.map((a) => {
459
+ if (a instanceof Uint8Array) {
460
+ return Array.from(a);
461
+ } else if (typeof a === "bigint") {
462
+ return a.toString();
463
+ } else {
464
+ return a;
465
+ }
466
+ });
467
+ const aptosConfig = new import_ts_sdk2.AptosConfig({
468
+ network: import_ts_sdk2.Network.TESTNET
469
+ });
470
+ const aptos2 = new import_ts_sdk2.Aptos(aptosConfig);
471
+ const contractAddress = import_ts_sdk2.Network.TESTNET ? "0x5e2d961f06cd27aa07554a39d55f5ce1e58dff35d803c3529b1cd5c4fa3ab584" : "0x1";
472
+ const functionArguments = extractFunctionArguments(
473
+ payload.functionArguments
474
+ );
475
+ const transactionData = {
476
+ // a custom function to withdraw tokens from the aptos chain, published here on testnet:
477
+ // https://explorer.aptoslabs.com/account/0x5e2d961f06cd27aa07554a39d55f5ce1e58dff35d803c3529b1cd5c4fa3ab584/modules/code/withdraw?network=testnet
478
+ function: `${contractAddress}::withdraw::deposit_for_burn`,
479
+ functionArguments
480
+ };
481
+ const txnToSign = await aptos2.transaction.build.simple({
482
+ data: transactionData,
483
+ sender: (await wallet.features["aptos:account"]?.account()).address.toString(),
484
+ withFeePayer: sponsorAccount ? true : false
485
+ });
486
+ const response = await wallet.features["aptos:signTransaction"]?.signTransaction(txnToSign);
487
+ if (response?.status === import_wallet_standard.UserResponseStatus.REJECTED) {
488
+ throw new Error("User has rejected the request");
489
+ }
490
+ const txnToSubmit = {
491
+ transaction: txnToSign,
492
+ senderAuthenticator: response.args
493
+ };
494
+ if (sponsorAccount) {
495
+ if (typeof sponsorAccount === "string") {
496
+ } else {
497
+ const feePayerSignerAuthenticator = aptos2.transaction.signAsFeePayer({
498
+ signer: sponsorAccount,
499
+ transaction: txnToSign
500
+ });
501
+ txnToSubmit.feePayerAuthenticator = feePayerSignerAuthenticator;
502
+ }
503
+ }
504
+ const txnSubmitted = await aptos2.transaction.submit.simple(txnToSubmit);
505
+ const tx = await aptos2.waitForTransaction({
506
+ transactionHash: txnSubmitted.hash
507
+ });
508
+ return tx.hash;
509
+ }
510
+ function extractFunctionArguments(functionArguments) {
511
+ const deserializer1 = new import_ts_sdk2.Deserializer(functionArguments[0].bcsToBytes());
512
+ const amount = deserializer1.deserializeU64();
513
+ const deserializer2 = new import_ts_sdk2.Deserializer(functionArguments[1].bcsToBytes());
514
+ const destination_domain = deserializer2.deserializeU32();
515
+ const mint_recipient = new import_ts_sdk2.AccountAddress(functionArguments[2].bcsToBytes());
516
+ const burn_token = new import_ts_sdk2.AccountAddress(functionArguments[3].bcsToBytes());
517
+ return [amount, destination_domain, mint_recipient, burn_token];
518
+ }
519
+
454
520
  // src/providers/wormhole/signers/Signer.ts
455
521
  var Signer = class {
456
- constructor(chain, address, options, wallet, crossChainCore) {
522
+ constructor(chain, address, options, wallet, crossChainCore, sponsorAccount) {
457
523
  this._chain = chain;
458
524
  this._address = address;
459
525
  this._options = options;
460
526
  this._wallet = wallet;
461
527
  this._crossChainCore = crossChainCore;
528
+ this._sponsorAccount = sponsorAccount;
529
+ this._claimedTransactionHashes = "";
462
530
  }
463
531
  chain() {
464
532
  return this._chain.displayName;
@@ -466,22 +534,27 @@ var Signer = class {
466
534
  address() {
467
535
  return this._address;
468
536
  }
537
+ claimedTransactionHashes() {
538
+ return this._claimedTransactionHashes;
539
+ }
469
540
  async signAndSend(txs) {
470
541
  const txHashes = [];
471
542
  for (const tx of txs) {
472
- const txId = await signAndSendTransaction4(
543
+ const txId = await signAndSendTransaction5(
473
544
  this._chain,
474
545
  tx,
475
546
  this._wallet,
476
547
  this._options,
477
- this._crossChainCore
548
+ this._crossChainCore,
549
+ this._sponsorAccount
478
550
  );
479
551
  txHashes.push(txId);
552
+ this._claimedTransactionHashes = txId;
480
553
  }
481
554
  return txHashes;
482
555
  }
483
556
  };
484
- var signAndSendTransaction4 = async (chain, request, wallet, options = {}, crossChainCore) => {
557
+ var signAndSendTransaction5 = async (chain, request, wallet, options = {}, crossChainCore, sponsorAccount) => {
485
558
  if (!wallet) {
486
559
  throw new Error("wallet is undefined");
487
560
  }
@@ -501,6 +574,13 @@ var signAndSendTransaction4 = async (chain, request, wallet, options = {}, cross
501
574
  options
502
575
  );
503
576
  return tx;
577
+ } else if (chain.context === "Aptos") {
578
+ const tx = await signAndSendTransaction4(
579
+ request,
580
+ wallet,
581
+ sponsorAccount
582
+ );
583
+ return tx;
504
584
  } else {
505
585
  throw new Error(`Unsupported chain: ${chain}`);
506
586
  }
@@ -516,26 +596,31 @@ var WormholeProvider = class {
516
596
  }
517
597
  async setWormholeContext(sourceChain) {
518
598
  const dappNetwork = this.crossChainCore._dappConfig?.aptosNetwork;
519
- if (dappNetwork === import_ts_sdk2.Network.DEVNET) {
599
+ if (dappNetwork === import_ts_sdk3.Network.DEVNET) {
520
600
  throw new Error("Devnet is not supported on Wormhole");
521
601
  }
522
602
  if (!sourceChain) {
523
603
  throw new Error("Origin chain not selected");
524
604
  }
525
- const isMainnet = dappNetwork === import_ts_sdk2.Network.MAINNET;
605
+ const isMainnet = dappNetwork === import_ts_sdk3.Network.MAINNET;
526
606
  const platforms = [import_aptos.default, import_solana.default, import_evm.default];
527
607
  const wh = await (0, import_sdk.wormhole)(isMainnet ? "Mainnet" : "Testnet", platforms);
528
608
  this._wormholeContext = wh;
529
609
  }
530
- async getRoute(sourceChain) {
610
+ async getRoute(sourceChain, destinationChain) {
531
611
  if (!this._wormholeContext) {
532
612
  throw new Error("Wormhole context not initialized");
533
613
  }
534
- const { sourceToken, destToken } = this.getTokenInfo(sourceChain);
614
+ const { sourceToken, destToken } = this.getTokenInfo(
615
+ sourceChain,
616
+ destinationChain
617
+ );
618
+ const destContext = this._wormholeContext.getPlatform((0, import_sdk.chainToPlatform)(destinationChain)).getChain(destinationChain);
535
619
  const sourceContext = this._wormholeContext.getPlatform((0, import_sdk.chainToPlatform)(sourceChain)).getChain(sourceChain);
536
620
  logger.log("sourceContext", sourceContext);
537
- const destContext = this._wormholeContext.getPlatform((0, import_sdk.chainToPlatform)("Aptos")).getChain("Aptos");
621
+ logger.log("sourceToken", sourceToken);
538
622
  logger.log("destContext", destContext);
623
+ logger.log("destToken", destToken);
539
624
  const request = await import_sdk.routes.RouteTransferRequest.create(
540
625
  this._wormholeContext,
541
626
  {
@@ -556,11 +641,17 @@ var WormholeProvider = class {
556
641
  return { route: cctpRoute, request };
557
642
  }
558
643
  async getQuote(input) {
559
- const { amount, sourceChain } = input;
644
+ const { amount, originChain, type } = input;
560
645
  if (!this._wormholeContext) {
561
- await this.setWormholeContext(sourceChain);
646
+ await this.setWormholeContext(originChain);
562
647
  }
563
- const { route, request } = await this.getRoute(sourceChain);
648
+ logger.log("type", type);
649
+ const sourceChain = type === "transfer" ? originChain : "Aptos";
650
+ const destinationChain = type === "transfer" ? "Aptos" : originChain;
651
+ const { route, request } = await this.getRoute(
652
+ sourceChain,
653
+ destinationChain
654
+ );
564
655
  const transferParams = {
565
656
  amount,
566
657
  options: { nativeGas: 0 }
@@ -655,7 +746,7 @@ var WormholeProvider = class {
655
746
  e
656
747
  );
657
748
  const delay = baseDelay * Math.pow(2, retries);
658
- await (0, import_ts_sdk2.sleep)(delay);
749
+ await (0, import_ts_sdk3.sleep)(delay);
659
750
  retries++;
660
751
  }
661
752
  }
@@ -666,14 +757,15 @@ var WormholeProvider = class {
666
757
  * @param args
667
758
  * @returns
668
759
  */
669
- async initiateCCTPTransfer(input) {
670
- if (this.crossChainCore._dappConfig?.aptosNetwork === import_ts_sdk2.Network.DEVNET) {
760
+ async transfer(input) {
761
+ if (this.crossChainCore._dappConfig?.aptosNetwork === import_ts_sdk3.Network.DEVNET) {
671
762
  throw new Error("Devnet is not supported on Wormhole");
672
763
  }
673
764
  if (input.amount) {
674
765
  await this.getQuote({
675
766
  amount: input.amount,
676
- sourceChain: input.sourceChain
767
+ originChain: input.sourceChain,
768
+ type: "transfer"
677
769
  });
678
770
  }
679
771
  let { originChainTxnId, receipt } = await this.submitCCTPTransfer(input);
@@ -684,6 +776,97 @@ var WormholeProvider = class {
684
776
  });
685
777
  return { originChainTxnId, destinationChainTxnId };
686
778
  }
779
+ async withdraw(input) {
780
+ const { sourceChain, wallet, destinationAddress, sponsorAccount } = input;
781
+ logger.log("sourceChain", sourceChain);
782
+ logger.log("wallet", wallet);
783
+ logger.log("destinationAddress", destinationAddress);
784
+ logger.log("sponsorAccount", sponsorAccount);
785
+ if (!this._wormholeContext) {
786
+ await this.setWormholeContext(sourceChain);
787
+ }
788
+ if (!this._wormholeContext) {
789
+ throw new Error("Wormhole context not initialized");
790
+ }
791
+ if (!this.wormholeRoute || !this.wormholeRequest || !this.wormholeQuote) {
792
+ throw new Error("Wormhole route, request, or quote not initialized");
793
+ }
794
+ const signer = new Signer(
795
+ this.getChainConfig("Aptos"),
796
+ (await input.wallet.features["aptos:account"].account()).address.toString(),
797
+ {},
798
+ input.wallet,
799
+ void 0,
800
+ sponsorAccount
801
+ );
802
+ logger.log("signer", signer);
803
+ logger.log("wormholeRequest", this.wormholeRequest);
804
+ logger.log("wormholeQuote", this.wormholeQuote);
805
+ logger.log(
806
+ "Wormhole.chainAddress",
807
+ import_sdk.Wormhole.chainAddress(sourceChain, input.destinationAddress.toString())
808
+ );
809
+ let receipt = await this.wormholeRoute.initiate(
810
+ this.wormholeRequest,
811
+ signer,
812
+ this.wormholeQuote,
813
+ import_sdk.Wormhole.chainAddress(sourceChain, input.destinationAddress.toString())
814
+ );
815
+ logger.log("receipt", receipt);
816
+ const originChainTxnId = "originTxs" in receipt ? receipt.originTxs[receipt.originTxs.length - 1].txid : void 0;
817
+ let retries = 0;
818
+ const maxRetries = 5;
819
+ const baseDelay = 1e3;
820
+ while (retries < maxRetries) {
821
+ try {
822
+ for await (receipt of this.wormholeRoute.track(receipt, 120 * 1e3)) {
823
+ if (receipt.state >= import_sdk.TransferState.SourceInitiated) {
824
+ logger.log("Receipt is on track ", receipt);
825
+ try {
826
+ const signer2 = new Signer(
827
+ this.getChainConfig(sourceChain),
828
+ destinationAddress.toString(),
829
+ {},
830
+ wallet
831
+ );
832
+ if (import_sdk.routes.isManual(this.wormholeRoute)) {
833
+ const circleAttestationReceipt = await this.wormholeRoute.complete(signer2, receipt);
834
+ logger.log("Claim receipt: ", circleAttestationReceipt);
835
+ const destinationChainTxnId = signer2.claimedTransactionHashes();
836
+ return {
837
+ originChainTxnId: originChainTxnId || "",
838
+ destinationChainTxnId
839
+ };
840
+ } else {
841
+ return {
842
+ originChainTxnId: originChainTxnId || "",
843
+ destinationChainTxnId: ""
844
+ };
845
+ }
846
+ } catch (e) {
847
+ console.error("Failed to claim", e);
848
+ return {
849
+ originChainTxnId: originChainTxnId || "",
850
+ destinationChainTxnId: ""
851
+ };
852
+ }
853
+ }
854
+ }
855
+ } catch (e) {
856
+ console.error(
857
+ `Error tracking transfer (attempt ${retries + 1} / ${maxRetries}):`,
858
+ e
859
+ );
860
+ const delay = baseDelay * Math.pow(2, retries);
861
+ await (0, import_ts_sdk3.sleep)(delay);
862
+ retries++;
863
+ }
864
+ }
865
+ return {
866
+ originChainTxnId: originChainTxnId || "",
867
+ destinationChainTxnId: ""
868
+ };
869
+ }
687
870
  getChainConfig(chain) {
688
871
  const chainConfig = this.crossChainCore.CHAINS[chain];
689
872
  if (!chainConfig) {
@@ -691,14 +874,14 @@ var WormholeProvider = class {
691
874
  }
692
875
  return chainConfig;
693
876
  }
694
- getTokenInfo(sourceChain) {
877
+ getTokenInfo(sourceChain, destinationChain) {
695
878
  const sourceToken = import_sdk.Wormhole.tokenId(
696
879
  this.crossChainCore.TOKENS[sourceChain].tokenId.chain,
697
880
  this.crossChainCore.TOKENS[sourceChain].tokenId.address
698
881
  );
699
882
  const destToken = import_sdk.Wormhole.tokenId(
700
- this.crossChainCore.APTOS_TOKEN.tokenId.chain,
701
- this.crossChainCore.APTOS_TOKEN.tokenId.address
883
+ this.crossChainCore.TOKENS[destinationChain].tokenId.chain,
884
+ this.crossChainCore.TOKENS[destinationChain].tokenId.address
702
885
  );
703
886
  return { sourceToken, destToken };
704
887
  }
@@ -745,6 +928,21 @@ var testnetChains = {
745
928
  symbol: "SOL",
746
929
  defaultRpc: "https://api.devnet.solana.com",
747
930
  wrappedGasToken: "So11111111111111111111111111111111111111112"
931
+ },
932
+ Aptos: {
933
+ key: "Aptos",
934
+ id: 22,
935
+ context: "Aptos" /* APTOS */,
936
+ finalityThreshold: 0,
937
+ displayName: "Aptos",
938
+ explorerUrl: "https://explorer.aptoslabs.com?network=testnet",
939
+ explorerName: "Aptos Explorer",
940
+ gasToken: "APT",
941
+ chainId: 0,
942
+ icon: "Aptos",
943
+ maxBlockSearch: 0,
944
+ symbol: "APT",
945
+ defaultRpc: "https://fullnode.testnet.aptos.dev"
748
946
  }
749
947
  // Sui: {
750
948
  // key: "Sui",
@@ -762,21 +960,6 @@ var testnetChains = {
762
960
  // sdkName: "Sui",
763
961
  // },
764
962
  };
765
- var AptosTestnetChain = {
766
- key: "Aptos",
767
- id: 22,
768
- context: "Aptos" /* APTOS */,
769
- finalityThreshold: 0,
770
- displayName: "Aptos",
771
- explorerUrl: "https://explorer.aptoslabs.com?network=testnet",
772
- explorerName: "Aptos Explorer",
773
- gasToken: "APT",
774
- chainId: 0,
775
- icon: "Aptos",
776
- maxBlockSearch: 0,
777
- symbol: "APT",
778
- sdkName: "Aptos"
779
- };
780
963
 
781
964
  // src/config/testnet/tokens.ts
782
965
  var testnetTokens = {
@@ -797,6 +980,15 @@ var testnetTokens = {
797
980
  },
798
981
  icon: "USDC",
799
982
  decimals: 6
983
+ },
984
+ Aptos: {
985
+ symbol: "USDC",
986
+ decimals: 6,
987
+ tokenId: {
988
+ chain: "Aptos",
989
+ address: "0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832"
990
+ },
991
+ icon: "USDC"
800
992
  }
801
993
  // Sui: {
802
994
  // symbol: "USDC",
@@ -809,15 +1001,6 @@ var testnetTokens = {
809
1001
  // decimals: 6,
810
1002
  // },
811
1003
  };
812
- var AptosTestnetUSDCToken = {
813
- symbol: "USDC",
814
- decimals: 6,
815
- tokenId: {
816
- chain: "Aptos",
817
- address: "0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832"
818
- },
819
- icon: "USDC"
820
- };
821
1004
 
822
1005
  // src/config/mainnet/chains.ts
823
1006
  var mainnetChains = {
@@ -850,6 +1033,21 @@ var mainnetChains = {
850
1033
  maxBlockSearch: 2e3,
851
1034
  symbol: "SOL",
852
1035
  defaultRpc: "https://solana-mainnet.rpc.extrnode.com"
1036
+ },
1037
+ Aptos: {
1038
+ key: "Aptos",
1039
+ id: 22,
1040
+ context: "Aptos" /* APTOS */,
1041
+ finalityThreshold: 0,
1042
+ displayName: "Aptos",
1043
+ explorerUrl: "https://explorer.aptoslabs.com/",
1044
+ explorerName: "Aptos Explorer",
1045
+ gasToken: "APT",
1046
+ chainId: 0,
1047
+ icon: "Aptos",
1048
+ maxBlockSearch: 0,
1049
+ symbol: "APT",
1050
+ defaultRpc: "https://fullnode.mainnet.aptos.dev"
853
1051
  }
854
1052
  // Sui: {
855
1053
  // key: "Sui",
@@ -867,20 +1065,6 @@ var mainnetChains = {
867
1065
  // symbol: "SUI",
868
1066
  // },
869
1067
  };
870
- var AptosMainnetChain = {
871
- key: "Aptos",
872
- id: 22,
873
- context: "Aptos",
874
- finalityThreshold: 0,
875
- displayName: "Aptos",
876
- explorerUrl: "https://explorer.aptoslabs.com/",
877
- explorerName: "Aptos Explorer",
878
- gasToken: "APT",
879
- chainId: 0,
880
- icon: "Aptos",
881
- maxBlockSearch: 0,
882
- symbol: "APT"
883
- };
884
1068
 
885
1069
  // src/config/mainnet/tokens.ts
886
1070
  var mainnetTokens = {
@@ -901,6 +1085,15 @@ var mainnetTokens = {
901
1085
  },
902
1086
  icon: "USDC",
903
1087
  decimals: 6
1088
+ },
1089
+ Aptos: {
1090
+ symbol: "USDC",
1091
+ decimals: 6,
1092
+ tokenId: {
1093
+ chain: "Aptos",
1094
+ address: "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b"
1095
+ },
1096
+ icon: "USDC"
904
1097
  }
905
1098
  // Sui: {
906
1099
  // symbol: "USDC",
@@ -913,23 +1106,14 @@ var mainnetTokens = {
913
1106
  // icon: "USDC",
914
1107
  // },
915
1108
  };
916
- var AptosMainnetUSDCToken = {
917
- symbol: "USDC",
918
- tokenId: {
919
- chain: "Aptos",
920
- address: "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b"
921
- },
922
- icon: "USDC",
923
- decimals: 6
924
- };
925
1109
 
926
1110
  // src/utils/getUsdcBalance.ts
927
- var import_ts_sdk3 = require("@aptos-labs/ts-sdk");
1111
+ var import_ts_sdk4 = require("@aptos-labs/ts-sdk");
928
1112
  var import_web33 = require("@solana/web3.js");
929
1113
  var import_ethers2 = require("ethers");
930
1114
  var getSolanaWalletUSDCBalance = async (walletAddress, aptosNetwork, rpc) => {
931
1115
  const address = new import_web33.PublicKey(walletAddress);
932
- const tokenAddress = aptosNetwork === import_ts_sdk3.Network.MAINNET ? mainnetTokens["Solana"].tokenId.address : testnetTokens["Solana"].tokenId.address;
1116
+ const tokenAddress = aptosNetwork === import_ts_sdk4.Network.MAINNET ? mainnetTokens["Solana"].tokenId.address : testnetTokens["Solana"].tokenId.address;
933
1117
  const connection = new import_web33.Connection(rpc);
934
1118
  const splToken = await connection.getTokenAccountsByOwner(address, {
935
1119
  mint: new import_web33.PublicKey(tokenAddress)
@@ -939,7 +1123,7 @@ var getSolanaWalletUSDCBalance = async (walletAddress, aptosNetwork, rpc) => {
939
1123
  return balance.value.uiAmountString ?? (Number(balance.value.amount) / 10 ** balance.value.decimals).toString();
940
1124
  };
941
1125
  var getEthereumWalletUSDCBalance = async (walletAddress, aptosNetwork, rpc) => {
942
- const token = aptosNetwork === import_ts_sdk3.Network.MAINNET ? mainnetTokens["Ethereum"] : testnetTokens["Sepolia"];
1126
+ const token = aptosNetwork === import_ts_sdk4.Network.MAINNET ? mainnetTokens["Ethereum"] : testnetTokens["Sepolia"];
943
1127
  const tokenAddress = token.tokenId.address;
944
1128
  const connection = new import_ethers2.JsonRpcProvider(rpc);
945
1129
  const abi = ["function balanceOf(address owner) view returns (uint256)"];
@@ -948,10 +1132,10 @@ var getEthereumWalletUSDCBalance = async (walletAddress, aptosNetwork, rpc) => {
948
1132
  return import_ethers2.ethers.formatUnits(balance, token.decimals).toString();
949
1133
  };
950
1134
  var getAptosWalletUSDCBalance = async (walletAddress, aptosNetwork) => {
951
- const token = aptosNetwork === import_ts_sdk3.Network.MAINNET ? AptosMainnetUSDCToken : AptosTestnetUSDCToken;
1135
+ const token = aptosNetwork === import_ts_sdk4.Network.MAINNET ? mainnetTokens["Aptos"] : testnetTokens["Aptos"];
952
1136
  const tokenAddress = token.tokenId.address;
953
- const aptosConfig = new import_ts_sdk3.AptosConfig({ network: aptosNetwork });
954
- const connection = new import_ts_sdk3.Aptos(aptosConfig);
1137
+ const aptosConfig = new import_ts_sdk4.AptosConfig({ network: aptosNetwork });
1138
+ const connection = new import_ts_sdk4.Aptos(aptosConfig);
955
1139
  const response = await connection.getCurrentFungibleAssetBalances({
956
1140
  options: {
957
1141
  where: {
@@ -960,29 +1144,29 @@ var getAptosWalletUSDCBalance = async (walletAddress, aptosNetwork) => {
960
1144
  }
961
1145
  }
962
1146
  });
1147
+ if (response.length === 0) {
1148
+ return "0";
1149
+ }
963
1150
  const balance = (Number(response[0].amount) / 10 ** token.decimals).toString();
964
1151
  return balance;
965
1152
  };
966
1153
 
967
1154
  // src/CrossChainCore.ts
968
- var import_ts_sdk5 = require("@aptos-labs/ts-sdk");
1155
+ var import_ts_sdk6 = require("@aptos-labs/ts-sdk");
969
1156
  var CrossChainCore = class {
970
1157
  constructor(args) {
971
1158
  this._dappConfig = {
972
- aptosNetwork: import_ts_sdk4.Network.TESTNET
1159
+ aptosNetwork: import_ts_sdk5.Network.TESTNET
973
1160
  };
974
1161
  this.CHAINS = testnetChains;
975
1162
  this.TOKENS = testnetTokens;
976
- this.APTOS_TOKEN = AptosTestnetUSDCToken;
977
1163
  this._dappConfig = args.dappConfig;
978
- if (args.dappConfig?.aptosNetwork === import_ts_sdk4.Network.MAINNET) {
1164
+ if (args.dappConfig?.aptosNetwork === import_ts_sdk5.Network.MAINNET) {
979
1165
  this.CHAINS = mainnetChains;
980
1166
  this.TOKENS = mainnetTokens;
981
- this.APTOS_TOKEN = AptosMainnetUSDCToken;
982
1167
  } else {
983
1168
  this.CHAINS = testnetChains;
984
1169
  this.TOKENS = testnetTokens;
985
- this.APTOS_TOKEN = AptosTestnetUSDCToken;
986
1170
  }
987
1171
  }
988
1172
  getProvider(providerType) {
@@ -1025,14 +1209,10 @@ var CrossChainCore = class {
1025
1209
  };
1026
1210
 
1027
1211
  // src/index.ts
1028
- var import_ts_sdk6 = require("@aptos-labs/ts-sdk");
1212
+ var import_ts_sdk7 = require("@aptos-labs/ts-sdk");
1029
1213
  // Annotate the CommonJS export names for ESM import in node:
1030
1214
  0 && (module.exports = {
1031
1215
  AptosLocalSigner,
1032
- AptosMainnetChain,
1033
- AptosMainnetUSDCToken,
1034
- AptosTestnetChain,
1035
- AptosTestnetUSDCToken,
1036
1216
  Context,
1037
1217
  CrossChainCore,
1038
1218
  Network,