@requestnetwork/smart-contracts 0.28.1-next.1612 → 0.28.1-next.1621
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 +315 -719
- package/dist/hardhat.config.d.ts +69 -0
- package/dist/hardhat.config.d.ts.map +1 -0
- package/dist/hardhat.config.js +131 -0
- package/dist/hardhat.config.js.map +1 -0
- package/dist/scripts/1_deploy-request-storage.d.ts +3 -0
- package/dist/scripts/1_deploy-request-storage.d.ts.map +1 -0
- package/dist/scripts/1_deploy-request-storage.js +37 -0
- package/dist/scripts/1_deploy-request-storage.js.map +1 -0
- package/dist/scripts/2_deploy-main-payments.d.ts +4 -0
- package/dist/scripts/2_deploy-main-payments.d.ts.map +1 -0
- package/dist/scripts/2_deploy-main-payments.js +85 -0
- package/dist/scripts/2_deploy-main-payments.js.map +1 -0
- package/dist/scripts/3_deploy_chainlink_contract.d.ts +4 -0
- package/dist/scripts/3_deploy_chainlink_contract.d.ts.map +1 -0
- package/dist/scripts/3_deploy_chainlink_contract.js +68 -0
- package/dist/scripts/3_deploy_chainlink_contract.js.map +1 -0
- package/dist/scripts/4_deploy-escrow-deployment.d.ts +4 -0
- package/dist/scripts/4_deploy-escrow-deployment.d.ts.map +1 -0
- package/dist/scripts/4_deploy-escrow-deployment.js +30 -0
- package/dist/scripts/4_deploy-escrow-deployment.js.map +1 -0
- package/dist/scripts/conversion-proxy.d.ts +11 -0
- package/dist/scripts/conversion-proxy.d.ts.map +1 -0
- package/dist/scripts/conversion-proxy.js +61 -0
- package/dist/scripts/conversion-proxy.js.map +1 -0
- package/dist/scripts/deploy-one.d.ts +30 -0
- package/dist/scripts/deploy-one.d.ts.map +1 -0
- package/dist/scripts/deploy-one.js +109 -0
- package/dist/scripts/deploy-one.js.map +1 -0
- package/dist/scripts/deploy-payments.d.ts +18 -0
- package/dist/scripts/deploy-payments.d.ts.map +1 -0
- package/dist/scripts/deploy-payments.js +232 -0
- package/dist/scripts/deploy-payments.js.map +1 -0
- package/dist/scripts/erc20-swap-to-conversion.d.ts +10 -0
- package/dist/scripts/erc20-swap-to-conversion.d.ts.map +1 -0
- package/dist/scripts/erc20-swap-to-conversion.js +80 -0
- package/dist/scripts/erc20-swap-to-conversion.js.map +1 -0
- package/dist/scripts/eth-conversion-proxy.d.ts +7 -0
- package/dist/scripts/eth-conversion-proxy.d.ts.map +1 -0
- package/dist/scripts/eth-conversion-proxy.js +32 -0
- package/dist/scripts/eth-conversion-proxy.js.map +1 -0
- package/dist/scripts/prepare-payments.d.ts +4 -0
- package/dist/scripts/prepare-payments.d.ts.map +1 -0
- package/dist/scripts/prepare-payments.js +31 -0
- package/dist/scripts/prepare-payments.js.map +1 -0
- package/dist/scripts/utils.d.ts +6 -0
- package/dist/scripts/utils.d.ts.map +1 -0
- package/dist/scripts/utils.js +23 -0
- package/dist/scripts/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -5
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deployOne = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("@nomiclabs/hardhat-ethers");
|
|
6
|
+
const SIMULATED_DEPLOYMENT = {
|
|
7
|
+
address: 'simulated',
|
|
8
|
+
contractName: '',
|
|
9
|
+
instance: null,
|
|
10
|
+
constructorArguments: [],
|
|
11
|
+
type: 'simulated',
|
|
12
|
+
};
|
|
13
|
+
const SKIPPED_DEPLOYMENT = {
|
|
14
|
+
address: 'skipped',
|
|
15
|
+
contractName: '',
|
|
16
|
+
instance: null,
|
|
17
|
+
constructorArguments: [],
|
|
18
|
+
type: 'skipped',
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Deploys contracts if they are not known by artifacts on the network.
|
|
22
|
+
* Publishes the source when the deployment is made.
|
|
23
|
+
* @options
|
|
24
|
+
* - options.verify: set false to prevent verification on live networks
|
|
25
|
+
* - options.nonceCondition: only proceeds with the deployment if the nonce matches
|
|
26
|
+
* @returns a deployment result with address =
|
|
27
|
+
* - The address if the contract is deployed or attached
|
|
28
|
+
* - 'simulated' if args.simulate === true (no deployment/)
|
|
29
|
+
* - 'skipped' if the nonce condition is not met
|
|
30
|
+
*/
|
|
31
|
+
function deployOne(args, hre, contractName, options) {
|
|
32
|
+
var _a;
|
|
33
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
34
|
+
const [deployer] = yield hre.ethers.getSigners();
|
|
35
|
+
let address = undefined;
|
|
36
|
+
const factory = yield hre.ethers.getContractFactory(contractName, deployer);
|
|
37
|
+
const constructorArguments = (_a = options === null || options === void 0 ? void 0 : options.constructorArguments) !== null && _a !== void 0 ? _a : [];
|
|
38
|
+
if (options === null || options === void 0 ? void 0 : options.artifact) {
|
|
39
|
+
try {
|
|
40
|
+
address = options.artifact.getAddress(hre.network.name);
|
|
41
|
+
const action = args.force ? '(forcing deployment)' : '(skipping)';
|
|
42
|
+
console.log(`Found ${contractName} on ${hre.network.name} at address: ${address} ${action}`);
|
|
43
|
+
if (!args.force) {
|
|
44
|
+
return {
|
|
45
|
+
address,
|
|
46
|
+
contractName,
|
|
47
|
+
instance: factory.attach(address),
|
|
48
|
+
constructorArguments,
|
|
49
|
+
type: 'attached',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
// ignore error
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (options === null || options === void 0 ? void 0 : options.nonceCondition) {
|
|
58
|
+
const currentNonce = yield deployer.getTransactionCount();
|
|
59
|
+
if (options.nonceCondition !== currentNonce) {
|
|
60
|
+
console.warn(`Warning: trying to deploy ${contractName} with nonce ${options.nonceCondition}, but nonce = ${currentNonce}`);
|
|
61
|
+
if (!args.simulate) {
|
|
62
|
+
const result = Object.assign(Object.assign({}, SKIPPED_DEPLOYMENT), { instance: null, contractName, constructorArguments: constructorArguments });
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (args.simulate) {
|
|
68
|
+
const result = Object.assign(Object.assign({}, SIMULATED_DEPLOYMENT), { instance: null, contractName, constructorArguments: constructorArguments });
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
// Deployment and Verification
|
|
72
|
+
try {
|
|
73
|
+
// Deployment
|
|
74
|
+
const instance = (yield factory.deploy(...constructorArguments));
|
|
75
|
+
yield instance.deployed();
|
|
76
|
+
address = instance.address;
|
|
77
|
+
// Verfication
|
|
78
|
+
let verificationPromise = undefined;
|
|
79
|
+
const publishSource = hre.network.name !== 'private' && !args.simulate && (options === null || options === void 0 ? void 0 : options.verify) !== false;
|
|
80
|
+
if (publishSource) {
|
|
81
|
+
verificationPromise = instance.deployTransaction.wait(10).then(() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
82
|
+
let verificationResult = true;
|
|
83
|
+
try {
|
|
84
|
+
yield hre.run('verify:verify', { address, constructorArguments });
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
console.warn(`Failed verifying contract: ${contractName}`);
|
|
88
|
+
console.log(e);
|
|
89
|
+
verificationResult = false;
|
|
90
|
+
}
|
|
91
|
+
return verificationResult;
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
address,
|
|
96
|
+
contractName,
|
|
97
|
+
instance,
|
|
98
|
+
constructorArguments,
|
|
99
|
+
type: 'deployed',
|
|
100
|
+
verificationPromise,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
throw new Error(`Failed deploying contract: ${contractName}. Error: ${e}`);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.deployOne = deployOne;
|
|
109
|
+
//# sourceMappingURL=deploy-one.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-one.js","sourceRoot":"","sources":["../../scripts/deploy-one.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import '@nomiclabs/hardhat-ethers';
|
|
2
|
+
import { HardhatRuntimeEnvironment } from 'hardhat/types';
|
|
3
|
+
/**
|
|
4
|
+
* Script ensuring all payment contracts are deployed and usable on a live chain.
|
|
5
|
+
*
|
|
6
|
+
* For a given chain, in the absence of `args.simulate` and `args.force`, the script is responsible for:
|
|
7
|
+
* - Deploying contracts in the exact same sequence on every chain, to keep the same addresses
|
|
8
|
+
* - Deploying only contracts which, according to the artifacts in `src/lib/artifacts`, are not yet deployed on the chain
|
|
9
|
+
* - Doing the minimum required administration tasks (typically: handover administration to other wallets)
|
|
10
|
+
* - Verifying the contract code of deployed contracts on the appropriate explorer, when relevant
|
|
11
|
+
* - Switching to simulation mode if any deployment cannot be made (in order to keep the sequence)
|
|
12
|
+
*
|
|
13
|
+
* `args.force = true` to force deployments even if addresses are found in the artifacts (eg. on private network)
|
|
14
|
+
* `args.simulate = true` to prevent deployments and contract verification
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
export declare function deployAllPaymentContracts(args: any, hre: HardhatRuntimeEnvironment): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=deploy-payments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-payments.d.ts","sourceRoot":"","sources":["../../scripts/deploy-payments.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAkB1D;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,yBAAyB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAwQf"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deployAllPaymentContracts = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("@nomiclabs/hardhat-ethers");
|
|
6
|
+
const lib_1 = require("../src/lib");
|
|
7
|
+
const erc20_swap_to_conversion_1 = require("./erc20-swap-to-conversion");
|
|
8
|
+
const conversion_proxy_1 = require("./conversion-proxy");
|
|
9
|
+
const deploy_one_1 = require("./deploy-one");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
/**
|
|
12
|
+
* Script ensuring all payment contracts are deployed and usable on a live chain.
|
|
13
|
+
*
|
|
14
|
+
* For a given chain, in the absence of `args.simulate` and `args.force`, the script is responsible for:
|
|
15
|
+
* - Deploying contracts in the exact same sequence on every chain, to keep the same addresses
|
|
16
|
+
* - Deploying only contracts which, according to the artifacts in `src/lib/artifacts`, are not yet deployed on the chain
|
|
17
|
+
* - Doing the minimum required administration tasks (typically: handover administration to other wallets)
|
|
18
|
+
* - Verifying the contract code of deployed contracts on the appropriate explorer, when relevant
|
|
19
|
+
* - Switching to simulation mode if any deployment cannot be made (in order to keep the sequence)
|
|
20
|
+
*
|
|
21
|
+
* `args.force = true` to force deployments even if addresses are found in the artifacts (eg. on private network)
|
|
22
|
+
* `args.simulate = true` to prevent deployments and contract verification
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
function deployAllPaymentContracts(args, hre) {
|
|
26
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
27
|
+
const deploymentResults = [];
|
|
28
|
+
let simulationSuccess;
|
|
29
|
+
try {
|
|
30
|
+
simulationSuccess = args.simulate ? true : undefined;
|
|
31
|
+
const [deployer] = yield hre.ethers.getSigners();
|
|
32
|
+
console.log(`*** Deploying with the account: ${deployer.address} on the network ${hre.network.name} (${hre.network.config.chainId}) ***`);
|
|
33
|
+
// #region EASY DEPLOYMENTS UTIL
|
|
34
|
+
// Utility to run a straight-forward deployment with deployOne()
|
|
35
|
+
const runEasyDeployment = (deployment) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
36
|
+
var _a;
|
|
37
|
+
deployment.constructorArguments = (_a = deployment.constructorArguments) !== null && _a !== void 0 ? _a : [];
|
|
38
|
+
const result = yield (0, deploy_one_1.deployOne)(args, hre, deployment.contractName, Object.assign({}, deployment));
|
|
39
|
+
deploymentResults.push(result);
|
|
40
|
+
console.log(`Contract ${deployment.contractName} ${result.type}: ${result.address}`);
|
|
41
|
+
if (result.type === 'skipped') {
|
|
42
|
+
switchToSimulation();
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
});
|
|
46
|
+
// #endregion
|
|
47
|
+
// #region NON-EASY BATCHES DEFINITION
|
|
48
|
+
const switchToSimulation = () => {
|
|
49
|
+
if (!args.simulate) {
|
|
50
|
+
console.log('[!] Switching to simulated mode');
|
|
51
|
+
args.simulate = true;
|
|
52
|
+
simulationSuccess = simulationSuccess !== null && simulationSuccess !== void 0 ? simulationSuccess : true;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/*
|
|
56
|
+
* Batch 2
|
|
57
|
+
* - ERC20ConversionProxy
|
|
58
|
+
* - ERC20SwapToPay
|
|
59
|
+
* - ERC20SwapToConversion
|
|
60
|
+
*/
|
|
61
|
+
const runDeploymentBatch_2 = (chainlinkInstance, erc20FeeProxyAddress) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
62
|
+
let chainlinkConversionPathAddress = chainlinkInstance === null || chainlinkInstance === void 0 ? void 0 : chainlinkInstance.address;
|
|
63
|
+
if (!chainlinkConversionPathAddress) {
|
|
64
|
+
switchToSimulation();
|
|
65
|
+
chainlinkConversionPathAddress = 'simulated';
|
|
66
|
+
}
|
|
67
|
+
// Deploy ERC20 Conversion
|
|
68
|
+
const erc20ConversionResult = yield (0, conversion_proxy_1.deployERC20ConversionProxy)(Object.assign(Object.assign({}, args), { chainlinkConversionPathAddress,
|
|
69
|
+
erc20FeeProxyAddress }), hre);
|
|
70
|
+
deploymentResults.push(erc20ConversionResult);
|
|
71
|
+
const erc20ConversionAddress = erc20ConversionResult === null || erc20ConversionResult === void 0 ? void 0 : erc20ConversionResult.address;
|
|
72
|
+
// Add whitelist admin to chainlink path
|
|
73
|
+
const currentNonce = yield deployer.getTransactionCount();
|
|
74
|
+
if (chainlinkInstance && currentNonce === 4) {
|
|
75
|
+
if (!process.env.ADMIN_WALLET_ADDRESS) {
|
|
76
|
+
throw new Error('Chainlink was deployed but no ADMIN_WALLET_ADDRESS was provided.');
|
|
77
|
+
}
|
|
78
|
+
if (args.simulate === false) {
|
|
79
|
+
yield chainlinkInstance.addWhitelistAdmin(process.env.ADMIN_WALLET_ADDRESS);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log('[i] Simulating addWhitelistAdmin to chainlinkInstance');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ERC20SwapToPay & ERC20SwapToConversion
|
|
86
|
+
const swapRouterAddress = utils_1.uniswapV2RouterAddresses[hre.network.name];
|
|
87
|
+
if (swapRouterAddress) {
|
|
88
|
+
const swapRouterAddressResult = yield (0, deploy_one_1.deployOne)(args, hre, 'ERC20SwapToPay', {
|
|
89
|
+
constructorArguments: [swapRouterAddress, erc20FeeProxyAddress],
|
|
90
|
+
artifact: lib_1.erc20SwapToPayArtifact,
|
|
91
|
+
nonceCondition: 5,
|
|
92
|
+
});
|
|
93
|
+
deploymentResults.push(swapRouterAddressResult);
|
|
94
|
+
if (erc20ConversionAddress) {
|
|
95
|
+
const swapConversionResult = yield (0, erc20_swap_to_conversion_1.deploySwapConversion)(Object.assign(Object.assign({}, args), { conversionProxyAddress: erc20ConversionAddress, swapProxyAddress: swapRouterAddress }), hre);
|
|
96
|
+
deploymentResults.push(swapConversionResult);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(` ${'ERC20SwapToConversion:'.padEnd(30, ' ')}(ERC20 Conversion missing)`);
|
|
100
|
+
switchToSimulation();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.log(` ${'ERC20SwapToPay:'.padEnd(30, ' ')}(swap router missing)`);
|
|
105
|
+
console.log(` ${'ERC20SwapToConversion:'.padEnd(30, ' ')}(swap router missing)`);
|
|
106
|
+
switchToSimulation();
|
|
107
|
+
simulationSuccess = false;
|
|
108
|
+
}
|
|
109
|
+
return deploymentResults;
|
|
110
|
+
});
|
|
111
|
+
/*
|
|
112
|
+
* Batch 4
|
|
113
|
+
* - ETHConversionProxy
|
|
114
|
+
*/
|
|
115
|
+
const runDeploymentBatch_4 = (chainlinkConversionPathAddress, ethFeeProxyAddress) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
116
|
+
// Deploy ETH Conversion
|
|
117
|
+
const ethConversionResult = yield (0, conversion_proxy_1.deployETHConversionProxy)(Object.assign(Object.assign({}, args), { chainlinkConversionPathAddress,
|
|
118
|
+
ethFeeProxyAddress }), hre);
|
|
119
|
+
deploymentResults.push(ethConversionResult);
|
|
120
|
+
// Administrate again whitelist admins for nonce consistency (due to 1 failing tx on Fantom)
|
|
121
|
+
const currentNonce = yield deployer.getTransactionCount();
|
|
122
|
+
if (currentNonce === 9) {
|
|
123
|
+
if (hre.network.name === 'fantom') {
|
|
124
|
+
if (chainlinkInstance) {
|
|
125
|
+
if (!process.env.ADMIN_WALLET_ADDRESS) {
|
|
126
|
+
throw new Error('Chainlink was deployed but no ADMIN_WALLET_ADDRESS was provided.');
|
|
127
|
+
}
|
|
128
|
+
if (args.simulate === false) {
|
|
129
|
+
yield chainlinkInstance.addWhitelistAdmin(process.env.ADMIN_WALLET_ADDRESS);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log('[i] Simulating addWhitelistAdmin to chainlinkInstance');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Atificially increase nonce for every other network
|
|
138
|
+
yield deployer.sendTransaction({ to: deployer.address });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (currentNonce < 9) {
|
|
142
|
+
console.warn(`Warning: got nonce ${currentNonce} instead of 9`);
|
|
143
|
+
switchToSimulation();
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
// #endregion
|
|
147
|
+
// #region MAIN - Deployments
|
|
148
|
+
// Batch 1
|
|
149
|
+
yield runEasyDeployment({
|
|
150
|
+
contractName: 'EthereumProxy',
|
|
151
|
+
artifact: lib_1.ethereumProxyArtifact,
|
|
152
|
+
nonceCondition: 0,
|
|
153
|
+
});
|
|
154
|
+
const { address: erc20FeeProxyAddress } = yield runEasyDeployment({
|
|
155
|
+
contractName: 'ERC20FeeProxy',
|
|
156
|
+
artifact: lib_1.erc20FeeProxyArtifact,
|
|
157
|
+
nonceCondition: 1,
|
|
158
|
+
});
|
|
159
|
+
const { instance: chainlinkInstance, address: chainlinkInstanceAddress, } = yield runEasyDeployment({
|
|
160
|
+
contractName: 'ChainlinkConversionPath',
|
|
161
|
+
artifact: lib_1.chainlinkConversionPath,
|
|
162
|
+
nonceCondition: 2,
|
|
163
|
+
});
|
|
164
|
+
// Batch 2
|
|
165
|
+
yield runDeploymentBatch_2(chainlinkInstance, erc20FeeProxyAddress);
|
|
166
|
+
// Batch 3
|
|
167
|
+
const { address: ethFeeProxyAddress } = yield runEasyDeployment({
|
|
168
|
+
contractName: 'EthereumFeeProxy',
|
|
169
|
+
artifact: lib_1.ethereumFeeProxyArtifact,
|
|
170
|
+
nonceCondition: 7,
|
|
171
|
+
});
|
|
172
|
+
// Batch 4
|
|
173
|
+
yield runDeploymentBatch_4(chainlinkInstanceAddress, ethFeeProxyAddress);
|
|
174
|
+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
175
|
+
// Add future batches above this line
|
|
176
|
+
console.log('Done deploying. Summary:');
|
|
177
|
+
deploymentResults
|
|
178
|
+
.filter((x) => !!x)
|
|
179
|
+
.forEach((res) => {
|
|
180
|
+
console.log(` ${res.contractName.concat(':').padEnd(30, ' ')}${res.address}`);
|
|
181
|
+
});
|
|
182
|
+
// #endregion
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
console.error(e);
|
|
186
|
+
}
|
|
187
|
+
const nbDeployments = deploymentResults.filter((val) => (val === null || val === void 0 ? void 0 : val.type) === 'deployed').length;
|
|
188
|
+
const verificationPromises = deploymentResults
|
|
189
|
+
.map((val) => val === null || val === void 0 ? void 0 : val.verificationPromise)
|
|
190
|
+
.filter(Boolean);
|
|
191
|
+
// #region MAIN - Conclusion and verification
|
|
192
|
+
if (nbDeployments > 0) {
|
|
193
|
+
console.log(`--- ${nbDeployments} deployements were made. ---`, hre.network.name === 'private'
|
|
194
|
+
? ''
|
|
195
|
+
: [
|
|
196
|
+
``,
|
|
197
|
+
`TODO:`,
|
|
198
|
+
`* CRITICAL: update src/lib/artifacts files, and push changes NOW !`,
|
|
199
|
+
`* IMPORTANT: execute updateAggregatorsList() on conversionPaths`,
|
|
200
|
+
`* : then update the lib with chainlinkPath util in toolbox and push changes`,
|
|
201
|
+
`* OTHER: run \`yarn hardhat prepare-live-payments --network ${hre.network.name}\``,
|
|
202
|
+
`* OTHER: execute administration tasks: approveRouterToSpend(), approvePaymentProxyToSpend() on swaps`,
|
|
203
|
+
`* OTHER: deploy subgraphes where needed`,
|
|
204
|
+
].join('\r\n'));
|
|
205
|
+
if (verificationPromises.length > 0) {
|
|
206
|
+
let nbSuccessfulVerifications = 0;
|
|
207
|
+
console.log('Contracts verifications in progress...');
|
|
208
|
+
yield Promise.all(verificationPromises.map((verificationPromise) => {
|
|
209
|
+
return verificationPromise
|
|
210
|
+
? verificationPromise.then((success) => {
|
|
211
|
+
nbSuccessfulVerifications += success ? 1 : 0;
|
|
212
|
+
console.log(`${nbSuccessfulVerifications} / ${nbDeployments}...`);
|
|
213
|
+
})
|
|
214
|
+
: Promise.resolve();
|
|
215
|
+
}));
|
|
216
|
+
console.log(`${nbSuccessfulVerifications} verification successes !`);
|
|
217
|
+
if (nbSuccessfulVerifications < nbDeployments) {
|
|
218
|
+
console.log(`Some verifications failed, check logs and do them manually.`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
console.log(`--- No deployment was made. ---`);
|
|
224
|
+
}
|
|
225
|
+
if (simulationSuccess === false) {
|
|
226
|
+
console.log('--- DO NOT PROCEED ---');
|
|
227
|
+
}
|
|
228
|
+
// #endregion
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
exports.deployAllPaymentContracts = deployAllPaymentContracts;
|
|
232
|
+
//# sourceMappingURL=deploy-payments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-payments.js","sourceRoot":"","sources":["../../scripts/deploy-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HardhatRuntimeEnvironment } from 'hardhat/types';
|
|
2
|
+
export declare function deploySwapConversion(args: {
|
|
3
|
+
conversionProxyAddress?: string;
|
|
4
|
+
swapProxyAddress?: string;
|
|
5
|
+
}, hre: HardhatRuntimeEnvironment): Promise<import("./deploy-one").DeploymentResult<import("ethers").Contract>>;
|
|
6
|
+
/**
|
|
7
|
+
* Prepares ERC20 approvals for the swap conversion contract.
|
|
8
|
+
* */
|
|
9
|
+
export declare function prepareSwapConversion(hre: HardhatRuntimeEnvironment, convSwapProxyAddress?: string): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=erc20-swap-to-conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc20-swap-to-conversion.d.ts","sourceRoot":"","sources":["../../scripts/erc20-swap-to-conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAO1D,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IAAE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACpE,GAAG,EAAE,yBAAyB,+EAoB/B;AAED;;KAEK;AACL,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,yBAAyB,EAC9B,oBAAoB,CAAC,EAAE,MAAM,mBA0B9B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareSwapConversion = exports.deploySwapConversion = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const lib_1 = require("../src/lib");
|
|
6
|
+
const deploy_one_1 = require("./deploy-one");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const contractName = 'ERC20SwapToConversion';
|
|
9
|
+
function deploySwapConversion(args, hre) {
|
|
10
|
+
var _a;
|
|
11
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
12
|
+
if (!args.conversionProxyAddress) {
|
|
13
|
+
// FIXME: should try to retrieve information from artifacts instead
|
|
14
|
+
console.error(`Missing conversion proxy on ${hre.network.name}, cannot deploy ${contractName}.`);
|
|
15
|
+
}
|
|
16
|
+
if (!utils_1.uniswapV2RouterAddresses[hre.network.name] && !args.swapProxyAddress) {
|
|
17
|
+
console.error(`Missing swap router, cannot deploy ${contractName}.`);
|
|
18
|
+
}
|
|
19
|
+
const deployment = yield (0, deploy_one_1.deployOne)(args, hre, contractName, {
|
|
20
|
+
constructorArguments: [
|
|
21
|
+
(_a = utils_1.uniswapV2RouterAddresses[hre.network.name]) !== null && _a !== void 0 ? _a : args.swapProxyAddress,
|
|
22
|
+
args.conversionProxyAddress,
|
|
23
|
+
],
|
|
24
|
+
artifact: lib_1.erc20SwapConversionArtifact,
|
|
25
|
+
});
|
|
26
|
+
return deployment;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
exports.deploySwapConversion = deploySwapConversion;
|
|
30
|
+
/**
|
|
31
|
+
* Prepares ERC20 approvals for the swap conversion contract.
|
|
32
|
+
* */
|
|
33
|
+
function prepareSwapConversion(hre, convSwapProxyAddress) {
|
|
34
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
35
|
+
const [, signer] = yield hre.ethers.getSigners();
|
|
36
|
+
if (!signer) {
|
|
37
|
+
console.warn(`Warning: no signer given for administration tasks, cannot do ERC20 approvals.`);
|
|
38
|
+
}
|
|
39
|
+
const mainFactory = yield hre.ethers.getContractFactory(contractName, signer);
|
|
40
|
+
const convSwapProxy = convSwapProxyAddress
|
|
41
|
+
? mainFactory.attach(convSwapProxyAddress)
|
|
42
|
+
: lib_1.erc20SwapConversionArtifact.connect(hre.network.name, signer);
|
|
43
|
+
if (!defaultTokens[hre.network.name]) {
|
|
44
|
+
console.log(`No default token to approve for ${contractName} on ${hre.network.name}`);
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
if (convSwapProxy) {
|
|
48
|
+
console.log(`Approving tokens for swaps...`);
|
|
49
|
+
const approbationTransactions = defaultTokens[hre.network.name].map((erc20Address) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
50
|
+
yield convSwapProxy.approveRouterToSpend(erc20Address);
|
|
51
|
+
yield convSwapProxy.approvePaymentProxyToSpend(erc20Address);
|
|
52
|
+
console.log(`Approved: ${erc20Address}`);
|
|
53
|
+
}));
|
|
54
|
+
yield Promise.all(approbationTransactions);
|
|
55
|
+
return defaultTokens[hre.network.name].length;
|
|
56
|
+
}
|
|
57
|
+
return 0;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.prepareSwapConversion = prepareSwapConversion;
|
|
61
|
+
/**
|
|
62
|
+
* Main tokens to be used to swap, per chain.
|
|
63
|
+
* The required ERC20 approvals for swapping will be performed on these tokens.
|
|
64
|
+
*/
|
|
65
|
+
const defaultTokens = {
|
|
66
|
+
// FIXME: add main tokens used on all chains
|
|
67
|
+
private: [
|
|
68
|
+
// ERC20Alpha
|
|
69
|
+
'0x38cF23C52Bb4B13F051Aec09580a2dE845a7FA35',
|
|
70
|
+
// TestERC20
|
|
71
|
+
'0x9FBDa871d559710256a2502A2517b794B482Db40',
|
|
72
|
+
],
|
|
73
|
+
rinkeby: [
|
|
74
|
+
// FAU
|
|
75
|
+
'0xfab46e002bbf0b4509813474841e0716e6730136',
|
|
76
|
+
// CTBK
|
|
77
|
+
'0x995d6a8c21f24be1dd04e105dd0d83758343e258',
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=erc20-swap-to-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc20-swap-to-conversion.js","sourceRoot":"","sources":["../../scripts/erc20-swap-to-conversion.ts"],"names":[],"mappings":";;;;AACA,oCAAyD;AACzD,6CAAyC;AACzC,mCAAmD;AAEnD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,SAAsB,oBAAoB,CACxC,IAAoE,EACpE,GAA8B;;;QAE9B,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,mEAAmE;YACnE,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,CAAC,OAAO,CAAC,IAAI,mBAAmB,YAAY,GAAG,CAClF,CAAC;SACH;QACD,IAAI,CAAC,gCAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACzE,OAAO,CAAC,KAAK,CAAC,sCAAsC,YAAY,GAAG,CAAC,CAAC;SACtE;QACD,MAAM,UAAU,GAAG,MAAM,IAAA,sBAAS,EAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE;YAC1D,oBAAoB,EAAE;gBACpB,MAAA,gCAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAC,gBAAgB;gBACnE,IAAI,CAAC,sBAAsB;aAC5B;YACD,QAAQ,EAAE,iCAA2B;SACtC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;;CACnB;AAtBD,oDAsBC;AAED;;KAEK;AACL,SAAsB,qBAAqB,CACzC,GAA8B,EAC9B,oBAA6B;;QAE7B,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;SAC/F;QAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,aAAa,GAAG,oBAAoB;YACxC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC1C,CAAC,CAAC,iCAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,mCAAmC,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtF,OAAO,CAAC,CAAC;SACV;QACD,IAAI,aAAa,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,MAAM,uBAAuB,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAO,YAAY,EAAE,EAAE;gBACzF,MAAM,aAAa,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,aAAa,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;SAC/C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CAAA;AA5BD,sDA4BC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAoC;IACrD,4CAA4C;IAC5C,OAAO,EAAE;QACP,aAAa;QACb,4CAA4C;QAC5C,YAAY;QACZ,4CAA4C;KAC7C;IACD,OAAO,EAAE;QACP,MAAM;QACN,4CAA4C;QAC5C,OAAO;QACP,4CAA4C;KAC7C;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HardhatRuntimeEnvironment } from 'hardhat/types';
|
|
2
|
+
export default function deploy(args: {
|
|
3
|
+
chainlinkConversionPathAddress?: string;
|
|
4
|
+
ethFeeProxyAddress?: string;
|
|
5
|
+
nativeTokenHash?: string;
|
|
6
|
+
}, hre: HardhatRuntimeEnvironment): Promise<import("./deploy-one").DeploymentResult<import("ethers").Contract> | undefined>;
|
|
7
|
+
//# sourceMappingURL=eth-conversion-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth-conversion-proxy.d.ts","sourceRoot":"","sources":["../../scripts/eth-conversion-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1D,wBAA8B,MAAM,CAClC,IAAI,EAAE;IACJ,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,EACD,GAAG,EAAE,yBAAyB,2FA+B/B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const deploy_one_1 = require("./deploy-one");
|
|
5
|
+
function deploy(args, hre) {
|
|
6
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
7
|
+
const contractName = 'EthConversionProxy';
|
|
8
|
+
if (!args.chainlinkConversionPathAddress) {
|
|
9
|
+
// FIXME: should try to retrieve information from artifacts instead
|
|
10
|
+
console.error(`Missing ChainlinkConversionPath on ${hre.network.name}, cannot deploy ${contractName}.`);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (!args.ethFeeProxyAddress) {
|
|
14
|
+
// FIXME: should try to retrieve information from artifacts instead
|
|
15
|
+
console.error(`Missing EthereumFeeProxy on ${hre.network.name}, cannot deploy ${contractName}.`);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!args.nativeTokenHash) {
|
|
19
|
+
console.error(`Missing nativeTokenHash on ${hre.network.name}, cannot deploy ${contractName}.`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
return (0, deploy_one_1.deployOne)(args, hre, contractName, {
|
|
23
|
+
constructorArguments: [
|
|
24
|
+
args.ethFeeProxyAddress,
|
|
25
|
+
args.chainlinkConversionPathAddress,
|
|
26
|
+
args.nativeTokenHash,
|
|
27
|
+
],
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.default = deploy;
|
|
32
|
+
//# sourceMappingURL=eth-conversion-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth-conversion-proxy.js","sourceRoot":"","sources":["../../scripts/eth-conversion-proxy.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAEzC,SAA8B,MAAM,CAClC,IAIC,EACD,GAA8B;;QAE9B,MAAM,YAAY,GAAG,oBAAoB,CAAC;QAE1C,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACxC,mEAAmE;YACnE,OAAO,CAAC,KAAK,CACX,sCAAsC,GAAG,CAAC,OAAO,CAAC,IAAI,mBAAmB,YAAY,GAAG,CACzF,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,mEAAmE;YACnE,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,CAAC,OAAO,CAAC,IAAI,mBAAmB,YAAY,GAAG,CAClF,CAAC;YACF,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,CAAC,IAAI,mBAAmB,YAAY,GAAG,CAAC,CAAC;YAChG,OAAO;SACR;QAED,OAAO,IAAA,sBAAS,EAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE;YACxC,oBAAoB,EAAE;gBACpB,IAAI,CAAC,kBAAkB;gBACvB,IAAI,CAAC,8BAA8B;gBACnC,IAAI,CAAC,eAAe;aACrB;SACF,CAAC,CAAC;IACL,CAAC;CAAA;AArCD,yBAqCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-payments.d.ts","sourceRoot":"","sources":["../../scripts/prepare-payments.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAI1D,wBAAsB,eAAe,CAAC,GAAG,EAAE,yBAAyB,iBAuBnE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preparePayments = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("@nomiclabs/hardhat-ethers");
|
|
6
|
+
const erc20_swap_to_conversion_1 = require("./erc20-swap-to-conversion");
|
|
7
|
+
// Deploys, set up the contracts
|
|
8
|
+
function preparePayments(hre) {
|
|
9
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
10
|
+
try {
|
|
11
|
+
const [, signer] = yield hre.ethers.getSigners();
|
|
12
|
+
if (!signer) {
|
|
13
|
+
console.error('ERROR: Need ADMIN_PRIVATE_KEY (or second signer) to do preparation tasks.');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
console.log(`*** Preparing payments with the account: ${signer.address} on the network ${hre.network.name} (${hre.network.config.chainId}) ***`);
|
|
17
|
+
const nbOps = yield (0, erc20_swap_to_conversion_1.prepareSwapConversion)(hre);
|
|
18
|
+
if (nbOps > 0) {
|
|
19
|
+
console.log(`--- ${nbOps} preparatory tx were made. ---`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log(`--- No preparatory tx was made. ---`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.error(e);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
exports.preparePayments = preparePayments;
|
|
31
|
+
//# sourceMappingURL=prepare-payments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-payments.js","sourceRoot":"","sources":["../../scripts/prepare-payments.ts"],"names":[],"mappings":";;;;AAAA,qCAAmC;AAEnC,yEAAmE;AAEnE,gCAAgC;AAChC,SAAsB,eAAe,CAAC,GAA8B;;QAClE,IAAI;YACF,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAC3F,OAAO;aACR;YAED,OAAO,CAAC,GAAG,CACT,4CAA4C,MAAM,CAAC,OAAO,mBAAmB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,OAAO,CACpI,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,IAAA,gDAAqB,EAAC,GAAG,CAAC,CAAC;YAE/C,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,gCAAgC,CAAC,CAAC;aAC3D;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;aACpD;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;CAAA;AAvBD,0CAuBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../scripts/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAc3D,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uniswapV2RouterAddresses = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* List of contract addresses with the same interface as Uniswap V2 Router.
|
|
6
|
+
* Used for SwapToPay and SwapToConvert.
|
|
7
|
+
*/
|
|
8
|
+
exports.uniswapV2RouterAddresses = {
|
|
9
|
+
mainnet: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
|
|
10
|
+
ropsten: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
|
|
11
|
+
rinkeby: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
|
|
12
|
+
kovan: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
|
|
13
|
+
private: '0x4E72770760c011647D4873f60A3CF6cDeA896CD8',
|
|
14
|
+
bsctest: '0x10ED43C718714eb63d5aA57B78B54704E256024E',
|
|
15
|
+
xdai: '0x1C232F01118CB8B424793ae03F870aa7D0ac7f77',
|
|
16
|
+
// https://layer3.gitbook.io/spirit-swap/contracts
|
|
17
|
+
fantom: '0x16327e3fbdaca3bcf7e38f5af2599d2ddc33ae52',
|
|
18
|
+
// https://github.com/QuickSwap/quickswap-core
|
|
19
|
+
matic: '0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff',
|
|
20
|
+
// https://app.ubeswap.org/#/swap
|
|
21
|
+
celo: '0x7D28570135A2B1930F331c507F65039D4937f66c',
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../scripts/utils.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,wBAAwB,GAA2B;IAC9D,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4CAA4C;IACrD,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4CAA4C;IACrD,IAAI,EAAE,4CAA4C;IAClD,kDAAkD;IAClD,MAAM,EAAE,4CAA4C;IACpD,8CAA8C;IAC9C,KAAK,EAAE,4CAA4C;IACnD,iCAAiC;IACjC,IAAI,EAAE,4CAA4C;CACnD,CAAC"}
|