locklift
Version:
Node JS framework for working with Ever contracts. Inspired by Truffle and Hardhat. Helps you to build, test, run and maintain your smart contracts.
57 lines (56 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Network = void 0;
const everscale_inpage_provider_1 = require("everscale-inpage-provider");
const everscale_standalone_client_1 = require("everscale-standalone-client");
const boc_1 = require("./lockliftWallet/boc");
const constants_1 = require("../../constants");
class Network {
signer;
accountStorage;
provider;
proxyNetwork = {};
snapshots;
clearBlockchainState;
constructor(proxyNetwork, signer, accountStorage, provider) {
this.signer = signer;
this.accountStorage = accountStorage;
this.provider = provider;
this.proxyNetwork = proxyNetwork;
this.snapshots = {
saveSnapshot: proxyNetwork.saveSnapshot.bind(proxyNetwork),
loadSnapshot: proxyNetwork.loadSnapshot.bind(proxyNetwork),
clearSnapshots: proxyNetwork.clearSnapshots.bind(proxyNetwork),
};
this.clearBlockchainState = this.proxyNetwork.resetBlockchainState.bind(proxyNetwork);
}
insertWallet = (address) => {
this.proxyNetwork.setAccount(address, boc_1.LOCKLIFT_WALLET_BOC, "accountStuffBoc");
const lockliftWallet = new everscale_standalone_client_1.MsigAccount({
address,
type: "SafeMultisig",
publicKey: this.signer.publicKey,
});
this.accountStorage.addAccount(lockliftWallet);
return lockliftWallet;
};
insertAccount = ({ boc, address, abi, type, }) => {
this.proxyNetwork.setAccount(address, boc, type || "accountStuffBoc");
return new this.provider.Contract(abi, address);
};
getWallet = (id) => {
const address = getLockliftWalletAddress(id.toString());
return this.insertWallet(new everscale_inpage_provider_1.Address(address));
};
getWallets = (count) => {
return Array.from({ length: count }, (_, i) => {
return this.getWallet(i);
});
};
getBlockchainConfig = () => this.proxyNetwork.getBlockchainConfig();
}
exports.Network = Network;
const getLockliftWalletAddress = (id = "0") => {
const [, addressTail] = constants_1.zeroAddress.toString().split(":");
return `${0}:777${addressTail}`.slice(0, constants_1.zeroAddress.toString().length - id.length).concat(id);
};