@wormhole-foundation/sdk-evm-portico 0.5.0-beta.9 → 0.5.1-alpha.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/api.d.ts +3 -2
- package/dist/cjs/api.d.ts.map +1 -1
- package/dist/cjs/api.js +5 -5
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/bridge.d.ts +6 -3
- package/dist/cjs/bridge.d.ts.map +1 -1
- package/dist/cjs/bridge.js +10 -10
- package/dist/cjs/bridge.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +1 -0
- package/dist/esm/api.d.ts +3 -2
- package/dist/esm/api.d.ts.map +1 -1
- package/dist/esm/api.js +2 -2
- package/dist/esm/api.js.map +1 -1
- package/dist/esm/bridge.d.ts +6 -3
- package/dist/esm/bridge.d.ts.map +1 -1
- package/dist/esm/bridge.js +3 -3
- package/dist/esm/bridge.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/package.json +26 -13
- package/dist/cjs/porticoApi.d.ts +0 -42
- package/dist/cjs/porticoApi.d.ts.map +0 -1
- package/dist/cjs/porticoApi.js +0 -121
- package/dist/cjs/porticoApi.js.map +0 -1
- package/dist/cjs/porticoBridge.d.ts +0 -30
- package/dist/cjs/porticoBridge.d.ts.map +0 -1
- package/dist/cjs/porticoBridge.js +0 -124
- package/dist/cjs/porticoBridge.js.map +0 -1
- package/dist/cjs/types.d.ts +0 -1
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -2
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -4
- package/dist/cjs/utils.d.ts.map +0 -1
- package/dist/cjs/utils.js +0 -26
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/porticoApi.d.ts +0 -42
- package/dist/esm/porticoApi.d.ts.map +0 -1
- package/dist/esm/porticoApi.js +0 -114
- package/dist/esm/porticoApi.js.map +0 -1
- package/dist/esm/porticoBridge.d.ts +0 -30
- package/dist/esm/porticoBridge.d.ts.map +0 -1
- package/dist/esm/porticoBridge.js +0 -120
- package/dist/esm/porticoBridge.js.map +0 -1
- package/dist/esm/types.d.ts +0 -1
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -4
- package/dist/esm/utils.d.ts.map +0 -1
- package/dist/esm/utils.js +0 -21
- package/dist/esm/utils.js.map +0 -1
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
package/dist/cjs/porticoApi.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PorticoApi = exports.OKU_TRADE_BASE_URL = exports.RELAYER_FEE_API_URL = void 0;
|
|
7
|
-
const connect_sdk_1 = require("@wormhole-foundation/connect-sdk");
|
|
8
|
-
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const abis_1 = require("./abis");
|
|
10
|
-
const utils_1 = require("./utils");
|
|
11
|
-
exports.RELAYER_FEE_API_URL = 'https://gfx.relayers.xlabs.xyz/api/v1/swap/quote';
|
|
12
|
-
exports.OKU_TRADE_BASE_URL = 'https://oku.trade/app';
|
|
13
|
-
const CREATE_ORDER_API_URL = 'https://thermae.fly.dev/api/order/create';
|
|
14
|
-
class PorticoApi {
|
|
15
|
-
// Post the order to the portico API
|
|
16
|
-
static async createOrder(request) {
|
|
17
|
-
try {
|
|
18
|
-
const response = await axios_1.default.post(CREATE_ORDER_API_URL, request);
|
|
19
|
-
// Validate the response, not strictly necessary but if some details are wrong we want to know
|
|
20
|
-
this.validateCreateOrderResponse(response.data, request);
|
|
21
|
-
return response.data;
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
25
|
-
const message = `${e.response?.statusText}: ${e.response?.data.message}`;
|
|
26
|
-
throw new Error(`Could not create order: ${message},`);
|
|
27
|
-
}
|
|
28
|
-
throw e;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Validates that the response from the order creation API matches the request
|
|
33
|
-
* throws an error if there is a mismatch
|
|
34
|
-
*/
|
|
35
|
-
static validateCreateOrderResponse = (response, request) => {
|
|
36
|
-
if (!(0, utils_1.isEqualCaseInsensitive)(request.porticoAddress || '', response.transactionTarget)) {
|
|
37
|
-
throw new Error('portico address mismatch');
|
|
38
|
-
}
|
|
39
|
-
const decoded = abis_1.porticoAbi.decodeFunctionData('start', response.transactionData);
|
|
40
|
-
if (decoded.length !== 1 || decoded[0].length !== 10) {
|
|
41
|
-
throw new Error('decoded length mismatch');
|
|
42
|
-
}
|
|
43
|
-
const flagSetBuffer = Buffer.from(decoded[0][0].slice(2), 'hex');
|
|
44
|
-
if (flagSetBuffer.length !== 32) {
|
|
45
|
-
throw new Error('flag set length mismatch');
|
|
46
|
-
}
|
|
47
|
-
const { recipientChain, feeTierStart, feeTierFinish, shouldWrapNative, shouldUnwrapNative,
|
|
48
|
-
//@ts-ignore
|
|
49
|
-
} = parseFlagSet(flagSetBuffer);
|
|
50
|
-
if (recipientChain !== request.destinationChainId) {
|
|
51
|
-
throw new Error('recipient chain mismatch');
|
|
52
|
-
}
|
|
53
|
-
if (feeTierStart !== request.feeTierStart) {
|
|
54
|
-
throw new Error('fee tier start mismatch');
|
|
55
|
-
}
|
|
56
|
-
if (feeTierFinish !== request.feeTierEnd) {
|
|
57
|
-
throw new Error('fee tier end mismatch');
|
|
58
|
-
}
|
|
59
|
-
if (shouldWrapNative !== request.shouldWrapNative) {
|
|
60
|
-
throw new Error('should wrap native mismatch');
|
|
61
|
-
}
|
|
62
|
-
if (shouldUnwrapNative !== request.shouldUnwrapNative) {
|
|
63
|
-
throw new Error('should unwrap native mismatch');
|
|
64
|
-
}
|
|
65
|
-
const startTokenAddress = decoded[0][1];
|
|
66
|
-
if (!(0, utils_1.isEqualCaseInsensitive)(startTokenAddress, request.startingToken)) {
|
|
67
|
-
throw new Error('start token address mismatch');
|
|
68
|
-
}
|
|
69
|
-
// const startTokenId = Wormhole.chainAddress(toChain(request.startingChainId), startTokenAddress);
|
|
70
|
-
// const canonicalTokenAddress: string = decoded[0][2];
|
|
71
|
-
// if (!isEqualCaseInsensitive(canonicalTokenAddress, getOriginalAddress("Mainnet", startTokenId))) {
|
|
72
|
-
// throw new Error("canonical token address mismatch");
|
|
73
|
-
// }
|
|
74
|
-
const finalTokenAddress = decoded[0][3];
|
|
75
|
-
if (!(0, utils_1.isEqualCaseInsensitive)(finalTokenAddress, request.destinationToken)) {
|
|
76
|
-
throw new Error('final token address mismatch');
|
|
77
|
-
}
|
|
78
|
-
const recipientAddress = decoded[0][4];
|
|
79
|
-
if (!(0, utils_1.isEqualCaseInsensitive)(recipientAddress, request.destinationAddress)) {
|
|
80
|
-
throw new Error('recipient address mismatch');
|
|
81
|
-
}
|
|
82
|
-
const destinationPorticoAddress = decoded[0][5];
|
|
83
|
-
if (!(0, utils_1.isEqualCaseInsensitive)(destinationPorticoAddress, request.destinationPorticoAddress || '')) {
|
|
84
|
-
throw new Error('destination portico address mismatch');
|
|
85
|
-
}
|
|
86
|
-
const amountSpecified = decoded[0][6];
|
|
87
|
-
if (amountSpecified.toString() !== request.startingTokenAmount) {
|
|
88
|
-
throw new Error('amount mismatch');
|
|
89
|
-
}
|
|
90
|
-
const minAmountStart = decoded[0][7];
|
|
91
|
-
if (minAmountStart.toString() !== request.minAmountStart) {
|
|
92
|
-
throw new Error('min amount start mismatch');
|
|
93
|
-
}
|
|
94
|
-
const minAmountFinish = decoded[0][8];
|
|
95
|
-
if (minAmountFinish.toString() !== request.minAmountEnd) {
|
|
96
|
-
throw new Error('min amount finish mismatch');
|
|
97
|
-
}
|
|
98
|
-
const relayerFee = decoded[0][9];
|
|
99
|
-
if (relayerFee.toString() !== request.relayerFee) {
|
|
100
|
-
throw new Error('relayer fee mismatch');
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
static async quoteRelayer(from, to) {
|
|
104
|
-
const targetChain = (0, connect_sdk_1.toChainId)(to.chain);
|
|
105
|
-
const sourceToken = connect_sdk_1.encoding.hex.encode(from.address.toUniversalAddress().toUint8Array(), false);
|
|
106
|
-
const targetToken = connect_sdk_1.encoding.hex.encode(to.address.toUniversalAddress().toUint8Array(), false);
|
|
107
|
-
const request = { targetChain, sourceToken, targetToken };
|
|
108
|
-
try {
|
|
109
|
-
const response = await axios_1.default.post(exports.RELAYER_FEE_API_URL, request);
|
|
110
|
-
return BigInt(response.data.fee);
|
|
111
|
-
}
|
|
112
|
-
catch (e) {
|
|
113
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
114
|
-
throw new Error(`Error getting relayer fee: ${e.response?.statusText}`);
|
|
115
|
-
}
|
|
116
|
-
throw e;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.PorticoApi = PorticoApi;
|
|
121
|
-
//# sourceMappingURL=porticoApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoApi.js","sourceRoot":"","sources":["../../src/porticoApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { AccountAddress, ChainAddress, ChainsConfig, Contracts, Network, Platform, Signer, TokenAddress, TokenId, VAA } from '@wormhole-foundation/connect-sdk';
|
|
2
|
-
import { EvmChains, EvmUnsignedTransaction } from '@wormhole-foundation/connect-sdk-evm';
|
|
3
|
-
import { Provider, ethers } from 'ethers';
|
|
4
|
-
import { EvmWormholeCore } from '@wormhole-foundation/connect-sdk-evm-core';
|
|
5
|
-
import '@wormhole-foundation/connect-sdk-evm-tokenbridge';
|
|
6
|
-
export declare class EvmPorticoBridge<N extends Network, C extends EvmChains = EvmChains> {
|
|
7
|
-
readonly network: N;
|
|
8
|
-
readonly chain: C;
|
|
9
|
-
readonly provider: Provider;
|
|
10
|
-
readonly contracts: Contracts;
|
|
11
|
-
readonly core: EvmWormholeCore<N, C>;
|
|
12
|
-
chainId: bigint;
|
|
13
|
-
porticoAddress: string;
|
|
14
|
-
uniswapAddress: string;
|
|
15
|
-
porticoContract: ethers.Contract;
|
|
16
|
-
uniswapContract: ethers.Contract;
|
|
17
|
-
constructor(network: N, chain: C, provider: Provider, contracts: Contracts, core: EvmWormholeCore<N, C>);
|
|
18
|
-
static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, Platform>): Promise<EvmPorticoBridge<N, EvmChains>>;
|
|
19
|
-
transfer(sender: AccountAddress<C>, receiver: ChainAddress, token: TokenAddress<C>, amount: bigint, destToken: TokenId | 'native', swapAmounts: {
|
|
20
|
-
minAmountStart: bigint;
|
|
21
|
-
minAmountFinish: bigint;
|
|
22
|
-
amountFinish: bigint;
|
|
23
|
-
}, relayerFee: bigint): AsyncGenerator<EvmUnsignedTransaction<N, "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky">, void, unknown>;
|
|
24
|
-
redeem(vaa: VAA, signer: Signer<N>): AsyncGenerator<EvmUnsignedTransaction<N, "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky">, void, unknown>;
|
|
25
|
-
quoteSwap(input: TokenAddress<C>, output: TokenAddress<C>, amount: bigint): Promise<bigint>;
|
|
26
|
-
quoteRelay(token: TokenAddress<C>, destination: TokenId): Promise<bigint>;
|
|
27
|
-
private approve;
|
|
28
|
-
private createUnsignedTransaction;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=porticoBridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoBridge.d.ts","sourceRoot":"","sources":["../../src/porticoBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,OAAO,EACP,GAAG,EAKJ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EAET,sBAAsB,EAGvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAK9D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,kDAAkD,CAAC;AAG1D,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,SAAS,GAAG,SAAS;IAU7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAZtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAEvB,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAGtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;WAwBzB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAkBnC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GAAG,QAAQ,EAC7B,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,EACD,UAAU,EAAE,MAAM;IAyEb,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAWnC,SAAS,CACb,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAyBZ,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO;YAK9C,OAAO;IAuBtB,OAAO,CAAC,yBAAyB;CAYlC"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EvmPorticoBridge = void 0;
|
|
4
|
-
const connect_sdk_1 = require("@wormhole-foundation/connect-sdk");
|
|
5
|
-
const connect_sdk_evm_1 = require("@wormhole-foundation/connect-sdk-evm");
|
|
6
|
-
const ethers_1 = require("ethers");
|
|
7
|
-
const abis_1 = require("./abis");
|
|
8
|
-
const consts_1 = require("./consts");
|
|
9
|
-
const utils_1 = require("./utils");
|
|
10
|
-
const connect_sdk_evm_core_1 = require("@wormhole-foundation/connect-sdk-evm-core");
|
|
11
|
-
require("@wormhole-foundation/connect-sdk-evm-tokenbridge");
|
|
12
|
-
const porticoApi_1 = require("./porticoApi");
|
|
13
|
-
class EvmPorticoBridge {
|
|
14
|
-
network;
|
|
15
|
-
chain;
|
|
16
|
-
provider;
|
|
17
|
-
contracts;
|
|
18
|
-
core;
|
|
19
|
-
chainId;
|
|
20
|
-
porticoAddress;
|
|
21
|
-
uniswapAddress;
|
|
22
|
-
porticoContract;
|
|
23
|
-
uniswapContract;
|
|
24
|
-
constructor(network, chain, provider, contracts, core) {
|
|
25
|
-
this.network = network;
|
|
26
|
-
this.chain = chain;
|
|
27
|
-
this.provider = provider;
|
|
28
|
-
this.contracts = contracts;
|
|
29
|
-
this.core = core;
|
|
30
|
-
const { portico, uniswapQuoterV2 } = (0, consts_1.getContracts)(chain);
|
|
31
|
-
this.porticoAddress = portico;
|
|
32
|
-
this.uniswapAddress = uniswapQuoterV2;
|
|
33
|
-
this.chainId = connect_sdk_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
|
|
34
|
-
this.porticoContract = new ethers_1.ethers.Contract(this.porticoAddress, abis_1.porticoAbi.fragments, this.provider);
|
|
35
|
-
this.uniswapContract = new ethers_1.ethers.Contract(this.uniswapAddress, abis_1.uniswapQuoterV2Abi.fragments, this.provider);
|
|
36
|
-
}
|
|
37
|
-
static async fromRpc(provider, config) {
|
|
38
|
-
const [network, chain] = await connect_sdk_evm_1.EvmPlatform.chainFromRpc(provider);
|
|
39
|
-
const core = await connect_sdk_evm_core_1.EvmWormholeCore.fromRpc(provider, config);
|
|
40
|
-
const conf = config[chain];
|
|
41
|
-
if (conf.network !== network)
|
|
42
|
-
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
43
|
-
return new EvmPorticoBridge(network, chain, provider, conf.contracts, core);
|
|
44
|
-
}
|
|
45
|
-
async *transfer(sender, receiver, token, amount, destToken, swapAmounts, relayerFee) {
|
|
46
|
-
const { minAmountStart, minAmountFinish } = swapAmounts;
|
|
47
|
-
if (minAmountStart === 0n)
|
|
48
|
-
throw new Error('Invalid min swap amount');
|
|
49
|
-
if (minAmountFinish === 0n)
|
|
50
|
-
throw new Error('Invalid min swap amount');
|
|
51
|
-
const senderAddress = new connect_sdk_evm_1.EvmAddress(sender).toString();
|
|
52
|
-
const receiverAddress = (0, connect_sdk_1.canonicalAddress)(receiver);
|
|
53
|
-
const [isStartTokenNative, startToken] = (0, connect_sdk_1.resolveWrappedToken)(this.network, this.chain, token);
|
|
54
|
-
const [isFinalTokenNative, finalToken] = (0, connect_sdk_1.resolveWrappedToken)(this.network, receiver.chain, destToken);
|
|
55
|
-
const startTokenAddress = (0, connect_sdk_1.canonicalAddress)(startToken);
|
|
56
|
-
const finalTokenAddress = (0, connect_sdk_1.canonicalAddress)(finalToken);
|
|
57
|
-
const destinationPorticoAddress = (0, consts_1.getContracts)(receiver.chain).portico;
|
|
58
|
-
const receiverChainId = connect_sdk_1.nativeChainIds.networkChainToNativeChainId.get(this.network, receiver.chain);
|
|
59
|
-
// Create the order
|
|
60
|
-
const createOrderResult = await porticoApi_1.PorticoApi.createOrder({
|
|
61
|
-
startingChainId: Number(this.chainId),
|
|
62
|
-
startingToken: startTokenAddress,
|
|
63
|
-
startingTokenAmount: amount.toString(),
|
|
64
|
-
destinationToken: finalTokenAddress,
|
|
65
|
-
destinationAddress: receiverAddress,
|
|
66
|
-
destinationChainId: Number(receiverChainId),
|
|
67
|
-
feeTierStart: consts_1.FEE_TIER,
|
|
68
|
-
feeTierEnd: consts_1.FEE_TIER,
|
|
69
|
-
minAmountStart: minAmountStart.toString(),
|
|
70
|
-
minAmountEnd: minAmountFinish.toString(),
|
|
71
|
-
bridgeNonce: new Date().valueOf(),
|
|
72
|
-
shouldWrapNative: isStartTokenNative,
|
|
73
|
-
shouldUnwrapNative: isFinalTokenNative,
|
|
74
|
-
porticoAddress: this.porticoAddress,
|
|
75
|
-
relayerFee: relayerFee.toString(),
|
|
76
|
-
destinationPorticoAddress,
|
|
77
|
-
});
|
|
78
|
-
// Approve the token if necessary
|
|
79
|
-
if (!isStartTokenNative)
|
|
80
|
-
yield* this.approve(startTokenAddress, senderAddress, amount, this.porticoAddress);
|
|
81
|
-
const messageFee = await this.core.getMessageFee();
|
|
82
|
-
const tx = {
|
|
83
|
-
to: this.porticoAddress,
|
|
84
|
-
data: createOrderResult.transactionData,
|
|
85
|
-
value: messageFee + (isStartTokenNative ? amount : 0n),
|
|
86
|
-
};
|
|
87
|
-
yield this.createUnsignedTransaction((0, connect_sdk_evm_1.addFrom)(tx, senderAddress), 'PorticoBridge.Transfer');
|
|
88
|
-
}
|
|
89
|
-
async *redeem(vaa, signer) {
|
|
90
|
-
const txReq = await this.porticoContract
|
|
91
|
-
.getFunction('receiveMessageAndSwap')
|
|
92
|
-
.populateTransaction((0, connect_sdk_1.serialize)(vaa));
|
|
93
|
-
yield this.createUnsignedTransaction((0, connect_sdk_evm_1.addFrom)(txReq, signer.address()), 'PorticoBridge.Redeem');
|
|
94
|
-
}
|
|
95
|
-
async quoteSwap(input, output, amount) {
|
|
96
|
-
const [, inputTokenId] = (0, connect_sdk_1.resolveWrappedToken)(this.network, this.chain, input);
|
|
97
|
-
const [, outputTokenId] = (0, connect_sdk_1.resolveWrappedToken)(this.network, this.chain, output);
|
|
98
|
-
const inputAddress = (0, connect_sdk_1.canonicalAddress)(inputTokenId);
|
|
99
|
-
const outputAddress = (0, connect_sdk_1.canonicalAddress)(outputTokenId);
|
|
100
|
-
if ((0, utils_1.isEqualCaseInsensitive)(inputAddress, outputAddress))
|
|
101
|
-
return amount;
|
|
102
|
-
const result = await this.uniswapContract
|
|
103
|
-
.getFunction('quoteExactInputSingle')
|
|
104
|
-
.staticCall([inputAddress, outputAddress, amount, consts_1.FEE_TIER, 0]);
|
|
105
|
-
return result[0];
|
|
106
|
-
}
|
|
107
|
-
async quoteRelay(token, destination) {
|
|
108
|
-
const [, startToken] = (0, connect_sdk_1.resolveWrappedToken)(this.network, this.chain, token);
|
|
109
|
-
return await porticoApi_1.PorticoApi.quoteRelayer(startToken, destination);
|
|
110
|
-
}
|
|
111
|
-
async *approve(token, senderAddr, amount, contract) {
|
|
112
|
-
const tokenContract = connect_sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, token);
|
|
113
|
-
const allowance = await tokenContract.allowance(senderAddr, contract);
|
|
114
|
-
if (allowance < amount) {
|
|
115
|
-
const txReq = await tokenContract.approve.populateTransaction(contract, amount);
|
|
116
|
-
yield this.createUnsignedTransaction((0, connect_sdk_evm_1.addFrom)(txReq, senderAddr), 'PorticoBridge.Approve');
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
createUnsignedTransaction(txReq, description) {
|
|
120
|
-
return new connect_sdk_evm_1.EvmUnsignedTransaction((0, connect_sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, false);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
exports.EvmPorticoBridge = EvmPorticoBridge;
|
|
124
|
-
//# sourceMappingURL=porticoBridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoBridge.js","sourceRoot":"","sources":["../../src/porticoBridge.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/types.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/dist/cjs/types.js
DELETED
package/dist/cjs/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/dist/cjs/utils.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { TokenId } from '@wormhole-foundation/connect-sdk';
|
|
2
|
-
export declare const isEqualCaseInsensitive: (a: string, b: string) => boolean;
|
|
3
|
-
export declare const getOriginalEthereumAddress: <N extends "Mainnet" | "Testnet" | "Devnet">(network: N, token: TokenId) => TokenId;
|
|
4
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/cjs/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAIR,MAAM,kCAAkC,CAAC;AAE1C,eAAO,MAAM,sBAAsB,MAAO,MAAM,KAAK,MAAM,KAAG,OAE7D,CAAC;AAIF,eAAO,MAAM,0BAA0B,kEAE9B,OAAO,KACb,OAwBF,CAAC"}
|
package/dist/cjs/utils.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOriginalEthereumAddress = exports.isEqualCaseInsensitive = void 0;
|
|
4
|
-
const connect_sdk_1 = require("@wormhole-foundation/connect-sdk");
|
|
5
|
-
const isEqualCaseInsensitive = (a, b) => {
|
|
6
|
-
return a.toLowerCase() === b.toLowerCase();
|
|
7
|
-
};
|
|
8
|
-
exports.isEqualCaseInsensitive = isEqualCaseInsensitive;
|
|
9
|
-
// For a given token, return the corresponding address native to Ethereum
|
|
10
|
-
// Only considers local cache
|
|
11
|
-
const getOriginalEthereumAddress = (network, token) => {
|
|
12
|
-
if (token.chain === 'Ethereum')
|
|
13
|
-
return token;
|
|
14
|
-
const tokenAddress = (0, connect_sdk_1.canonicalAddress)(token);
|
|
15
|
-
const tokenData = connect_sdk_1.tokens.getTokenByAddress(network, token.chain, tokenAddress);
|
|
16
|
-
if (!tokenData)
|
|
17
|
-
throw new Error('Could not find token symbol for ' + tokenAddress);
|
|
18
|
-
const originalToken = connect_sdk_1.tokens.getCanonicalToken(network, token.chain, tokenData.symbol);
|
|
19
|
-
if (!originalToken)
|
|
20
|
-
throw new Error('Could not find original token for ' + tokenAddress);
|
|
21
|
-
if (originalToken.chain !== 'Ethereum')
|
|
22
|
-
throw new Error('Original token does not come from Ethereum');
|
|
23
|
-
return connect_sdk_1.Wormhole.chainAddress(originalToken.chain, originalToken.address);
|
|
24
|
-
};
|
|
25
|
-
exports.getOriginalEthereumAddress = getOriginalEthereumAddress;
|
|
26
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/cjs/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,kEAM0C;AAEnC,MAAM,sBAAsB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;IACtE,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,sBAAsB,0BAEjC;AAEF,yEAAyE;AACzE,6BAA6B;AACtB,MAAM,0BAA0B,GAAG,CACxC,OAAU,EACV,KAAc,EACL,EAAE;IACX,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAE7C,MAAM,YAAY,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,oBAAM,CAAC,iBAAiB,CACxC,OAAO,EACP,KAAK,CAAC,KAAK,EACX,YAAY,CACb,CAAC;IACF,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,YAAY,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,oBAAM,CAAC,iBAAiB,CAC5C,OAAO,EACP,KAAK,CAAC,KAAK,EACX,SAAS,CAAC,MAAM,CACjB,CAAC;IACF,IAAI,CAAC,aAAa;QAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,YAAY,CAAC,CAAC;IAEvE,IAAI,aAAa,CAAC,KAAK,KAAK,UAAU;QACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAEhE,OAAO,sBAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC,CAAC;AA3BW,QAAA,0BAA0B,8BA2BrC"}
|
package/dist/esm/porticoApi.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { TokenId } from '@wormhole-foundation/connect-sdk';
|
|
2
|
-
export declare const RELAYER_FEE_API_URL = "https://gfx.relayers.xlabs.xyz/api/v1/swap/quote";
|
|
3
|
-
export declare const OKU_TRADE_BASE_URL = "https://oku.trade/app";
|
|
4
|
-
export interface CreateOrderRequest {
|
|
5
|
-
startingChainId: number;
|
|
6
|
-
destinationChainId: number;
|
|
7
|
-
startingToken: string;
|
|
8
|
-
startingTokenAmount: string;
|
|
9
|
-
destinationToken: string;
|
|
10
|
-
destinationAddress: string;
|
|
11
|
-
relayerFee: string;
|
|
12
|
-
feeTierStart: number;
|
|
13
|
-
feeTierEnd: number;
|
|
14
|
-
minAmountStart: string;
|
|
15
|
-
minAmountEnd: string;
|
|
16
|
-
bridgeNonce: number;
|
|
17
|
-
shouldWrapNative: boolean;
|
|
18
|
-
shouldUnwrapNative: boolean;
|
|
19
|
-
porticoAddress: string;
|
|
20
|
-
destinationPorticoAddress: string;
|
|
21
|
-
}
|
|
22
|
-
export interface CreateOrderResponse {
|
|
23
|
-
transactionData: string;
|
|
24
|
-
transactionTarget: string;
|
|
25
|
-
transactionValue: string;
|
|
26
|
-
startParameters: string[];
|
|
27
|
-
estimatedAmountOut: string;
|
|
28
|
-
}
|
|
29
|
-
export interface RelayerQuoteResponse {
|
|
30
|
-
fee: string;
|
|
31
|
-
validUntil: string;
|
|
32
|
-
}
|
|
33
|
-
export declare class PorticoApi {
|
|
34
|
-
static createOrder(request: CreateOrderRequest): Promise<CreateOrderResponse>;
|
|
35
|
-
/**
|
|
36
|
-
* Validates that the response from the order creation API matches the request
|
|
37
|
-
* throws an error if there is a mismatch
|
|
38
|
-
*/
|
|
39
|
-
static validateCreateOrderResponse: (response: CreateOrderResponse, request: CreateOrderRequest) => void;
|
|
40
|
-
static quoteRelayer(from: TokenId, to: TokenId): Promise<bigint>;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=porticoApi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoApi.d.ts","sourceRoot":"","sources":["../../src/porticoApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,kCAAkC,CAAC;AAKhF,eAAO,MAAM,mBAAmB,qDACoB,CAAC;AACrD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAI1D,MAAM,WAAW,kBAAkB;IAEjC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;WAER,WAAW,CACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAkB/B;;;OAGG;IACH,MAAM,CAAC,2BAA2B,aACtB,mBAAmB,WACpB,kBAAkB,KAC1B,IAAI,CAqGL;WAEW,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBvE"}
|
package/dist/esm/porticoApi.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { encoding, toChainId } from '@wormhole-foundation/connect-sdk';
|
|
2
|
-
import axios from 'axios';
|
|
3
|
-
import { porticoAbi } from './abis';
|
|
4
|
-
import { isEqualCaseInsensitive } from './utils';
|
|
5
|
-
export const RELAYER_FEE_API_URL = 'https://gfx.relayers.xlabs.xyz/api/v1/swap/quote';
|
|
6
|
-
export const OKU_TRADE_BASE_URL = 'https://oku.trade/app';
|
|
7
|
-
const CREATE_ORDER_API_URL = 'https://thermae.fly.dev/api/order/create';
|
|
8
|
-
export class PorticoApi {
|
|
9
|
-
// Post the order to the portico API
|
|
10
|
-
static async createOrder(request) {
|
|
11
|
-
try {
|
|
12
|
-
const response = await axios.post(CREATE_ORDER_API_URL, request);
|
|
13
|
-
// Validate the response, not strictly necessary but if some details are wrong we want to know
|
|
14
|
-
this.validateCreateOrderResponse(response.data, request);
|
|
15
|
-
return response.data;
|
|
16
|
-
}
|
|
17
|
-
catch (e) {
|
|
18
|
-
if (axios.isAxiosError(e)) {
|
|
19
|
-
const message = `${e.response?.statusText}: ${e.response?.data.message}`;
|
|
20
|
-
throw new Error(`Could not create order: ${message},`);
|
|
21
|
-
}
|
|
22
|
-
throw e;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Validates that the response from the order creation API matches the request
|
|
27
|
-
* throws an error if there is a mismatch
|
|
28
|
-
*/
|
|
29
|
-
static validateCreateOrderResponse = (response, request) => {
|
|
30
|
-
if (!isEqualCaseInsensitive(request.porticoAddress || '', response.transactionTarget)) {
|
|
31
|
-
throw new Error('portico address mismatch');
|
|
32
|
-
}
|
|
33
|
-
const decoded = porticoAbi.decodeFunctionData('start', response.transactionData);
|
|
34
|
-
if (decoded.length !== 1 || decoded[0].length !== 10) {
|
|
35
|
-
throw new Error('decoded length mismatch');
|
|
36
|
-
}
|
|
37
|
-
const flagSetBuffer = Buffer.from(decoded[0][0].slice(2), 'hex');
|
|
38
|
-
if (flagSetBuffer.length !== 32) {
|
|
39
|
-
throw new Error('flag set length mismatch');
|
|
40
|
-
}
|
|
41
|
-
const { recipientChain, feeTierStart, feeTierFinish, shouldWrapNative, shouldUnwrapNative,
|
|
42
|
-
//@ts-ignore
|
|
43
|
-
} = parseFlagSet(flagSetBuffer);
|
|
44
|
-
if (recipientChain !== request.destinationChainId) {
|
|
45
|
-
throw new Error('recipient chain mismatch');
|
|
46
|
-
}
|
|
47
|
-
if (feeTierStart !== request.feeTierStart) {
|
|
48
|
-
throw new Error('fee tier start mismatch');
|
|
49
|
-
}
|
|
50
|
-
if (feeTierFinish !== request.feeTierEnd) {
|
|
51
|
-
throw new Error('fee tier end mismatch');
|
|
52
|
-
}
|
|
53
|
-
if (shouldWrapNative !== request.shouldWrapNative) {
|
|
54
|
-
throw new Error('should wrap native mismatch');
|
|
55
|
-
}
|
|
56
|
-
if (shouldUnwrapNative !== request.shouldUnwrapNative) {
|
|
57
|
-
throw new Error('should unwrap native mismatch');
|
|
58
|
-
}
|
|
59
|
-
const startTokenAddress = decoded[0][1];
|
|
60
|
-
if (!isEqualCaseInsensitive(startTokenAddress, request.startingToken)) {
|
|
61
|
-
throw new Error('start token address mismatch');
|
|
62
|
-
}
|
|
63
|
-
// const startTokenId = Wormhole.chainAddress(toChain(request.startingChainId), startTokenAddress);
|
|
64
|
-
// const canonicalTokenAddress: string = decoded[0][2];
|
|
65
|
-
// if (!isEqualCaseInsensitive(canonicalTokenAddress, getOriginalAddress("Mainnet", startTokenId))) {
|
|
66
|
-
// throw new Error("canonical token address mismatch");
|
|
67
|
-
// }
|
|
68
|
-
const finalTokenAddress = decoded[0][3];
|
|
69
|
-
if (!isEqualCaseInsensitive(finalTokenAddress, request.destinationToken)) {
|
|
70
|
-
throw new Error('final token address mismatch');
|
|
71
|
-
}
|
|
72
|
-
const recipientAddress = decoded[0][4];
|
|
73
|
-
if (!isEqualCaseInsensitive(recipientAddress, request.destinationAddress)) {
|
|
74
|
-
throw new Error('recipient address mismatch');
|
|
75
|
-
}
|
|
76
|
-
const destinationPorticoAddress = decoded[0][5];
|
|
77
|
-
if (!isEqualCaseInsensitive(destinationPorticoAddress, request.destinationPorticoAddress || '')) {
|
|
78
|
-
throw new Error('destination portico address mismatch');
|
|
79
|
-
}
|
|
80
|
-
const amountSpecified = decoded[0][6];
|
|
81
|
-
if (amountSpecified.toString() !== request.startingTokenAmount) {
|
|
82
|
-
throw new Error('amount mismatch');
|
|
83
|
-
}
|
|
84
|
-
const minAmountStart = decoded[0][7];
|
|
85
|
-
if (minAmountStart.toString() !== request.minAmountStart) {
|
|
86
|
-
throw new Error('min amount start mismatch');
|
|
87
|
-
}
|
|
88
|
-
const minAmountFinish = decoded[0][8];
|
|
89
|
-
if (minAmountFinish.toString() !== request.minAmountEnd) {
|
|
90
|
-
throw new Error('min amount finish mismatch');
|
|
91
|
-
}
|
|
92
|
-
const relayerFee = decoded[0][9];
|
|
93
|
-
if (relayerFee.toString() !== request.relayerFee) {
|
|
94
|
-
throw new Error('relayer fee mismatch');
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
static async quoteRelayer(from, to) {
|
|
98
|
-
const targetChain = toChainId(to.chain);
|
|
99
|
-
const sourceToken = encoding.hex.encode(from.address.toUniversalAddress().toUint8Array(), false);
|
|
100
|
-
const targetToken = encoding.hex.encode(to.address.toUniversalAddress().toUint8Array(), false);
|
|
101
|
-
const request = { targetChain, sourceToken, targetToken };
|
|
102
|
-
try {
|
|
103
|
-
const response = await axios.post(RELAYER_FEE_API_URL, request);
|
|
104
|
-
return BigInt(response.data.fee);
|
|
105
|
-
}
|
|
106
|
-
catch (e) {
|
|
107
|
-
if (axios.isAxiosError(e)) {
|
|
108
|
-
throw new Error(`Error getting relayer fee: ${e.response?.statusText}`);
|
|
109
|
-
}
|
|
110
|
-
throw e;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=porticoApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoApi.js","sourceRoot":"","sources":["../../src/porticoApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { AccountAddress, ChainAddress, ChainsConfig, Contracts, Network, Platform, Signer, TokenAddress, TokenId, VAA } from '@wormhole-foundation/connect-sdk';
|
|
2
|
-
import { EvmChains, EvmUnsignedTransaction } from '@wormhole-foundation/connect-sdk-evm';
|
|
3
|
-
import { Provider, ethers } from 'ethers';
|
|
4
|
-
import { EvmWormholeCore } from '@wormhole-foundation/connect-sdk-evm-core';
|
|
5
|
-
import '@wormhole-foundation/connect-sdk-evm-tokenbridge';
|
|
6
|
-
export declare class EvmPorticoBridge<N extends Network, C extends EvmChains = EvmChains> {
|
|
7
|
-
readonly network: N;
|
|
8
|
-
readonly chain: C;
|
|
9
|
-
readonly provider: Provider;
|
|
10
|
-
readonly contracts: Contracts;
|
|
11
|
-
readonly core: EvmWormholeCore<N, C>;
|
|
12
|
-
chainId: bigint;
|
|
13
|
-
porticoAddress: string;
|
|
14
|
-
uniswapAddress: string;
|
|
15
|
-
porticoContract: ethers.Contract;
|
|
16
|
-
uniswapContract: ethers.Contract;
|
|
17
|
-
constructor(network: N, chain: C, provider: Provider, contracts: Contracts, core: EvmWormholeCore<N, C>);
|
|
18
|
-
static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, Platform>): Promise<EvmPorticoBridge<N, EvmChains>>;
|
|
19
|
-
transfer(sender: AccountAddress<C>, receiver: ChainAddress, token: TokenAddress<C>, amount: bigint, destToken: TokenId | 'native', swapAmounts: {
|
|
20
|
-
minAmountStart: bigint;
|
|
21
|
-
minAmountFinish: bigint;
|
|
22
|
-
amountFinish: bigint;
|
|
23
|
-
}, relayerFee: bigint): AsyncGenerator<EvmUnsignedTransaction<N, "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky">, void, unknown>;
|
|
24
|
-
redeem(vaa: VAA, signer: Signer<N>): AsyncGenerator<EvmUnsignedTransaction<N, "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky">, void, unknown>;
|
|
25
|
-
quoteSwap(input: TokenAddress<C>, output: TokenAddress<C>, amount: bigint): Promise<bigint>;
|
|
26
|
-
quoteRelay(token: TokenAddress<C>, destination: TokenId): Promise<bigint>;
|
|
27
|
-
private approve;
|
|
28
|
-
private createUnsignedTransaction;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=porticoBridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"porticoBridge.d.ts","sourceRoot":"","sources":["../../src/porticoBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,OAAO,EACP,GAAG,EAKJ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EAET,sBAAsB,EAGvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAK9D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,kDAAkD,CAAC;AAG1D,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,SAAS,GAAG,SAAS;IAU7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAZtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAEvB,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAGtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;WAwBzB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAkBnC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GAAG,QAAQ,EAC7B,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,EACD,UAAU,EAAE,MAAM;IAyEb,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAWnC,SAAS,CACb,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAyBZ,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO;YAK9C,OAAO;IAuBtB,OAAO,CAAC,yBAAyB;CAYlC"}
|