vana-sdk
Version:
A TypeScript library for interacting with Vana Network smart contracts
30 lines • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getContractController = getContractController;
const viem_1 = require("viem");
const abi_1 = require("../abi");
const addresses_1 = require("../config/addresses");
const client_1 = require("../core/client");
const chains_1 = require("../config/chains");
// Cache for contract instances
const controllers = new Map();
/**
* Gets a typed contract instance for the specified contract name
*
* @param contractName - Name of the contract to instantiate
* @param client - Optional viem client instance
* @returns A typed contract instance with methods corresponding to the contract's ABI
*/
function getContractController(contract, client = (0, client_1.createClient)()) {
let controller = controllers.get(contract);
if (!controller) {
controller = (0, viem_1.getContract)({
address: (0, addresses_1.getContractAddress)(client.chain?.id ?? chains_1.vanaMainnet.id, contract),
abi: (0, abi_1.getAbi)(contract),
client,
});
controllers.set(contract, controller);
}
return controller;
}
//# sourceMappingURL=contractController.js.map