UNPKG

@keypo/typescript-sdk

Version:

A TypeScript SDK for using Keypo

75 lines (74 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deployPermissionedData = void 0; const viem_1 = require("viem"); /** * Deploy file and write permissions to the PermissionsRegistry */ const deployPermissionedData = async (fileIdentifier, fileMetaData, kernelClient, // Using any for now since we need the kernel client's methods signerAddress, contractAddress, validatorAddress, abi, debug) => { const parameters = [ { permissionType: 0, permissionAddress: signerAddress, tokenQuantity: 1, timeLimitBlockNumber: 0, operator: 0, }, ]; const txData = (0, viem_1.encodeFunctionData)({ abi: abi, functionName: "deployPermissionedFile", args: [fileIdentifier, fileMetaData, validatorAddress, signerAddress, parameters], }); if (debug) { console.log("[DEBUG] txData:", txData); } try { // Prepare the user operation with explicit gas settings const userOperation = { callData: await kernelClient.account.encodeCalls([{ to: contractAddress, value: BigInt(0), data: txData, }]), }; if (debug) { console.log("[DEBUG] Sending user operation with callData:", userOperation.callData); } const userOpHash = await kernelClient.sendUserOperation(userOperation); if (debug) { console.log("[DEBUG] userOpHash:", userOpHash); } const { receipt } = await kernelClient.waitForUserOperationReceipt({ hash: userOpHash, }); if (debug) { console.log("[DEBUG] receipt:", receipt); } return receipt.transactionHash; } catch (error) { console.error("Error sending user operation:", error); // Log more detailed error information if (error.message) { console.error("Error message:", error.message); } if (error.cause) { console.error("Error cause:", error.cause); } if (error.stack) { console.error("Error stack:", error.stack); } // Check for specific error types if (error.message && error.message.includes("UserOperation reverted during simulation")) { console.error("UserOperation simulation failed - this could be due to:"); console.error("1. Insufficient gas estimation"); console.error("2. Contract state issues"); console.error("3. Network congestion"); console.error("4. Invalid parameters"); } throw error; } }; exports.deployPermissionedData = deployPermissionedData;