@devasher/kuru-sdk
Version:
Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)
71 lines • 3.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MonadDeployer = void 0;
// ============ External Imports ============
const ethers_1 = require("ethers");
const utils_1 = require("../utils");
// ============ Config Imports ============
const MonadDeployer_json_1 = __importDefault(require("../../abi/MonadDeployer.json"));
const txConfig_1 = __importDefault(require("../utils/txConfig"));
class MonadDeployer {
static async constructDeployTokenAndMarketTransaction(signer, deployerAddress, tokenParams, marketParams, txOptions) {
const address = await signer.getAddress();
const deployer = new ethers_1.ethers.Contract(deployerAddress, MonadDeployer_json_1.default.abi, signer);
// Get the kuruCollectiveFee
const kuruCollectiveFee = await deployer.kuruCollectiveFee();
const deployerInterface = new ethers_1.ethers.Interface(MonadDeployer_json_1.default.abi);
const data = deployerInterface.encodeFunctionData('deployTokenAndMarket', [tokenParams, marketParams]);
return (0, txConfig_1.default)({
from: address,
to: deployerAddress,
data,
value: marketParams.nativeTokenAmount + kuruCollectiveFee,
signer,
txOptions,
});
}
async deployTokenAndMarket(signer, deployerAddress, tokenParams, marketParams, txOptions) {
const deployer = new ethers_1.ethers.Contract(deployerAddress, MonadDeployer_json_1.default.abi, signer);
try {
const tx = await MonadDeployer.constructDeployTokenAndMarketTransaction(signer, deployerAddress, tokenParams, marketParams, txOptions);
const transaction = await signer.sendTransaction(tx);
const receipt = await transaction.wait(1);
if (!receipt) {
throw new Error('Transaction receipt is null');
}
const pumpingTimeLog = receipt.logs.find((log) => {
try {
const parsedLog = deployer.interface.parseLog(log);
return parsedLog && parsedLog.name === 'PumpingTime';
}
catch (_a) {
return false;
}
});
if (!pumpingTimeLog) {
throw new Error('PumpingTime event not found in transaction receipt');
}
const parsedLog = deployer.interface.parseLog(pumpingTimeLog);
if (!parsedLog) {
throw new Error('Failed to parse PumpingTime event log');
}
return {
tokenAddress: parsedLog.args.token,
marketAddress: parsedLog.args.market,
hash: receipt.hash,
};
}
catch (e) {
console.log({ e });
if (!e.error) {
throw e;
}
throw (0, utils_1.extractErrorMessage)(e);
}
}
}
exports.MonadDeployer = MonadDeployer;
//# sourceMappingURL=monadDeployer.js.map