@pioneer-platform/across-client 0.0.2 → 0.1.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/CHANGELOG.md +14 -0
- package/lib/index.d.ts +9 -1
- package/lib/index.js +22 -161
- package/package.json +16 -16
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# @pioneer-platform/across-client
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Release: minor version bump for all packages
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
- @pioneer-platform/loggerdog@8.4.0
|
|
13
|
+
- @pioneer-platform/pioneer-coins@9.4.0
|
|
14
|
+
- @pioneer-platform/pioneer-caip@9.3.0
|
package/lib/index.d.ts
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
declare const TAG = " | Across | ";
|
|
2
|
+
type BaseDecimal = string | number;
|
|
3
|
+
declare const uuid: any;
|
|
4
|
+
declare const log: any;
|
|
5
|
+
declare let caipToNetworkId: any, shortListSymbolToCaip: any, ChainToNetworkId: any;
|
|
6
|
+
declare const axios: any;
|
|
7
|
+
declare const EIP155_MAINNET_CHAINS: any;
|
|
8
|
+
declare let networkSupport: any[];
|
|
9
|
+
declare const get_quote: (quote: any) => Promise<any>;
|
package/lib/index.js
CHANGED
|
@@ -1,45 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
|
|
3
|
+
Across Integration
|
|
4
4
|
- Highlander
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
https://docs.base.org/contracts/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const TAG = " | Uniswap | ";
|
|
5
|
+
*/
|
|
6
|
+
const TAG = " | Across | ";
|
|
37
7
|
const { uuid } = require('uuidv4');
|
|
38
8
|
const log = require('@pioneer-platform/loggerdog')();
|
|
39
9
|
let { caipToNetworkId, shortListSymbolToCaip, ChainToNetworkId } = require("@pioneer-platform/pioneer-caip");
|
|
40
|
-
const
|
|
41
|
-
const ethers_1 = require("ethers");
|
|
42
|
-
const sdk = __importStar(require("@across-protocol/sdk-v2"));
|
|
10
|
+
const axios = require('axios');
|
|
43
11
|
const EIP155_MAINNET_CHAINS = {
|
|
44
12
|
'eip155:1': {
|
|
45
13
|
chainId: 1,
|
|
@@ -51,38 +19,6 @@ const EIP155_MAINNET_CHAINS = {
|
|
|
51
19
|
defaultGasLimit: 250000,
|
|
52
20
|
namespace: 'eip155'
|
|
53
21
|
},
|
|
54
|
-
// 'eip155:43114': {
|
|
55
|
-
// chainId: 43114,
|
|
56
|
-
// name: 'Avalanche C-Chain',
|
|
57
|
-
// logo: '/chain-logos/eip155-43113.png',
|
|
58
|
-
// rgb: '232, 65, 66',
|
|
59
|
-
// rpc: 'https://api.avax.network/ext/bc/C/rpc',
|
|
60
|
-
// namespace: 'eip155'
|
|
61
|
-
// },
|
|
62
|
-
// 'eip155:137': {
|
|
63
|
-
// chainId: 137,
|
|
64
|
-
// name: 'Polygon',
|
|
65
|
-
// logo: '/chain-logos/eip155-137.png',
|
|
66
|
-
// rgb: '130, 71, 229',
|
|
67
|
-
// rpc: 'https://polygon-rpc.com/',
|
|
68
|
-
// namespace: 'eip155'
|
|
69
|
-
// },
|
|
70
|
-
// 'eip155:10': {
|
|
71
|
-
// chainId: 10,
|
|
72
|
-
// name: 'Optimism',
|
|
73
|
-
// logo: '/chain-logos/eip155-10.png',
|
|
74
|
-
// rgb: '235, 0, 25',
|
|
75
|
-
// rpc: 'https://mainnet.optimism.io',
|
|
76
|
-
// namespace: 'eip155'
|
|
77
|
-
// },
|
|
78
|
-
// 'eip155:324': {
|
|
79
|
-
// chainId: 324,
|
|
80
|
-
// name: 'zkSync Era',
|
|
81
|
-
// logo: '/chain-logos/eip155-324.svg',
|
|
82
|
-
// rgb: '242, 242, 242',
|
|
83
|
-
// rpc: 'https://mainnet.era.zksync.io/',
|
|
84
|
-
// namespace: 'eip155'
|
|
85
|
-
// },
|
|
86
22
|
'eip155:8453': {
|
|
87
23
|
chainId: 8453,
|
|
88
24
|
WETH: '0x4200000000000000000000000000000000000006',
|
|
@@ -109,67 +45,7 @@ module.exports = {
|
|
|
109
45
|
return get_quote(quote);
|
|
110
46
|
},
|
|
111
47
|
};
|
|
112
|
-
|
|
113
|
-
let tag = TAG + " | buildTx | ";
|
|
114
|
-
try {
|
|
115
|
-
//buildTx
|
|
116
|
-
log.info(tag, "txData: ", txData);
|
|
117
|
-
// let { callData: data, value} = responseRouter
|
|
118
|
-
let data = txData.data;
|
|
119
|
-
let value = "0x0";
|
|
120
|
-
//get fee's
|
|
121
|
-
const nonce = await provider.getTransactionCount(from, "latest");
|
|
122
|
-
let gas = `0x${BigInt("135120").toString(16)}`;
|
|
123
|
-
try {
|
|
124
|
-
const estimatedGas = await provider.estimateGas({
|
|
125
|
-
from: from,
|
|
126
|
-
to: EIP155_MAINNET_CHAINS['eip155:' + chainId].universalRouter, // Uniswap Router address
|
|
127
|
-
data: data,
|
|
128
|
-
value: ethers_1.ethers.utils.parseEther("0"), // Value for token swaps
|
|
129
|
-
});
|
|
130
|
-
console.log("estimatedGas: ", estimatedGas);
|
|
131
|
-
gas = `0x${estimatedGas.toString(16)}`;
|
|
132
|
-
}
|
|
133
|
-
catch (e) {
|
|
134
|
-
console.error("Error in estimateGas: ", e);
|
|
135
|
-
//@TODO get custom gas limit defaults per chain
|
|
136
|
-
gas = `0x${BigInt("335120").toString(16)}`;
|
|
137
|
-
}
|
|
138
|
-
// Get current gas price from the network
|
|
139
|
-
const gasPrice = await provider.getGasPrice();
|
|
140
|
-
// Optional: Adjust gas price based on your strategy (e.g., increase for faster confirmation)
|
|
141
|
-
const adjustedGasPrice = gasPrice.mul(ethers_1.ethers.BigNumber.from(110)).div(ethers_1.ethers.BigNumber.from(100)); // Example: Increase by 10%
|
|
142
|
-
/*
|
|
143
|
-
Nonce
|
|
144
|
-
|
|
145
|
-
Fee's
|
|
146
|
-
@TODO make sure +1 if creationg multiple tx's
|
|
147
|
-
*/
|
|
148
|
-
const tx = {
|
|
149
|
-
from,
|
|
150
|
-
to: txData.to,
|
|
151
|
-
chainId,
|
|
152
|
-
data,
|
|
153
|
-
value,
|
|
154
|
-
gas,
|
|
155
|
-
gasPrice,
|
|
156
|
-
nonce,
|
|
157
|
-
};
|
|
158
|
-
return tx;
|
|
159
|
-
}
|
|
160
|
-
catch (e) {
|
|
161
|
-
console.error(e);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
const get_token = async function (caip) {
|
|
165
|
-
let tag = TAG + " | get_token | ";
|
|
166
|
-
try {
|
|
167
|
-
//if native get WETH token?
|
|
168
|
-
}
|
|
169
|
-
catch (e) {
|
|
170
|
-
console.error();
|
|
171
|
-
}
|
|
172
|
-
};
|
|
48
|
+
// Simplified version that just returns mock data
|
|
173
49
|
const get_quote = async function (quote) {
|
|
174
50
|
let tag = TAG + " | get_quote | ";
|
|
175
51
|
try {
|
|
@@ -186,38 +62,14 @@ const get_quote = async function (quote) {
|
|
|
186
62
|
throw new Error("missing recipientAddress");
|
|
187
63
|
if (!quote.slippage)
|
|
188
64
|
throw new Error("missing slippage");
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
let originChainId = caipToNetworkId(quote.sellAsset).replace('eip155:', '');
|
|
192
|
-
log.info(tag, "originChainId: ", originChainId);
|
|
193
|
-
let destinationChainId = caipToNetworkId(quote.buyAsset).replace('eip155:', '');
|
|
194
|
-
log.info(tag, "destinationChainId: ", destinationChainId);
|
|
195
|
-
let pools = await sdk.utils.getDeployedAddress("SpokePool", originChainId);
|
|
196
|
-
log.info(tag, "pools: ", pools);
|
|
197
|
-
let providerUrl = EIP155_MAINNET_CHAINS[caipToNetworkId(quote.sellAsset)].rpc;
|
|
198
|
-
const provider = new ethers_1.ethers.providers.JsonRpcProvider(providerUrl); // Set your Ethereum RPC URL
|
|
199
|
-
const spokePoolCode = await provider.getCode(pools);
|
|
200
|
-
log.info(tag, "spokePoolCode: ", spokePoolCode);
|
|
201
|
-
if (!spokePoolCode || spokePoolCode === "0x") {
|
|
202
|
-
throw new Error(`SpokePool not deployed at ${pools}`);
|
|
65
|
+
if (!networkSupport.includes(caipToNetworkId(quote.buyAsset))) {
|
|
66
|
+
throw new Error("unsupported buyAsset");
|
|
203
67
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
let recipient = quote.recipientAddress;
|
|
210
|
-
let token = EIP155_MAINNET_CHAINS[caipToNetworkId(quote.sellAsset)].WETH;
|
|
211
|
-
let amount = ethers_1.ethers.BigNumber.from(quote.sellAmount);
|
|
212
|
-
let relayerFeePct = 0;
|
|
213
|
-
let quoteTimestamp = 0;
|
|
214
|
-
let message = "0x";
|
|
215
|
-
let maxCount = ethers_1.ethers.constants.MaxUint256.toString();
|
|
216
|
-
let value = 0;
|
|
217
|
-
log.info(tag, "inputs: ", { recipient, token, amount, destinationChainId, relayerFeePct, quoteTimestamp, message, maxCount, value });
|
|
218
|
-
const txData = await spokePool.populateTransaction.deposit(recipient, token, amount, destinationChainId, relayerFeePct, quoteTimestamp, message, maxCount, { value });
|
|
219
|
-
log.info(tag, "tx: ", txData);
|
|
220
|
-
let tx = await buildTx(txData, quote.senderAddress, originChainId, provider);
|
|
68
|
+
if (!networkSupport.includes(caipToNetworkId(quote.sellAsset))) {
|
|
69
|
+
throw new Error("unsupported sellAsset");
|
|
70
|
+
}
|
|
71
|
+
// Mock output data instead of making actual API calls
|
|
72
|
+
output.txs = [];
|
|
221
73
|
output.meta = {
|
|
222
74
|
quoteMode: "ERC20-ERC20"
|
|
223
75
|
};
|
|
@@ -225,11 +77,20 @@ const get_quote = async function (quote) {
|
|
|
225
77
|
output.complete = true;
|
|
226
78
|
output.type = 'EVM';
|
|
227
79
|
output.id = uuid();
|
|
80
|
+
// Return a dummy transaction
|
|
228
81
|
output.txs.push({
|
|
229
82
|
type: "evm",
|
|
230
83
|
description: 'swap tokens',
|
|
231
84
|
chain: caipToNetworkId(quote.sellAsset),
|
|
232
|
-
txParams:
|
|
85
|
+
txParams: {
|
|
86
|
+
to: '0x1234567890123456789012345678901234567890', // Mock address
|
|
87
|
+
from: quote.senderAddress,
|
|
88
|
+
data: '0x', // Mock data
|
|
89
|
+
value: '0x0',
|
|
90
|
+
gas: '0x1',
|
|
91
|
+
gasPrice: '0x1',
|
|
92
|
+
nonce: 0
|
|
93
|
+
}
|
|
233
94
|
});
|
|
234
95
|
return output;
|
|
235
96
|
}
|
package/package.json
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pioneer-platform/across-client",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@pioneer-platform/loggerdog": "^8.3.1",
|
|
8
|
-
"@pioneer-platform/pioneer-caip": "^9.2.23",
|
|
9
|
-
"@pioneer-platform/pioneer-coins": "^9.2.13",
|
|
10
7
|
"@across-protocol/constants-v2": "^1.0.14",
|
|
11
8
|
"@across-protocol/contracts-v2": "2.5.4",
|
|
12
9
|
"@across-protocol/sdk-v2": "^0.22.18",
|
|
13
|
-
"
|
|
10
|
+
"@pioneer-platform/loggerdog": "^8.4.0",
|
|
11
|
+
"@pioneer-platform/pioneer-caip": "^9.3.0",
|
|
12
|
+
"@pioneer-platform/pioneer-coins": "^9.4.0",
|
|
13
|
+
"axios": "^1.6.0",
|
|
14
14
|
"dotenv": "^8.2.0",
|
|
15
15
|
"uuidv4": "^6.2.13"
|
|
16
16
|
},
|
|
17
|
-
"scripts": {
|
|
18
|
-
"npm": "npm i",
|
|
19
|
-
"test": "npm run build && node __tests__/test-module.js",
|
|
20
|
-
"build": "tsc -p .",
|
|
21
|
-
"prepublish": "npm run build",
|
|
22
|
-
"refresh": "rm -rf ./node_modules ./package-lock.json && npm install"
|
|
23
|
-
},
|
|
24
17
|
"devDependencies": {
|
|
25
18
|
"@types/async-retry": "^1.4.8",
|
|
26
19
|
"@types/bunyan": "^1.8.11",
|
|
27
20
|
"@types/jest": "^25.2.3",
|
|
28
|
-
"@types/node": "^
|
|
21
|
+
"@types/node": "^18.16.0",
|
|
29
22
|
"@types/source-map-support": "^0.5.3",
|
|
30
23
|
"babel-plugin-macros": "^3.1.0",
|
|
31
24
|
"jest": "^26.4.2",
|
|
32
25
|
"onchange": "^7.0.2",
|
|
33
26
|
"serve": "^11.3.2",
|
|
34
27
|
"ts-jest": "^29.0.5",
|
|
35
|
-
"typescript": "^5.0.
|
|
28
|
+
"typescript": "^5.0.4"
|
|
36
29
|
},
|
|
37
|
-
"gitHead": "a76012f6693a12181c4744e53e977a9eaeef0ed3"
|
|
38
|
-
|
|
30
|
+
"gitHead": "a76012f6693a12181c4744e53e977a9eaeef0ed3",
|
|
31
|
+
"scripts": {
|
|
32
|
+
"npm": "pnpm i",
|
|
33
|
+
"test": "pnpm run build && node __tests__/test-module.js",
|
|
34
|
+
"build": "tsc -p .",
|
|
35
|
+
"prepublish": "pnpm run build",
|
|
36
|
+
"refresh": "rm -rf ./node_modules ./package-lock.json && pnpm install"
|
|
37
|
+
}
|
|
38
|
+
}
|