@wormhole-foundation/sdk-connect 0.10.12-beta.0 → 0.11.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.
- package/dist/cjs/routes/portico/automatic.d.ts +26 -5
- package/dist/cjs/routes/portico/automatic.d.ts.map +1 -1
- package/dist/cjs/routes/portico/automatic.js +70 -92
- package/dist/cjs/routes/portico/automatic.js.map +1 -1
- package/dist/cjs/routes/request.d.ts.map +1 -1
- package/dist/cjs/routes/request.js +1 -3
- package/dist/cjs/routes/request.js.map +1 -1
- package/dist/cjs/wormhole.d.ts +2 -2
- package/dist/cjs/wormhole.js +2 -2
- package/dist/esm/routes/portico/automatic.d.ts +26 -5
- package/dist/esm/routes/portico/automatic.d.ts.map +1 -1
- package/dist/esm/routes/portico/automatic.js +70 -92
- package/dist/esm/routes/portico/automatic.js.map +1 -1
- package/dist/esm/routes/request.d.ts.map +1 -1
- package/dist/esm/routes/request.js +1 -3
- package/dist/esm/routes/request.js.map +1 -1
- package/dist/esm/wormhole.d.ts +2 -2
- package/dist/esm/wormhole.js +2 -2
- package/package.json +3 -3
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { StaticRouteMethods } from "../route.js";
|
|
2
2
|
import { AutomaticRoute } from "../route.js";
|
|
3
3
|
import type { Quote, QuoteResult, Receipt, TransferParams, ValidatedTransferParams, ValidationResult } from "../types.js";
|
|
4
|
-
import type { AttestationReceipt,
|
|
5
|
-
import { PorticoBridge, amount } from "./../../index.js";
|
|
4
|
+
import type { AttestationReceipt, Chain, ChainContext, Network, Signer, SourceInitiatedTransferReceipt, TokenId, TransactionId } from "./../../index.js";
|
|
5
|
+
import { PorticoBridge, TransferState, amount } from "./../../index.js";
|
|
6
6
|
import type { ChainAddress } from "@wormhole-foundation/sdk-definitions";
|
|
7
7
|
import type { RouteTransferRequest } from "../request.js";
|
|
8
8
|
export declare const SLIPPAGE_BPS = 15n;
|
|
9
|
-
export declare const MAX_SLIPPAGE_BPS = 100n;
|
|
10
9
|
export declare const BPS_PER_HUNDRED_PERCENT = 10000n;
|
|
11
10
|
export declare namespace PorticoRoute {
|
|
12
11
|
type Options = {};
|
|
@@ -33,6 +32,7 @@ export declare class AutomaticPorticoRoute<N extends Network> extends AutomaticR
|
|
|
33
32
|
static meta: {
|
|
34
33
|
name: string;
|
|
35
34
|
};
|
|
35
|
+
private static _supportedTokens;
|
|
36
36
|
static supportedNetworks(): Network[];
|
|
37
37
|
static supportedChains(network: Network): Chain[];
|
|
38
38
|
static supportedSourceTokens(fromChain: ChainContext<Network>): Promise<TokenId[]>;
|
|
@@ -43,9 +43,30 @@ export declare class AutomaticPorticoRoute<N extends Network> extends AutomaticR
|
|
|
43
43
|
validate(request: RouteTransferRequest<N>, params: TP): Promise<VR>;
|
|
44
44
|
quote(request: RouteTransferRequest<N>, params: VP): Promise<QR>;
|
|
45
45
|
initiate(request: RouteTransferRequest<N>, sender: Signer<N>, quote: Q, to: ChainAddress): Promise<SourceInitiatedTransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">>;
|
|
46
|
-
track(receipt: R, timeout?: number): AsyncGenerator<import("../../types.js").CreatedTransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").FailedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").InReviewTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | AttestedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").RefundedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").RedeemedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").DestinationQueuedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | CompletedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">, void, unknown>;
|
|
46
|
+
track(receipt: R, timeout?: number): AsyncGenerator<{
|
|
47
|
+
vaa: import("@wormhole-foundation/sdk-definitions").VAA<"TokenBridge:TransferWithPayload">;
|
|
48
|
+
parsed: {
|
|
49
|
+
readonly flagSet: {
|
|
50
|
+
readonly recipientChain: number;
|
|
51
|
+
readonly bridgeNonce: number;
|
|
52
|
+
readonly feeTierStart: number;
|
|
53
|
+
readonly feeTierFinish: number;
|
|
54
|
+
readonly padding: Uint8Array;
|
|
55
|
+
readonly flags: import("@wormhole-foundation/sdk-base").Bitset<readonly ["shouldWrapNative", "shouldUnwrapNative"]>;
|
|
56
|
+
};
|
|
57
|
+
readonly finalTokenAddress: import("@wormhole-foundation/sdk-definitions").UniversalAddress;
|
|
58
|
+
readonly recipientAddress: import("@wormhole-foundation/sdk-definitions").UniversalAddress;
|
|
59
|
+
readonly cannonAssetAmount: bigint;
|
|
60
|
+
readonly minAmountFinish: bigint;
|
|
61
|
+
readonly relayerFee: bigint;
|
|
62
|
+
};
|
|
63
|
+
state: TransferState.SourceInitiated;
|
|
64
|
+
originTxs: TransactionId<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">[];
|
|
65
|
+
from: "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance";
|
|
66
|
+
to: "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance";
|
|
67
|
+
}, void, unknown>;
|
|
47
68
|
complete(signer: Signer<N>, receipt: R): Promise<TransactionId[]>;
|
|
48
|
-
private
|
|
69
|
+
private quoteUniswap;
|
|
49
70
|
}
|
|
50
71
|
export {};
|
|
51
72
|
//# sourceMappingURL=automatic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,OAAO,EACP,MAAM,EACN,8BAA8B,EAC9B,OAAO,EACP,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EAEb,aAAa,EAEb,MAAM,EASP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,yBAAiB,YAAY,CAAC;IAC5B,KAAY,OAAO,GAAG,EAAE,CAAC;IAEzB,KAAY,gBAAgB,GAAG;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QAEtB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,yBAAyB,EAAE,OAAO,CAAC;QAEnC,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IAEF,UAAiB,eAAgB,SAAQ,uBAAuB,CAAC,OAAO,CAAC;QACvE,gBAAgB,EAAE,gBAAgB,CAAC;KACpC;CACF;AAED,KAAK,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;AAC/B,KAAK,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AACtD,KAAK,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC;AAEvC,KAAK,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC/B,KAAK,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;AAE7B,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnD,qBAAa,qBAAqB,CAAC,CAAC,SAAS,OAAO,CAClD,SAAQ,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CACnC,YAAW,kBAAkB,CAAC,OAAO,qBAAqB,CAAC;IAE3D,MAAM,CAAC,4BAA4B,UAAS;IAE5C,MAAM,CAAC,IAAI;;MAET;IAEF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAsB;IAErD,MAAM,CAAC,iBAAiB,IAAI,OAAO,EAAE;IAIrC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE;WAOpC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAgB3E,0BAA0B,CAAC,CAAC,SAAS,OAAO,EACvD,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IA+CrB,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAIxE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC,iBAAiB,IAAI,EAAE;IAIjB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IA2CnE,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAsDhE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY;IA2BvF,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;IAWnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAUzD,YAAY;CA2C3B"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AutomaticPorticoRoute = exports.BPS_PER_HUNDRED_PERCENT = exports.
|
|
3
|
+
exports.AutomaticPorticoRoute = exports.BPS_PER_HUNDRED_PERCENT = exports.SLIPPAGE_BPS = void 0;
|
|
4
4
|
const sdk_base_1 = require("@wormhole-foundation/sdk-base");
|
|
5
5
|
const route_js_1 = require("../route.js");
|
|
6
6
|
const index_js_1 = require("./../../index.js");
|
|
7
7
|
exports.SLIPPAGE_BPS = 15n; // 0.15%
|
|
8
|
-
exports.MAX_SLIPPAGE_BPS = 100n; // 1%
|
|
9
8
|
exports.BPS_PER_HUNDRED_PERCENT = 10000n;
|
|
10
9
|
class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
11
10
|
static NATIVE_GAS_DROPOFF_SUPPORTED = false;
|
|
12
11
|
static meta = {
|
|
13
12
|
name: "AutomaticPortico",
|
|
14
13
|
};
|
|
14
|
+
static _supportedTokens = ["WETH", "WSTETH"];
|
|
15
15
|
static supportedNetworks() {
|
|
16
16
|
return ["Mainnet"];
|
|
17
17
|
}
|
|
@@ -22,43 +22,52 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
22
22
|
return [];
|
|
23
23
|
}
|
|
24
24
|
static async supportedSourceTokens(fromChain) {
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
.
|
|
29
|
-
|
|
30
|
-
.
|
|
25
|
+
const { chain } = fromChain;
|
|
26
|
+
const supported = this._supportedTokens
|
|
27
|
+
.map((symbol) => {
|
|
28
|
+
return sdk_base_1.filters.bySymbol(fromChain.config.tokenMap, symbol) ?? [];
|
|
29
|
+
})
|
|
30
|
+
.flat()
|
|
31
|
+
.filter((td) => {
|
|
32
|
+
const localOrEth = !td.original || td.original === "Ethereum";
|
|
33
|
+
const isAvax = chain === "Avalanche" && (0, index_js_1.isNative)(td.address);
|
|
34
|
+
return localOrEth && !isAvax;
|
|
35
|
+
});
|
|
36
|
+
return supported.map((td) => index_js_1.Wormhole.tokenId(chain, td.address));
|
|
31
37
|
}
|
|
32
38
|
static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
|
|
33
39
|
const [, srcTokenAddress] = (0, index_js_1.resolveWrappedToken)(fromChain.network, fromChain.chain, sourceToken);
|
|
34
40
|
const tokenAddress = (0, index_js_1.canonicalAddress)(srcTokenAddress);
|
|
41
|
+
// The token that will be used to bridge
|
|
35
42
|
const pb = await fromChain.getPorticoBridge();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
const transferrableToken = pb.getTransferrableToken(tokenAddress);
|
|
44
|
+
// The tokens that _will_ be received on redemption
|
|
45
|
+
const redeemToken = await index_js_1.TokenTransfer.lookupDestinationToken(fromChain, toChain, transferrableToken);
|
|
46
|
+
// Grab the symbol for the token that gets redeemed
|
|
47
|
+
const redeemTokenDetails = sdk_base_1.filters.byAddress(toChain.config.tokenMap, (0, index_js_1.canonicalAddress)(redeemToken));
|
|
48
|
+
// Find the local/native version of the same token by symbol
|
|
49
|
+
const locallyRedeemable = (sdk_base_1.filters.bySymbol(toChain.config.tokenMap, redeemTokenDetails.symbol) ?? [])
|
|
50
|
+
.filter((td) => {
|
|
51
|
+
return !td.original;
|
|
52
|
+
})
|
|
53
|
+
.map((td) => {
|
|
54
|
+
switch (td.symbol) {
|
|
55
|
+
case "ETH":
|
|
56
|
+
case "WETH":
|
|
57
|
+
return index_js_1.Wormhole.tokenId(toChain.chain, td.address);
|
|
58
|
+
case "WSTETH":
|
|
59
|
+
return index_js_1.Wormhole.tokenId(toChain.chain, td.address);
|
|
60
|
+
default:
|
|
61
|
+
throw new Error("Unknown symbol: " + redeemTokenDetails.symbol);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return locallyRedeemable;
|
|
57
65
|
}
|
|
58
66
|
static isProtocolSupported(chain) {
|
|
59
67
|
return chain.supportsPorticoBridge();
|
|
60
68
|
}
|
|
61
69
|
async isAvailable() {
|
|
70
|
+
// TODO:
|
|
62
71
|
return true;
|
|
63
72
|
}
|
|
64
73
|
getDefaultOptions() {
|
|
@@ -66,9 +75,9 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
66
75
|
}
|
|
67
76
|
async validate(request, params) {
|
|
68
77
|
try {
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
throw new Error("
|
|
78
|
+
if ((0, index_js_1.chainToPlatform)(request.fromChain.chain) !== "Evm" ||
|
|
79
|
+
(0, index_js_1.chainToPlatform)(request.toChain.chain) !== "Evm") {
|
|
80
|
+
throw new Error("Only EVM chains are supported");
|
|
72
81
|
}
|
|
73
82
|
const { fromChain, toChain, source, destination } = request;
|
|
74
83
|
const { network } = fromChain;
|
|
@@ -77,8 +86,8 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
77
86
|
const [, destinationToken] = (0, index_js_1.resolveWrappedToken)(network, toChain.chain, destination.id);
|
|
78
87
|
const fromPb = await fromChain.getPorticoBridge();
|
|
79
88
|
const toPb = await toChain.getPorticoBridge();
|
|
80
|
-
const canonicalSourceToken =
|
|
81
|
-
const canonicalDestinationToken =
|
|
89
|
+
const canonicalSourceToken = fromPb.getTransferrableToken((0, index_js_1.canonicalAddress)(sourceToken));
|
|
90
|
+
const canonicalDestinationToken = toPb.getTransferrableToken((0, index_js_1.canonicalAddress)(destinationToken));
|
|
82
91
|
const validatedParams = {
|
|
83
92
|
amount: params.amount,
|
|
84
93
|
options: params.options ?? this.getDefaultOptions(),
|
|
@@ -98,25 +107,15 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
98
107
|
}
|
|
99
108
|
async quote(request, params) {
|
|
100
109
|
try {
|
|
101
|
-
const swapAmounts = await this.
|
|
102
|
-
// destination token may have a different number of decimals than the source token
|
|
103
|
-
// so we need to scale the amounts to the token with the most decimals
|
|
104
|
-
// before comparing them
|
|
105
|
-
const maxDecimals = Math.max(request.source.decimals, request.destination.decimals);
|
|
106
|
-
const scaledAmount = index_js_1.amount.units(index_js_1.amount.scale(params.normalizedParams.amount, maxDecimals));
|
|
107
|
-
const scaledMinAmountFinish = index_js_1.amount.units(index_js_1.amount.scale(index_js_1.amount.fromBaseUnits(swapAmounts.minAmountFinish, request.destination.decimals), maxDecimals));
|
|
108
|
-
// if the slippage is more than 100bps, this likely means that the pools are unbalanced
|
|
109
|
-
if (scaledMinAmountFinish <
|
|
110
|
-
scaledAmount - (scaledAmount * exports.MAX_SLIPPAGE_BPS) / exports.BPS_PER_HUNDRED_PERCENT)
|
|
111
|
-
throw new Error("Slippage too high");
|
|
110
|
+
const swapAmounts = await this.quoteUniswap(request, params);
|
|
112
111
|
const pb = await request.toChain.getPorticoBridge();
|
|
113
112
|
const fee = await pb.quoteRelay(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address);
|
|
114
113
|
const details = {
|
|
115
114
|
swapAmounts,
|
|
116
115
|
relayerFee: fee,
|
|
117
116
|
};
|
|
118
|
-
|
|
119
|
-
if (destinationAmount <
|
|
117
|
+
let destinationAmount = details.swapAmounts.minAmountFinish - fee;
|
|
118
|
+
if (Number(destinationAmount) < 0) {
|
|
120
119
|
return {
|
|
121
120
|
success: false,
|
|
122
121
|
error: new Error(`Amount too low for slippage and fee, would result in negative destination amount (${destinationAmount})`),
|
|
@@ -150,10 +149,7 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
150
149
|
const sourceToken = request.source.id.address;
|
|
151
150
|
const destToken = request.destination.id;
|
|
152
151
|
const fromPorticoBridge = await request.fromChain.getPorticoBridge();
|
|
153
|
-
const
|
|
154
|
-
const toPorticoBridge = await request.toChain.getPorticoBridge();
|
|
155
|
-
const destPorticoAddress = toPorticoBridge.getPorticoAddress(tokenGroup);
|
|
156
|
-
const xfer = fromPorticoBridge.transfer(index_js_1.Wormhole.parseAddress(sender.chain(), sender.address()), to, sourceToken, index_js_1.amount.units(params.normalizedParams.amount), destToken, destPorticoAddress, details);
|
|
152
|
+
const xfer = fromPorticoBridge.transfer(index_js_1.Wormhole.parseAddress(sender.chain(), sender.address()), to, sourceToken, index_js_1.amount.units(params.normalizedParams.amount), destToken, details);
|
|
157
153
|
const txids = await (0, index_js_1.signSendWait)(request.fromChain, xfer, sender);
|
|
158
154
|
const receipt = {
|
|
159
155
|
originTxs: txids,
|
|
@@ -164,40 +160,14 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
164
160
|
return receipt;
|
|
165
161
|
}
|
|
166
162
|
async *track(receipt, timeout) {
|
|
167
|
-
if ((0, index_js_1.isSourceInitiated)(receipt)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
sequence: vaa.sequence,
|
|
176
|
-
};
|
|
177
|
-
receipt = {
|
|
178
|
-
...receipt,
|
|
179
|
-
state: index_js_1.TransferState.Attested,
|
|
180
|
-
attestation: {
|
|
181
|
-
id: msgId,
|
|
182
|
-
attestation: vaa,
|
|
183
|
-
},
|
|
184
|
-
};
|
|
185
|
-
yield receipt;
|
|
186
|
-
}
|
|
187
|
-
if ((0, index_js_1.isAttested)(receipt)) {
|
|
188
|
-
const toChain = this.wh.getChain(receipt.to);
|
|
189
|
-
const toPorticoBridge = await toChain.getPorticoBridge();
|
|
190
|
-
const isCompleted = await toPorticoBridge.isTransferCompleted(receipt.attestation.attestation);
|
|
191
|
-
if (isCompleted) {
|
|
192
|
-
receipt = {
|
|
193
|
-
...receipt,
|
|
194
|
-
state: index_js_1.TransferState.DestinationFinalized,
|
|
195
|
-
};
|
|
196
|
-
yield receipt;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// TODO: handle swap failed case (highway token received)
|
|
200
|
-
yield receipt;
|
|
163
|
+
if (!(0, index_js_1.isSourceInitiated)(receipt))
|
|
164
|
+
throw new Error("Source must be initiated");
|
|
165
|
+
const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
|
|
166
|
+
const vaa = await this.wh.getVaa(txid, "TokenBridge:TransferWithPayload", timeout);
|
|
167
|
+
if (!vaa)
|
|
168
|
+
throw new Error("No VAA found for transaction: " + txid);
|
|
169
|
+
const parsed = index_js_1.PorticoBridge.deserializePayload(vaa.payload.payload);
|
|
170
|
+
yield { ...receipt, vaa, parsed };
|
|
201
171
|
}
|
|
202
172
|
async complete(signer, receipt) {
|
|
203
173
|
if (!(0, index_js_1.isAttested)(receipt))
|
|
@@ -208,24 +178,32 @@ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
|
|
|
208
178
|
const xfer = toPorticoBridge.redeem(sender.address, receipt.attestation.attestation);
|
|
209
179
|
return await (0, index_js_1.signSendWait)(toChain, xfer, signer);
|
|
210
180
|
}
|
|
211
|
-
async
|
|
212
|
-
const
|
|
213
|
-
const
|
|
214
|
-
const tokenGroup = fromPb.getTokenGroup((0, index_js_1.canonicalAddress)(params.normalizedParams.sourceToken));
|
|
215
|
-
const startQuote = await fromPb.quoteSwap(params.normalizedParams.sourceToken.address, params.normalizedParams.canonicalSourceToken.address, tokenGroup, xferAmount);
|
|
181
|
+
async quoteUniswap(request, params) {
|
|
182
|
+
const fromPorticoBridge = await request.fromChain.getPorticoBridge();
|
|
183
|
+
const startQuote = await fromPorticoBridge.quoteSwap(params.normalizedParams.sourceToken.address, params.normalizedParams.canonicalSourceToken.address, index_js_1.amount.units(params.normalizedParams.amount));
|
|
216
184
|
const startSlippage = (startQuote * exports.SLIPPAGE_BPS) / exports.BPS_PER_HUNDRED_PERCENT;
|
|
217
185
|
if (startSlippage >= startQuote)
|
|
218
186
|
throw new Error("Start slippage too high");
|
|
219
|
-
const
|
|
187
|
+
const toPorticoBridge = await request.toChain.getPorticoBridge();
|
|
220
188
|
const minAmountStart = startQuote - startSlippage;
|
|
221
|
-
const finishQuote = await
|
|
189
|
+
const finishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, minAmountStart);
|
|
222
190
|
const finishSlippage = (finishQuote * exports.SLIPPAGE_BPS) / exports.BPS_PER_HUNDRED_PERCENT;
|
|
223
191
|
if (finishSlippage >= finishQuote)
|
|
224
192
|
throw new Error("Finish slippage too high");
|
|
225
193
|
const minAmountFinish = finishQuote - finishSlippage;
|
|
194
|
+
const amountFinishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, startQuote);
|
|
195
|
+
// the expected receive amount is the amount out from the swap
|
|
196
|
+
// minus 5bps slippage
|
|
197
|
+
const amountFinishSlippage = (amountFinishQuote * 5n) / exports.BPS_PER_HUNDRED_PERCENT;
|
|
198
|
+
if (amountFinishSlippage >= amountFinishQuote)
|
|
199
|
+
throw new Error("Amount finish slippage too high");
|
|
200
|
+
const amountFinish = amountFinishQuote - amountFinishSlippage;
|
|
201
|
+
if (amountFinish <= minAmountFinish)
|
|
202
|
+
throw new Error("Amount finish too low");
|
|
226
203
|
return {
|
|
227
204
|
minAmountStart: minAmountStart,
|
|
228
205
|
minAmountFinish: minAmountFinish,
|
|
206
|
+
amountFinish: amountFinish,
|
|
229
207
|
};
|
|
230
208
|
}
|
|
231
209
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":";;;AAAA,4DAAkE;AAElE,0CAA6C;
|
|
1
|
+
{"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAE1B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO;IAYP,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIzC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACzF,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,EAAE,EACV,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAE1B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO;IAYP,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIzC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACzF,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,EAAE,EACV,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;WAuCZ,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,KAAK,EACvE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KAC1B,EACD,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;CAYhC"}
|
|
@@ -34,11 +34,9 @@ class RouteTransferRequest {
|
|
|
34
34
|
params,
|
|
35
35
|
};
|
|
36
36
|
if (quote.relayFee) {
|
|
37
|
-
const relayFeeChain = quote.relayFee.token.chain === this.fromChain.chain ? this.fromChain : this.toChain;
|
|
38
|
-
const relayFeeDecimals = await relayFeeChain.getDecimals(quote.relayFee.token.address);
|
|
39
37
|
dq.relayFee = {
|
|
40
38
|
token: quote.relayFee.token,
|
|
41
|
-
amount: sdk_base_1.amount.fromBaseUnits(quote.relayFee.amount,
|
|
39
|
+
amount: sdk_base_1.amount.fromBaseUnits(quote.relayFee.amount, this.source.decimals),
|
|
42
40
|
};
|
|
43
41
|
}
|
|
44
42
|
if (quote.destinationNativeGas) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":";;;AACA,4DAAuD;AAKvD,yCAA6C;AAG7C,MAAa,oBAAoB;IAC/B,MAAM,CAAe;IACrB,WAAW,CAAe;IAE1B,SAAS,CAAkB;IAC3B,OAAO,CAAkB;IAEzB,YACE,SAA0B,EAC1B,OAAwB,EACxB,MAAoB,EACpB,WAAyB;QAEzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,iBAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,mBAAmB,CAAC,GAAW;QAC7B,OAAO,iBAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAoB,EACpB,MAAU,EACV,OAAa;QAEb,IAAI,EAAE,GAAkB;YACtB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE;gBACX,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;gBAC9B,MAAM,EAAE,iBAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC7E;YACD,gBAAgB,EAAE;gBAChB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK;gBACnC,MAAM,EAAE,iBAAM,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;aACvF;YACD,MAAM;SACP,CAAC;QAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/wormhole.d.ts
CHANGED
|
@@ -191,7 +191,7 @@ export declare class Wormhole<N extends Network> {
|
|
|
191
191
|
*/
|
|
192
192
|
static canonicalAddress(chainAddress: ChainAddress | TokenId): string;
|
|
193
193
|
/**
|
|
194
|
-
* Parse an address from its
|
|
194
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
195
195
|
*
|
|
196
196
|
* @param chain The chain the address is for
|
|
197
197
|
* @param address The native address in canonical string format
|
|
@@ -199,7 +199,7 @@ export declare class Wormhole<N extends Network> {
|
|
|
199
199
|
*/
|
|
200
200
|
static chainAddress<C extends Chain>(chain: C, address: string): ChainAddress<C>;
|
|
201
201
|
/**
|
|
202
|
-
* Parse an address from its
|
|
202
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
203
203
|
*
|
|
204
204
|
* @param chain The chain the address is for
|
|
205
205
|
* @param address The native address in canonical string format or the string "native"
|
package/dist/cjs/wormhole.js
CHANGED
|
@@ -305,7 +305,7 @@ class Wormhole {
|
|
|
305
305
|
return (0, sdk_definitions_1.canonicalAddress)(chainAddress);
|
|
306
306
|
}
|
|
307
307
|
/**
|
|
308
|
-
* Parse an address from its
|
|
308
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
309
309
|
*
|
|
310
310
|
* @param chain The chain the address is for
|
|
311
311
|
* @param address The native address in canonical string format
|
|
@@ -315,7 +315,7 @@ class Wormhole {
|
|
|
315
315
|
return { chain, address: Wormhole.parseAddress(chain, address) };
|
|
316
316
|
}
|
|
317
317
|
/**
|
|
318
|
-
* Parse an address from its
|
|
318
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
319
319
|
*
|
|
320
320
|
* @param chain The chain the address is for
|
|
321
321
|
* @param address The native address in canonical string format or the string "native"
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { StaticRouteMethods } from "../route.js";
|
|
2
2
|
import { AutomaticRoute } from "../route.js";
|
|
3
3
|
import type { Quote, QuoteResult, Receipt, TransferParams, ValidatedTransferParams, ValidationResult } from "../types.js";
|
|
4
|
-
import type { AttestationReceipt,
|
|
5
|
-
import { PorticoBridge, amount } from "./../../index.js";
|
|
4
|
+
import type { AttestationReceipt, Chain, ChainContext, Network, Signer, SourceInitiatedTransferReceipt, TokenId, TransactionId } from "./../../index.js";
|
|
5
|
+
import { PorticoBridge, TransferState, amount } from "./../../index.js";
|
|
6
6
|
import type { ChainAddress } from "@wormhole-foundation/sdk-definitions";
|
|
7
7
|
import type { RouteTransferRequest } from "../request.js";
|
|
8
8
|
export declare const SLIPPAGE_BPS = 15n;
|
|
9
|
-
export declare const MAX_SLIPPAGE_BPS = 100n;
|
|
10
9
|
export declare const BPS_PER_HUNDRED_PERCENT = 10000n;
|
|
11
10
|
export declare namespace PorticoRoute {
|
|
12
11
|
type Options = {};
|
|
@@ -33,6 +32,7 @@ export declare class AutomaticPorticoRoute<N extends Network> extends AutomaticR
|
|
|
33
32
|
static meta: {
|
|
34
33
|
name: string;
|
|
35
34
|
};
|
|
35
|
+
private static _supportedTokens;
|
|
36
36
|
static supportedNetworks(): Network[];
|
|
37
37
|
static supportedChains(network: Network): Chain[];
|
|
38
38
|
static supportedSourceTokens(fromChain: ChainContext<Network>): Promise<TokenId[]>;
|
|
@@ -43,9 +43,30 @@ export declare class AutomaticPorticoRoute<N extends Network> extends AutomaticR
|
|
|
43
43
|
validate(request: RouteTransferRequest<N>, params: TP): Promise<VR>;
|
|
44
44
|
quote(request: RouteTransferRequest<N>, params: VP): Promise<QR>;
|
|
45
45
|
initiate(request: RouteTransferRequest<N>, sender: Signer<N>, quote: Q, to: ChainAddress): Promise<SourceInitiatedTransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">>;
|
|
46
|
-
track(receipt: R, timeout?: number): AsyncGenerator<import("../../types.js").CreatedTransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").FailedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").InReviewTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | AttestedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").RefundedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").RedeemedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | import("../../types.js").DestinationQueuedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance"> | CompletedTransferReceipt<AttestationReceipt<"PorticoBridge">, "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">, void, unknown>;
|
|
46
|
+
track(receipt: R, timeout?: number): AsyncGenerator<{
|
|
47
|
+
vaa: import("@wormhole-foundation/sdk-definitions").VAA<"TokenBridge:TransferWithPayload">;
|
|
48
|
+
parsed: {
|
|
49
|
+
readonly flagSet: {
|
|
50
|
+
readonly recipientChain: number;
|
|
51
|
+
readonly bridgeNonce: number;
|
|
52
|
+
readonly feeTierStart: number;
|
|
53
|
+
readonly feeTierFinish: number;
|
|
54
|
+
readonly padding: Uint8Array;
|
|
55
|
+
readonly flags: import("@wormhole-foundation/sdk-base").Bitset<readonly ["shouldWrapNative", "shouldUnwrapNative"]>;
|
|
56
|
+
};
|
|
57
|
+
readonly finalTokenAddress: import("@wormhole-foundation/sdk-definitions").UniversalAddress;
|
|
58
|
+
readonly recipientAddress: import("@wormhole-foundation/sdk-definitions").UniversalAddress;
|
|
59
|
+
readonly cannonAssetAmount: bigint;
|
|
60
|
+
readonly minAmountFinish: bigint;
|
|
61
|
+
readonly relayerFee: bigint;
|
|
62
|
+
};
|
|
63
|
+
state: TransferState.SourceInitiated;
|
|
64
|
+
originTxs: TransactionId<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">[];
|
|
65
|
+
from: "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance";
|
|
66
|
+
to: "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance";
|
|
67
|
+
}, void, unknown>;
|
|
47
68
|
complete(signer: Signer<N>, receipt: R): Promise<TransactionId[]>;
|
|
48
|
-
private
|
|
69
|
+
private quoteUniswap;
|
|
49
70
|
}
|
|
50
71
|
export {};
|
|
51
72
|
//# sourceMappingURL=automatic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { filters, finality } from "@wormhole-foundation/sdk-base";
|
|
2
2
|
import { AutomaticRoute } from "../route.js";
|
|
3
|
-
import { TokenTransfer, TransferState, Wormhole, amount, canonicalAddress, contracts, isAttested,
|
|
3
|
+
import { PorticoBridge, TokenTransfer, TransferState, Wormhole, amount, canonicalAddress, chainToPlatform, contracts, isAttested, isNative, isSourceInitiated, resolveWrappedToken, signSendWait, } from "./../../index.js";
|
|
4
4
|
export const SLIPPAGE_BPS = 15n; // 0.15%
|
|
5
|
-
export const MAX_SLIPPAGE_BPS = 100n; // 1%
|
|
6
5
|
export const BPS_PER_HUNDRED_PERCENT = 10000n;
|
|
7
6
|
export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
8
7
|
static NATIVE_GAS_DROPOFF_SUPPORTED = false;
|
|
9
8
|
static meta = {
|
|
10
9
|
name: "AutomaticPortico",
|
|
11
10
|
};
|
|
11
|
+
static _supportedTokens = ["WETH", "WSTETH"];
|
|
12
12
|
static supportedNetworks() {
|
|
13
13
|
return ["Mainnet"];
|
|
14
14
|
}
|
|
@@ -19,43 +19,52 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
19
19
|
return [];
|
|
20
20
|
}
|
|
21
21
|
static async supportedSourceTokens(fromChain) {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
.
|
|
26
|
-
|
|
27
|
-
.
|
|
22
|
+
const { chain } = fromChain;
|
|
23
|
+
const supported = this._supportedTokens
|
|
24
|
+
.map((symbol) => {
|
|
25
|
+
return filters.bySymbol(fromChain.config.tokenMap, symbol) ?? [];
|
|
26
|
+
})
|
|
27
|
+
.flat()
|
|
28
|
+
.filter((td) => {
|
|
29
|
+
const localOrEth = !td.original || td.original === "Ethereum";
|
|
30
|
+
const isAvax = chain === "Avalanche" && isNative(td.address);
|
|
31
|
+
return localOrEth && !isAvax;
|
|
32
|
+
});
|
|
33
|
+
return supported.map((td) => Wormhole.tokenId(chain, td.address));
|
|
28
34
|
}
|
|
29
35
|
static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
|
|
30
36
|
const [, srcTokenAddress] = resolveWrappedToken(fromChain.network, fromChain.chain, sourceToken);
|
|
31
37
|
const tokenAddress = canonicalAddress(srcTokenAddress);
|
|
38
|
+
// The token that will be used to bridge
|
|
32
39
|
const pb = await fromChain.getPorticoBridge();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
const transferrableToken = pb.getTransferrableToken(tokenAddress);
|
|
41
|
+
// The tokens that _will_ be received on redemption
|
|
42
|
+
const redeemToken = await TokenTransfer.lookupDestinationToken(fromChain, toChain, transferrableToken);
|
|
43
|
+
// Grab the symbol for the token that gets redeemed
|
|
44
|
+
const redeemTokenDetails = filters.byAddress(toChain.config.tokenMap, canonicalAddress(redeemToken));
|
|
45
|
+
// Find the local/native version of the same token by symbol
|
|
46
|
+
const locallyRedeemable = (filters.bySymbol(toChain.config.tokenMap, redeemTokenDetails.symbol) ?? [])
|
|
47
|
+
.filter((td) => {
|
|
48
|
+
return !td.original;
|
|
49
|
+
})
|
|
50
|
+
.map((td) => {
|
|
51
|
+
switch (td.symbol) {
|
|
52
|
+
case "ETH":
|
|
53
|
+
case "WETH":
|
|
54
|
+
return Wormhole.tokenId(toChain.chain, td.address);
|
|
55
|
+
case "WSTETH":
|
|
56
|
+
return Wormhole.tokenId(toChain.chain, td.address);
|
|
57
|
+
default:
|
|
58
|
+
throw new Error("Unknown symbol: " + redeemTokenDetails.symbol);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return locallyRedeemable;
|
|
54
62
|
}
|
|
55
63
|
static isProtocolSupported(chain) {
|
|
56
64
|
return chain.supportsPorticoBridge();
|
|
57
65
|
}
|
|
58
66
|
async isAvailable() {
|
|
67
|
+
// TODO:
|
|
59
68
|
return true;
|
|
60
69
|
}
|
|
61
70
|
getDefaultOptions() {
|
|
@@ -63,9 +72,9 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
63
72
|
}
|
|
64
73
|
async validate(request, params) {
|
|
65
74
|
try {
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
throw new Error("
|
|
75
|
+
if (chainToPlatform(request.fromChain.chain) !== "Evm" ||
|
|
76
|
+
chainToPlatform(request.toChain.chain) !== "Evm") {
|
|
77
|
+
throw new Error("Only EVM chains are supported");
|
|
69
78
|
}
|
|
70
79
|
const { fromChain, toChain, source, destination } = request;
|
|
71
80
|
const { network } = fromChain;
|
|
@@ -74,8 +83,8 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
74
83
|
const [, destinationToken] = resolveWrappedToken(network, toChain.chain, destination.id);
|
|
75
84
|
const fromPb = await fromChain.getPorticoBridge();
|
|
76
85
|
const toPb = await toChain.getPorticoBridge();
|
|
77
|
-
const canonicalSourceToken =
|
|
78
|
-
const canonicalDestinationToken =
|
|
86
|
+
const canonicalSourceToken = fromPb.getTransferrableToken(canonicalAddress(sourceToken));
|
|
87
|
+
const canonicalDestinationToken = toPb.getTransferrableToken(canonicalAddress(destinationToken));
|
|
79
88
|
const validatedParams = {
|
|
80
89
|
amount: params.amount,
|
|
81
90
|
options: params.options ?? this.getDefaultOptions(),
|
|
@@ -95,25 +104,15 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
95
104
|
}
|
|
96
105
|
async quote(request, params) {
|
|
97
106
|
try {
|
|
98
|
-
const swapAmounts = await this.
|
|
99
|
-
// destination token may have a different number of decimals than the source token
|
|
100
|
-
// so we need to scale the amounts to the token with the most decimals
|
|
101
|
-
// before comparing them
|
|
102
|
-
const maxDecimals = Math.max(request.source.decimals, request.destination.decimals);
|
|
103
|
-
const scaledAmount = amount.units(amount.scale(params.normalizedParams.amount, maxDecimals));
|
|
104
|
-
const scaledMinAmountFinish = amount.units(amount.scale(amount.fromBaseUnits(swapAmounts.minAmountFinish, request.destination.decimals), maxDecimals));
|
|
105
|
-
// if the slippage is more than 100bps, this likely means that the pools are unbalanced
|
|
106
|
-
if (scaledMinAmountFinish <
|
|
107
|
-
scaledAmount - (scaledAmount * MAX_SLIPPAGE_BPS) / BPS_PER_HUNDRED_PERCENT)
|
|
108
|
-
throw new Error("Slippage too high");
|
|
107
|
+
const swapAmounts = await this.quoteUniswap(request, params);
|
|
109
108
|
const pb = await request.toChain.getPorticoBridge();
|
|
110
109
|
const fee = await pb.quoteRelay(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address);
|
|
111
110
|
const details = {
|
|
112
111
|
swapAmounts,
|
|
113
112
|
relayerFee: fee,
|
|
114
113
|
};
|
|
115
|
-
|
|
116
|
-
if (destinationAmount <
|
|
114
|
+
let destinationAmount = details.swapAmounts.minAmountFinish - fee;
|
|
115
|
+
if (Number(destinationAmount) < 0) {
|
|
117
116
|
return {
|
|
118
117
|
success: false,
|
|
119
118
|
error: new Error(`Amount too low for slippage and fee, would result in negative destination amount (${destinationAmount})`),
|
|
@@ -147,10 +146,7 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
147
146
|
const sourceToken = request.source.id.address;
|
|
148
147
|
const destToken = request.destination.id;
|
|
149
148
|
const fromPorticoBridge = await request.fromChain.getPorticoBridge();
|
|
150
|
-
const
|
|
151
|
-
const toPorticoBridge = await request.toChain.getPorticoBridge();
|
|
152
|
-
const destPorticoAddress = toPorticoBridge.getPorticoAddress(tokenGroup);
|
|
153
|
-
const xfer = fromPorticoBridge.transfer(Wormhole.parseAddress(sender.chain(), sender.address()), to, sourceToken, amount.units(params.normalizedParams.amount), destToken, destPorticoAddress, details);
|
|
149
|
+
const xfer = fromPorticoBridge.transfer(Wormhole.parseAddress(sender.chain(), sender.address()), to, sourceToken, amount.units(params.normalizedParams.amount), destToken, details);
|
|
154
150
|
const txids = await signSendWait(request.fromChain, xfer, sender);
|
|
155
151
|
const receipt = {
|
|
156
152
|
originTxs: txids,
|
|
@@ -161,40 +157,14 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
161
157
|
return receipt;
|
|
162
158
|
}
|
|
163
159
|
async *track(receipt, timeout) {
|
|
164
|
-
if (isSourceInitiated(receipt)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
sequence: vaa.sequence,
|
|
173
|
-
};
|
|
174
|
-
receipt = {
|
|
175
|
-
...receipt,
|
|
176
|
-
state: TransferState.Attested,
|
|
177
|
-
attestation: {
|
|
178
|
-
id: msgId,
|
|
179
|
-
attestation: vaa,
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
yield receipt;
|
|
183
|
-
}
|
|
184
|
-
if (isAttested(receipt)) {
|
|
185
|
-
const toChain = this.wh.getChain(receipt.to);
|
|
186
|
-
const toPorticoBridge = await toChain.getPorticoBridge();
|
|
187
|
-
const isCompleted = await toPorticoBridge.isTransferCompleted(receipt.attestation.attestation);
|
|
188
|
-
if (isCompleted) {
|
|
189
|
-
receipt = {
|
|
190
|
-
...receipt,
|
|
191
|
-
state: TransferState.DestinationFinalized,
|
|
192
|
-
};
|
|
193
|
-
yield receipt;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
// TODO: handle swap failed case (highway token received)
|
|
197
|
-
yield receipt;
|
|
160
|
+
if (!isSourceInitiated(receipt))
|
|
161
|
+
throw new Error("Source must be initiated");
|
|
162
|
+
const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
|
|
163
|
+
const vaa = await this.wh.getVaa(txid, "TokenBridge:TransferWithPayload", timeout);
|
|
164
|
+
if (!vaa)
|
|
165
|
+
throw new Error("No VAA found for transaction: " + txid);
|
|
166
|
+
const parsed = PorticoBridge.deserializePayload(vaa.payload.payload);
|
|
167
|
+
yield { ...receipt, vaa, parsed };
|
|
198
168
|
}
|
|
199
169
|
async complete(signer, receipt) {
|
|
200
170
|
if (!isAttested(receipt))
|
|
@@ -205,24 +175,32 @@ export class AutomaticPorticoRoute extends AutomaticRoute {
|
|
|
205
175
|
const xfer = toPorticoBridge.redeem(sender.address, receipt.attestation.attestation);
|
|
206
176
|
return await signSendWait(toChain, xfer, signer);
|
|
207
177
|
}
|
|
208
|
-
async
|
|
209
|
-
const
|
|
210
|
-
const
|
|
211
|
-
const tokenGroup = fromPb.getTokenGroup(canonicalAddress(params.normalizedParams.sourceToken));
|
|
212
|
-
const startQuote = await fromPb.quoteSwap(params.normalizedParams.sourceToken.address, params.normalizedParams.canonicalSourceToken.address, tokenGroup, xferAmount);
|
|
178
|
+
async quoteUniswap(request, params) {
|
|
179
|
+
const fromPorticoBridge = await request.fromChain.getPorticoBridge();
|
|
180
|
+
const startQuote = await fromPorticoBridge.quoteSwap(params.normalizedParams.sourceToken.address, params.normalizedParams.canonicalSourceToken.address, amount.units(params.normalizedParams.amount));
|
|
213
181
|
const startSlippage = (startQuote * SLIPPAGE_BPS) / BPS_PER_HUNDRED_PERCENT;
|
|
214
182
|
if (startSlippage >= startQuote)
|
|
215
183
|
throw new Error("Start slippage too high");
|
|
216
|
-
const
|
|
184
|
+
const toPorticoBridge = await request.toChain.getPorticoBridge();
|
|
217
185
|
const minAmountStart = startQuote - startSlippage;
|
|
218
|
-
const finishQuote = await
|
|
186
|
+
const finishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, minAmountStart);
|
|
219
187
|
const finishSlippage = (finishQuote * SLIPPAGE_BPS) / BPS_PER_HUNDRED_PERCENT;
|
|
220
188
|
if (finishSlippage >= finishQuote)
|
|
221
189
|
throw new Error("Finish slippage too high");
|
|
222
190
|
const minAmountFinish = finishQuote - finishSlippage;
|
|
191
|
+
const amountFinishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, startQuote);
|
|
192
|
+
// the expected receive amount is the amount out from the swap
|
|
193
|
+
// minus 5bps slippage
|
|
194
|
+
const amountFinishSlippage = (amountFinishQuote * 5n) / BPS_PER_HUNDRED_PERCENT;
|
|
195
|
+
if (amountFinishSlippage >= amountFinishQuote)
|
|
196
|
+
throw new Error("Amount finish slippage too high");
|
|
197
|
+
const amountFinish = amountFinishQuote - amountFinishSlippage;
|
|
198
|
+
if (amountFinish <= minAmountFinish)
|
|
199
|
+
throw new Error("Amount finish too low");
|
|
223
200
|
return {
|
|
224
201
|
minAmountStart: minAmountStart,
|
|
225
202
|
minAmountFinish: minAmountFinish,
|
|
203
|
+
amountFinish: amountFinish,
|
|
226
204
|
};
|
|
227
205
|
}
|
|
228
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAE1B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO;IAYP,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIzC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACzF,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,EAAE,EACV,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAE1B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO;IAYP,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIzC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACzF,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,EAAE,EACV,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;WAuCZ,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,KAAK,EACvE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KAC1B,EACD,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;CAYhC"}
|
|
@@ -31,11 +31,9 @@ export class RouteTransferRequest {
|
|
|
31
31
|
params,
|
|
32
32
|
};
|
|
33
33
|
if (quote.relayFee) {
|
|
34
|
-
const relayFeeChain = quote.relayFee.token.chain === this.fromChain.chain ? this.fromChain : this.toChain;
|
|
35
|
-
const relayFeeDecimals = await relayFeeChain.getDecimals(quote.relayFee.token.address);
|
|
36
34
|
dq.relayFee = {
|
|
37
35
|
token: quote.relayFee.token,
|
|
38
|
-
amount: amount.fromBaseUnits(quote.relayFee.amount,
|
|
36
|
+
amount: amount.fromBaseUnits(quote.relayFee.amount, this.source.decimals),
|
|
39
37
|
};
|
|
40
38
|
}
|
|
41
39
|
if (quote.destinationNativeGas) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAe;IACrB,WAAW,CAAe;IAE1B,SAAS,CAAkB;IAC3B,OAAO,CAAkB;IAEzB,YACE,SAA0B,EAC1B,OAAwB,EACxB,MAAoB,EACpB,WAAyB;QAEzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,mBAAmB,CAAC,GAAW;QAC7B,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAoB,EACpB,MAAU,EACV,OAAa;QAEb,IAAI,EAAE,GAAkB;YACtB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE;gBACX,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;gBAC9B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC7E;YACD,gBAAgB,EAAE;gBAChB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK;gBACnC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;aACvF;YACD,MAAM;SACP,CAAC;QAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/wormhole.d.ts
CHANGED
|
@@ -191,7 +191,7 @@ export declare class Wormhole<N extends Network> {
|
|
|
191
191
|
*/
|
|
192
192
|
static canonicalAddress(chainAddress: ChainAddress | TokenId): string;
|
|
193
193
|
/**
|
|
194
|
-
* Parse an address from its
|
|
194
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
195
195
|
*
|
|
196
196
|
* @param chain The chain the address is for
|
|
197
197
|
* @param address The native address in canonical string format
|
|
@@ -199,7 +199,7 @@ export declare class Wormhole<N extends Network> {
|
|
|
199
199
|
*/
|
|
200
200
|
static chainAddress<C extends Chain>(chain: C, address: string): ChainAddress<C>;
|
|
201
201
|
/**
|
|
202
|
-
* Parse an address from its
|
|
202
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
203
203
|
*
|
|
204
204
|
* @param chain The chain the address is for
|
|
205
205
|
* @param address The native address in canonical string format or the string "native"
|
package/dist/esm/wormhole.js
CHANGED
|
@@ -302,7 +302,7 @@ export class Wormhole {
|
|
|
302
302
|
return canonicalAddress(chainAddress);
|
|
303
303
|
}
|
|
304
304
|
/**
|
|
305
|
-
* Parse an address from its
|
|
305
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
306
306
|
*
|
|
307
307
|
* @param chain The chain the address is for
|
|
308
308
|
* @param address The native address in canonical string format
|
|
@@ -312,7 +312,7 @@ export class Wormhole {
|
|
|
312
312
|
return { chain, address: Wormhole.parseAddress(chain, address) };
|
|
313
313
|
}
|
|
314
314
|
/**
|
|
315
|
-
* Parse an address from its
|
|
315
|
+
* Parse an address from its canonincal string format to a NativeAddress
|
|
316
316
|
*
|
|
317
317
|
* @param chain The chain the address is for
|
|
318
318
|
* @param address The native address in canonical string format or the string "native"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wormhole-foundation/sdk-connect",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/wormhole-foundation/connect-sdk.git"
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
100
|
"axios": "^1.4.0",
|
|
101
|
-
"@wormhole-foundation/sdk-base": "0.
|
|
102
|
-
"@wormhole-foundation/sdk-definitions": "0.
|
|
101
|
+
"@wormhole-foundation/sdk-base": "0.11.0",
|
|
102
|
+
"@wormhole-foundation/sdk-definitions": "0.11.0"
|
|
103
103
|
},
|
|
104
104
|
"type": "module"
|
|
105
105
|
}
|