@aptos-labs/cross-chain-core 4.25.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/CrossChainCore.d.ts +3 -3
- package/dist/CrossChainCore.d.ts.map +1 -1
- package/dist/config/mainnet/chains.d.ts +0 -14
- package/dist/config/mainnet/chains.d.ts.map +1 -1
- package/dist/config/mainnet/tokens.d.ts +0 -1
- package/dist/config/mainnet/tokens.d.ts.map +1 -1
- package/dist/config/testnet/chains.d.ts +0 -16
- package/dist/config/testnet/chains.d.ts.map +1 -1
- package/dist/config/testnet/tokens.d.ts +0 -1
- package/dist/config/testnet/tokens.d.ts.map +1 -1
- package/dist/index.js +272 -92
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +263 -73
- package/dist/index.mjs.map +1 -1
- package/dist/providers/wormhole/signers/AptosLocalSigner.d.ts.map +1 -1
- package/dist/providers/wormhole/signers/AptosSigner.d.ts +7 -0
- package/dist/providers/wormhole/signers/AptosSigner.d.ts.map +1 -0
- package/dist/providers/wormhole/signers/Signer.d.ts +7 -2
- package/dist/providers/wormhole/signers/Signer.d.ts.map +1 -1
- package/dist/providers/wormhole/types.d.ts +14 -3
- package/dist/providers/wormhole/types.d.ts.map +1 -1
- package/dist/providers/wormhole/wormhole.d.ts +7 -9
- package/dist/providers/wormhole/wormhole.d.ts.map +1 -1
- package/dist/utils/getUsdcBalance.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/CrossChainCore.ts +18 -19
- package/src/config/mainnet/chains.ts +15 -15
- package/src/config/mainnet/tokens.ts +10 -11
- package/src/config/testnet/chains.ts +15 -16
- package/src/config/testnet/tokens.ts +10 -11
- package/src/providers/wormhole/signers/AptosLocalSigner.ts +4 -3
- package/src/providers/wormhole/signers/AptosSigner.ts +139 -0
- package/src/providers/wormhole/signers/Signer.ts +26 -2
- package/src/providers/wormhole/types.ts +16 -3
- package/src/providers/wormhole/wormhole.ts +165 -29
- package/src/utils/getUsdcBalance.ts +9 -11
- 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: () =>
|
|
41
|
-
NetworkToChainId: () =>
|
|
42
|
-
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
|
|
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
|
|
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
|
|
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
|
|
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 ===
|
|
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 ===
|
|
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(
|
|
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
|
-
|
|
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,
|
|
644
|
+
const { amount, originChain, type } = input;
|
|
560
645
|
if (!this._wormholeContext) {
|
|
561
|
-
await this.setWormholeContext(
|
|
646
|
+
await this.setWormholeContext(originChain);
|
|
562
647
|
}
|
|
563
|
-
|
|
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,
|
|
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
|
|
670
|
-
if (this.crossChainCore._dappConfig?.aptosNetwork ===
|
|
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
|
-
|
|
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.
|
|
701
|
-
this.crossChainCore.
|
|
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
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
1135
|
+
const token = aptosNetwork === import_ts_sdk4.Network.MAINNET ? mainnetTokens["Aptos"] : testnetTokens["Aptos"];
|
|
952
1136
|
const tokenAddress = token.tokenId.address;
|
|
953
|
-
const aptosConfig = new
|
|
954
|
-
const connection = new
|
|
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
|
|
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:
|
|
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 ===
|
|
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
|
|
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,
|