sdk-utils
Version:
TEST TEST
146 lines • 6.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAccount = exports.divest = exports.switching = exports.addInvest = exports.invest = exports.withdraw = exports.deposit = exports.approveToken = void 0;
const index_1 = require("./index");
const lib_config_1 = require("./lib_config");
const lib_abi_1 = require("./lib_abi");
const lib_utils_1 = require("./lib.utils");
/**
* 对token授权
* @param token_address
* @param type
* @param callback
*/
async function approveToken(token_address, type, callback) {
let destina_address = lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].mulBank;
if (type === "deposit") {
}
else if (type === "invest") {
destina_address = lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].v3strategy;
}
lib_utils_1.approveToken(token_address, destina_address, callback);
}
exports.approveToken = approveToken;
/**
* deposit买入
* @param token_address
* @param amount
* @param callback
*/
async function deposit(token_address, amount, callback) {
let mulBankContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.MULBANK, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].mulBank);
let bigAmount = lib_utils_1.convertNormalToBigNumber(amount, await lib_utils_1.getDecimal(token_address));
lib_utils_1.executeContract(mulBankContract, "deposit", 0, [token_address, bigAmount], callback);
}
exports.deposit = deposit;
/**
* withdraw 提出
* @param token_address
* @param amount
* @param callback
*/
async function withdraw(token_address, amount, callback) {
let mulBankContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.MULBANK, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].mulBank);
let bigAmount = lib_utils_1.convertNormalToBigNumber(amount, await lib_utils_1.getDecimal(token_address));
lib_utils_1.executeContract(mulBankContract, "withdraw", 0, [token_address, bigAmount], callback);
}
exports.withdraw = withdraw;
/**
* 投资
* @param token0_address
* @param token1_address
* @param fee
* @param amount0
* @param amount1
* @param leftPrice
* @param rightPrice
* @param callback
*/
async function invest(token0_address, token1_address, fee, amount0, amount1, leftPrice, rightPrice, callback) {
let v3strategyContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.UNISWAPV3STRATEGY, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].v3strategy);
let tickLower = index_1.getTick(token0_address, token1_address, +leftPrice);
let tickUpper = index_1.getTick(token0_address, token1_address, +rightPrice);
if (+tickLower > +tickUpper) {
[tickLower, tickUpper] = [tickUpper, tickLower];
}
let bigAmount0 = lib_utils_1.convertNormalToBigNumber(amount0, await lib_utils_1.getDecimal(token0_address));
let bigAmount1 = lib_utils_1.convertNormalToBigNumber(amount1, await lib_utils_1.getDecimal(token1_address));
lib_utils_1.executeContract(v3strategyContract, "invest", 0, [
{
"token0": token0_address,
"token1": token1_address,
"fee": fee,
"amount0Desired": bigAmount0,
"amount1Desired": bigAmount1,
"tickLower": tickLower,
"tickUpper": tickUpper
}
], callback);
}
exports.invest = invest;
/**
* 追加
* @param token0_address
* @param token1_address
* @param id
* @param amount0
* @param amount1
* @param callback
*/
async function addInvest(token0_address, token1_address, id, amount0, amount1, callback) {
let v3strategyContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.UNISWAPV3STRATEGY, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].v3strategy);
let bigAmount0 = lib_utils_1.convertNormalToBigNumber(amount0, await lib_utils_1.getDecimal(token0_address));
let bigAmount1 = lib_utils_1.convertNormalToBigNumber(amount1, await lib_utils_1.getDecimal(token1_address));
lib_utils_1.executeContract(v3strategyContract, "add", 0, [id, bigAmount0, bigAmount1], callback);
}
exports.addInvest = addInvest;
/**
* 切仓
* @param token0_address
* @param token1_address
* @param id
* @param amount0
* @param amount1
* @param leftPrice
* @param rightPrice
* @param hedge
* @param callback
*/
async function switching(token0_address, token1_address, id, amount0, amount1, leftPrice, rightPrice, hedge, callback) {
let v3strategyContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.UNISWAPV3STRATEGY, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].v3strategy);
let tickLower = index_1.getTick(token0_address, token1_address, +leftPrice);
let tickUpper = index_1.getTick(token0_address, token1_address, +rightPrice);
if (+tickLower > +tickUpper) {
[tickLower, tickUpper] = [tickUpper, tickLower];
}
let bigAmount0 = lib_utils_1.convertNormalToBigNumber(amount0, await lib_utils_1.getDecimal(token0_address));
let bigAmount1 = lib_utils_1.convertNormalToBigNumber(amount1, await lib_utils_1.getDecimal(token1_address));
lib_utils_1.executeContract(v3strategyContract, "switching", 0, [id, {
tickLower: tickLower,
tickUpper: tickUpper,
amount0Desired: bigAmount0,
amount1Desired: bigAmount1,
}, hedge], callback);
}
exports.switching = switching;
/**
* 撤资
* @param id
* @param isclose
* @param callback
*/
function divest(id, isclose, callback) {
let v3strategyContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.UNISWAPV3STRATEGY, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].v3strategy);
lib_utils_1.executeContract(v3strategyContract, "divest", 0, [id, isclose], callback);
}
exports.divest = divest;
/**
* 创建账号(投资前先创建)
* @param callback
*/
function createAccount(callback) {
let mulWorkContract = new lib_utils_1.web3.eth.Contract(lib_abi_1.MULWORK, lib_config_1.ContractAddress[lib_config_1.userInfo.chainID].mulWork);
lib_utils_1.executeContract(mulWorkContract, "createAccount", 0, [], callback);
}
exports.createAccount = createAccount;
//# sourceMappingURL=execute.js.map