UNPKG

@biconomy/abstractjs

Version:

SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.

125 lines 5.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toMultichainNexusAccount = toMultichainNexusAccount; const build_1 = require("./decorators/build.js"); const buildActionPolicy_1 = require("./decorators/buildActionPolicy.js"); const buildBridgeInstructions_1 = require("./decorators/buildBridgeInstructions.js"); const buildSessionAction_1 = require("./decorators/buildSessionAction.js"); const getUnifiedERC20Balance_1 = require("./decorators/getUnifiedERC20Balance.js"); const isDelegated_1 = require("./decorators/isDelegated.js"); const multichainRead_1 = require("./decorators/multichainRead.js"); const ownership_1 = require("./decorators/ownership.js"); const queryBridge_1 = require("./decorators/queryBridge.js"); const unDelegate_1 = require("./decorators/unDelegate.js"); const waitForTransactionReceipts_1 = require("./decorators/waitForTransactionReceipts.js"); const toNexusAccount_1 = require("./toNexusAccount.js"); async function toMultichainNexusAccount(multiChainNexusParams) { const { signer: unresolvedSigner, chainConfigurations, ...accountParameters } = multiChainNexusParams; if (chainConfigurations.length === 0) { throw new Error("No chain configuration provided"); } const deployments = await Promise.all(chainConfigurations.map((chainConfiguration) => (0, toNexusAccount_1.toNexusAccount)({ signer: unresolvedSigner, chainConfiguration, ...accountParameters }))); function deploymentOn(chainId, strictMode) { const deployment = deployments.find((dep) => dep.client.chain?.id === chainId); if (!deployment && strictMode) { throw new Error(`Deployment not found for chainId: ${chainId}`); } return deployment; } function addressOn(chainId, strictMode) { const deployment = deploymentOn(chainId, strictMode); return deployment?.address; } const meeVersions = deployments.map(({ version, chain }) => ({ chainId: chain.id, version })); const baseAccount = { signer: deployments[0].signer, deployments, deploymentOn, addressOn }; const getUnifiedERC20Balance = (mcToken) => (0, getUnifiedERC20Balance_1.getUnifiedERC20Balance)({ mcToken, account: baseAccount }); const build = (params, currentInstructions) => (0, build_1.build)({ currentInstructions, accountAddress: baseAccount.signer.address, meeVersions }, params); const buildActionPolicy = (params) => { return (0, buildActionPolicy_1.buildActionPolicy)(params); }; const buildSessionAction = (params) => { return (0, buildSessionAction_1.buildSessionAction)(params); }; const buildComposable = (params, currentInstructions) => { let composabilityVersion = undefined; let chainId = undefined; const type = params.type; if (type === "acrossIntent") { chainId = params.data.originChainId; } else if (type !== "batch") { chainId = params.data.chainId; } if (chainId) { composabilityVersion = getComposabilityVersion(chainId); } return (0, build_1.buildComposable)({ currentInstructions, accountAddress: baseAccount.signer.address, meeVersions }, params, composabilityVersion); }; const buildBridgeInstructions = (params) => (0, buildBridgeInstructions_1.buildBridgeInstructions)({ ...params }); const queryBridge = (params) => (0, queryBridge_1.queryBridge)({ ...params }); const isDelegated = (parameters) => (0, isDelegated_1.isDelegated)({ ...parameters, account: baseAccount }); const unDelegate = (parameters) => (0, unDelegate_1.unDelegate)({ ...parameters, account: baseAccount }); const waitForTransactionReceipts = (parameters) => (0, waitForTransactionReceipts_1.waitForTransactionReceipts)({ ...parameters, account: baseAccount }); const getComposabilityVersion = (chainId) => { const chainConfiguration = chainConfigurations.find((chainConfiguration) => chainConfiguration.chain.id === chainId); if (!chainConfiguration) { throw new Error(`Chain configuration not found in mc account for chainId: ${chainId} that is used in the instruction params`); } return chainConfiguration.version.composabilityVersion; }; const getMeeVersion = (chainId) => { const chainConfiguration = chainConfigurations.find((chainConfiguration) => chainConfiguration.chain.id === chainId); if (!chainConfiguration) { throw new Error(`Chain configuration not found for chainId: ${chainId}`); } return chainConfiguration.version.version; }; const read = (params) => (0, multichainRead_1.default)(baseAccount, params); const toDelegation = async () => await deployments[0].toDelegation({ multiChain: true }); const addOwnership = (params) => (0, ownership_1.addOwnership)(baseAccount, params); const changeOwnership = (params) => (0, ownership_1.changeOwnership)(baseAccount, params); const cleanOwnership = (params) => (0, ownership_1.cleanOwnership)(baseAccount, params); const getOwnership = (params) => (0, ownership_1.getOwnership)(baseAccount, params); return { ...baseAccount, getUnifiedERC20Balance, build, buildComposable, buildActionPolicy, buildSessionAction, buildBridgeInstructions, queryBridge, isDelegated, getComposabilityVersion, getMeeVersion, unDelegate, waitForTransactionReceipts, read, toDelegation, addOwnership, changeOwnership, cleanOwnership, getOwnership }; } //# sourceMappingURL=toMultiChainNexusAccount.js.map