Files
aitbc/dev/env/node_modules/micro-eth-signer/net/uniswap-common.js
aitbc 816e258d4c refactor: move brother_node development artifact to dev/test-nodes subdirectory
Development Artifact Cleanup:
 BROTHER_NODE REORGANIZATION: Moved development test node to appropriate location
- dev/test-nodes/brother_node/: Moved from root directory for better organization
- Contains development configuration, test logs, and test chain data
- No impact on production systems - purely development/testing artifact

 DEVELOPMENT ARTIFACTS IDENTIFIED:
- Chain ID: aitbc-brother-chain (test/development chain)
- Ports: 8010 (P2P) and 8011 (RPC) - different from production
- Environment: .env file with test configuration
- Logs: rpc.log and node.log from development testing session (March 15, 2026)

 ROOT DIRECTORY CLEANUP: Removed development clutter from production directory
- brother_node/ moved to dev/test-nodes/brother_node/
- Root directory now contains only production-ready components
- Development artifacts properly organized in dev/ subdirectory

DIRECTORY STRUCTURE IMPROVEMENT:
📁 dev/test-nodes/: Development and testing node configurations
🏗️ Root Directory: Clean production structure with only essential components
🧪 Development Isolation: Test environments separated from production

BENEFITS:
 Clean Production Directory: No development artifacts in root
 Better Organization: Development nodes grouped in dev/ subdirectory
 Clear Separation: Production vs development environments clearly distinguished
 Maintainability: Easier to identify and manage development components

RESULT: Successfully moved brother_node development artifact to dev/test-nodes/ subdirectory, cleaning up the root directory while preserving development testing environment for future use.
2026-03-30 17:09:06 +02:00

154 lines
5.2 KiB
JavaScript
Executable File

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UniswapAbstract = exports.WETH = exports.COMMON_BASES = exports.DEFAULT_SWAP_OPT = void 0;
exports.addPercent = addPercent;
exports.isPromise = isPromise;
exports.awaitDeep = awaitDeep;
exports.wrapContract = wrapContract;
exports.sortTokens = sortTokens;
exports.isValidEthAddr = isValidEthAddr;
exports.isValidUniAddr = isValidUniAddr;
const index_ts_1 = require("../abi/index.js");
const index_ts_2 = require("../index.js");
const utils_ts_1 = require("../utils.js");
exports.DEFAULT_SWAP_OPT = { slippagePercent: 0.5, ttl: 30 * 60 };
function addPercent(n, _perc) {
const perc = BigInt((_perc * 10000) | 0);
const p100 = BigInt(100) * BigInt(10000);
return ((p100 + perc) * n) / p100;
}
function isPromise(o) {
if (!o || !['object', 'function'].includes(typeof o))
return false;
return typeof o.then === 'function';
}
async function awaitDeep(o, ignore_errors) {
let promises = [];
const traverse = (o) => {
if (Array.isArray(o))
return o.map((i) => traverse(i));
if ((0, utils_ts_1.isBytes)(o))
return o;
if (isPromise(o))
return { awaitDeep: promises.push(o) };
if (typeof o === 'object') {
let ret = {};
for (let k in o)
ret[k] = traverse(o[k]);
return ret;
}
return o;
};
let out = traverse(o);
let values;
if (!ignore_errors)
values = await Promise.all(promises);
else {
values = (await Promise.allSettled(promises)).map((i) => i.status === 'fulfilled' ? i.value : undefined);
}
const trBack = (o) => {
if (Array.isArray(o))
return o.map((i) => trBack(i));
if ((0, utils_ts_1.isBytes)(o))
return o;
if (typeof o === 'object') {
if (typeof o === 'object' && o.awaitDeep)
return values[o.awaitDeep - 1];
let ret = {};
for (let k in o)
ret[k] = trBack(o[k]);
return ret;
}
return o;
};
return trBack(out);
}
exports.COMMON_BASES = [
'WETH',
'DAI',
'USDC',
'USDT',
'COMP',
'MKR',
'WBTC',
'AMPL',
]
.map((i) => (0, index_ts_1.tokenFromSymbol)(i))
.filter((i) => !!i);
exports.WETH = (0, index_ts_1.tokenFromSymbol)('WETH').contract;
if (!exports.WETH)
throw new Error('WETH is undefined!');
function wrapContract(contract) {
contract = contract.toLowerCase();
return contract === 'eth' ? exports.WETH : contract;
}
function sortTokens(a, b) {
a = wrapContract(a);
b = wrapContract(b);
if (a === b)
throw new Error('uniswap.sortTokens: same token!');
return a < b ? [a, b] : [b, a];
}
function isValidEthAddr(address) {
return index_ts_2.addr.isValid(address);
}
function isValidUniAddr(address) {
return address === 'eth' || isValidEthAddr(address);
}
function getToken(token) {
if (typeof token === 'string' && token.toLowerCase() === 'eth')
return { symbol: 'ETH', decimals: 18, contract: 'eth' };
return token;
}
class UniswapAbstract {
constructor(net) {
this.net = net;
}
// private async coinInfo(netName: string) {
// if (!validateAddr(netName)) return;
// if (netName === 'eth') return { symbol: 'ETH', decimals: 18 };
// //return await this.mgr.tokenInfo('eth', netName);
// }
async swap(fromCoin, toCoin, amount, opt = exports.DEFAULT_SWAP_OPT) {
const fromInfo = getToken(fromCoin);
const toInfo = getToken(toCoin);
if (!fromInfo || !toInfo)
return;
const fromContract = fromInfo.contract.toLowerCase();
const toContract = toInfo.contract.toLowerCase();
if (!fromContract || !toContract)
return;
const fromDecimal = (0, utils_ts_1.createDecimal)(fromInfo.decimals);
const toDecimal = (0, utils_ts_1.createDecimal)(toInfo.decimals);
const inputAmount = fromDecimal.decode(amount);
try {
const path = await this.bestPath(fromContract, toContract, inputAmount);
const expectedAmount = toDecimal.encode(path.amountOut);
return {
name: this.name,
expectedAmount,
tx: async (_fromAddress, toAddress) => {
const txUni = this.txData(toAddress, fromContract, toContract, path, inputAmount, undefined, opt);
return {
amount: utils_ts_1.weieth.encode(txUni.value),
address: txUni.to,
expectedAmount,
data: utils_ts_1.ethHex.encode(txUni.data),
allowance: txUni.allowance && {
token: txUni.allowance.token,
contract: this.contract,
amount: fromDecimal.encode(txUni.allowance.amount),
},
};
},
};
}
catch (e) {
// @ts-ignore
console.log('E', e);
return;
}
}
}
exports.UniswapAbstract = UniswapAbstract;
//# sourceMappingURL=uniswap-common.js.map