vasku
Version:
TVM-Solidity contract development framework
106 lines (105 loc) • 4.03 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.giverDeploy = exports.giverSend = exports.giverInfo = void 0;
const createGlobal_1 = require("../../global/createGlobal");
const printContract_1 = require("./printContract");
const contract_1 = require("../../../contract");
const validate_1 = require("./validate");
const suffixes_1 = require("../../../utils/suffixes");
const DEPLOY_VALUE = 0.1;
async function giverInfo(config, network) {
const global = await (0, createGlobal_1.createGlobal)(config, network);
try {
await (0, printContract_1.printContract)(global.giver.contract);
}
catch (e) {
await (0, printContract_1.printError)(e);
}
global.client.close();
}
exports.giverInfo = giverInfo;
async function giverSend(config, network, options) {
const sendParameters = (0, validate_1.validate)(options);
const global = await (0, createGlobal_1.createGlobal)(config, network);
const giver = global.giver;
const target = new contract_1.Contract({ address: options.to }, {
client: global.client
});
////////////////////////
// Check giver active //
////////////////////////
const giverAccountType = await giver.contract.accountType();
if (giverAccountType !== contract_1.AccountType.active) {
global.client.close();
await (0, printContract_1.printError)('Giver is not active');
await (0, printContract_1.printContract)(giver.contract);
return;
}
/////////////////////////
// Check giver balance //
/////////////////////////
const balance = await giver.contract.balance();
if (balance <= sendParameters.value) {
global.client.close();
await (0, printContract_1.printError)('Not enough balance on giver');
await (0, printContract_1.printContract)(giver.contract);
return;
}
/////////////
// Execute //
/////////////
try {
await (0, printContract_1.printContract)(giver.contract);
await (0, printContract_1.printEmptyLine)();
await (0, printContract_1.printContract)(target);
await (0, printContract_1.printMessage)('send');
await giver.send(sendParameters);
await target.wait();
await (0, printContract_1.printContract)(giver.contract);
await (0, printContract_1.printEmptyLine)();
await (0, printContract_1.printContract)(target);
}
catch (e) {
await (0, printContract_1.printError)(e);
}
global.client.close();
}
exports.giverSend = giverSend;
async function giverDeploy(config, network) {
const global = await (0, createGlobal_1.createGlobal)(config, network);
const giver = global.giver;
////////////////////////
// Check giver active //
////////////////////////
const giverAccountType = await giver.contract.accountType();
if (giverAccountType === contract_1.AccountType.active) {
global.client.close();
await (0, printContract_1.printError)('Giver is already deployed');
await (0, printContract_1.printContract)(giver.contract);
return;
}
/////////////////////////
// Check giver balance //
/////////////////////////
const balance = await giver.contract.balance();
if (balance <= BigInt(DEPLOY_VALUE * parseFloat(suffixes_1.B.toString()))) {
global.client.close();
await (0, printContract_1.printError)(`Not enough balance to deploy. ${DEPLOY_VALUE} coins is required`);
await (0, printContract_1.printContract)(giver.contract);
return;
}
/////////////
// Execute //
/////////////
try {
await (0, printContract_1.printContract)(giver.contract);
await (0, printContract_1.printMessage)('deploy');
await giver.deploy(DEPLOY_VALUE);
await (0, printContract_1.printContract)(giver.contract);
}
catch (e) {
await (0, printContract_1.printError)(e);
}
global.client.close();
}
exports.giverDeploy = giverDeploy;