UNPKG

@etherspot/modular-sdk

Version:

Etherspot Modular SDK - build with ERC-7579 smart accounts modules

138 lines 4.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getChain = exports.getViemAddress = exports.getViemAccount = exports.getWalletClientFromAccount = exports.getWalletClientFromPrivateKey = exports.getPublicClientByChain = exports.getPublicClient = exports.isContract = void 0; exports.prepareAddress = prepareAddress; exports.prepareAddresses = prepareAddresses; exports.addressesEqual = addressesEqual; exports.isAddress = isAddress; const tslib_1 = require("tslib"); const viem_1 = require("viem"); const accounts_1 = require("viem/accounts"); const chains = tslib_1.__importStar(require("viem/chains")); const index_js_1 = require("../../network/index.js"); const constants_js_1 = require("../constants.js"); const isContract = async ({ client, address, }) => { const bytecode = await client.getBytecode({ address: address, }); return bytecode && bytecode !== '0x'; }; exports.isContract = isContract; const getPublicClient = ({ chainId, transport }) => { const publicClient = (0, viem_1.createPublicClient)({ chain: index_js_1.Networks[chainId].chain, transport: transport }); return publicClient; }; exports.getPublicClient = getPublicClient; const getPublicClientByChain = ({ chain, transport }) => { const publicClient = (0, viem_1.createPublicClient)({ chain: chain, transport: transport }); return publicClient; }; exports.getPublicClientByChain = getPublicClientByChain; const getWalletClientFromPrivateKey = ({ rpcUrl, chainId, privateKey }) => { return (0, viem_1.createWalletClient)({ account: (0, accounts_1.privateKeyToAccount)(privateKey), chain: index_js_1.Networks[chainId].chain, transport: (0, viem_1.http)(rpcUrl), }); }; exports.getWalletClientFromPrivateKey = getWalletClientFromPrivateKey; const getWalletClientFromAccount = ({ rpcUrl, chainId, account }) => { return (0, viem_1.createWalletClient)({ account: account, chain: index_js_1.Networks[chainId].chain, transport: (0, viem_1.http)(rpcUrl), }); }; exports.getWalletClientFromAccount = getWalletClientFromAccount; const getViemAccount = (privateKey) => { return (0, accounts_1.privateKeyToAccount)(privateKey); }; exports.getViemAccount = getViemAccount; const getViemAddress = (address) => { return (0, viem_1.getAddress)(address); }; exports.getViemAddress = getViemAddress; const getChain = (chainId) => { return (0, viem_1.extractChain)({ chains: Object.values(chains), id: chainId, }); }; exports.getChain = getChain; function prepareAddress(value, zeroAddressAsNull = false) { let result = ''; try { result = (0, viem_1.getAddress)(value); if (result === constants_js_1.AddressZero) { result = ''; } } catch (err) { } if (!result && zeroAddressAsNull) { result = constants_js_1.AddressZero; } return result; } function prepareAddresses(data, ...keys) { const result = { ...data, }; for (const key of keys) { if (!result[key]) { continue; } try { if (Array.isArray(result[key])) { const addresses = result[key].map((item) => { let result = item; if (item) { const address = prepareAddress(item); if (address) { result = address; } } return result; }); result[key] = addresses; } else { const address = prepareAddress(result[key]); if (address) { result[key] = address; } } } catch (err) { } } return result; } function addressesEqual(address1, address2) { return (address1 || '').toLowerCase() === (address2 || '').toLowerCase(); } function isAddress(value) { let result = false; if (value && value !== constants_js_1.AddressZero) { try { const address = (0, viem_1.getAddress)(value); if (address) { result = address === value; } } catch (err) { result = false; } } else if (value === constants_js_1.AddressZero) { result = true; } return result; } //# sourceMappingURL=viem-utils.js.map