UNPKG

@abstract-foundation/agw-client

Version:
48 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSession = createSession; const viem_1 = require("viem"); const actions_1 = require("viem/actions"); const utils_1 = require("viem/utils"); const AGWAccount_js_1 = require("../abis/AGWAccount.js"); const SessionKeyValidator_js_1 = require("../abis/SessionKeyValidator.js"); const constants_js_1 = require("../constants.js"); const sessions_js_1 = require("../sessions.js"); const utils_js_1 = require("../utils.js"); async function createSession(client, publicClient, args) { const { session, ...rest } = args; const isDeployed = await (0, utils_js_1.isSmartAccountDeployed)(publicClient, client.account.address); const hasModule = isDeployed ? await hasSessionModule(client) : false; let transactionHash = undefined; if (!hasModule) { const encodedSession = (0, sessions_js_1.encodeSession)(session); transactionHash = await (0, utils_1.getAction)(client, actions_1.writeContract, 'writeContract')({ address: client.account.address, abi: AGWAccount_js_1.default, functionName: 'addModule', args: [(0, viem_1.concatHex)([constants_js_1.SESSION_KEY_VALIDATOR_ADDRESS, encodedSession])], ...rest, }); } else { transactionHash = await (0, utils_1.getAction)(client, actions_1.writeContract, 'writeContract')({ address: constants_js_1.SESSION_KEY_VALIDATOR_ADDRESS, abi: SessionKeyValidator_js_1.SessionKeyValidatorAbi, functionName: 'createSession', args: [session], ...rest, }); } return { transactionHash, session }; } async function hasSessionModule(client) { const validationHooks = await (0, utils_1.getAction)(client, actions_1.readContract, 'readContract')({ address: client.account.address, abi: AGWAccount_js_1.default, functionName: 'listHooks', args: [true], }); const hasSessionModule = validationHooks.some((hook) => hook === constants_js_1.SESSION_KEY_VALIDATOR_ADDRESS); return hasSessionModule; } //# sourceMappingURL=createSession.js.map