UNPKG

@keypo/typescript-sdk

Version:

A TypeScript SDK for using Keypo

44 lines (43 loc) 1.95 kB
import { baseSepolia } from "viem/chains"; import { getKernelClient } from './utils/getKernelClient.js'; import { PermissionsRegistryAbi } from './utils/contracts.js'; import { deployPermissionedData } from './utils/deployPermissionedData.js'; import { mintOwnerNFT } from './utils/mintOwnerNFT.js'; export async function encrypt(dataIn, walletClient, metadataIn, authorization, config, debug) { const { apiUrl, validatorAddress, registryContractAddress, bundlerRpcUrl } = config; if (debug) { console.log("validatorAddress", validatorAddress); console.log("contractAddress", registryContractAddress); console.log("apiUrl", apiUrl); } // Always send Uint8Array as the payload const response = await fetch(`${apiUrl}/encryption`, { method: "POST", headers: { 'Accept': 'application/json', 'Content-Type': 'application/octet-stream', 'X-Metadata': JSON.stringify(metadataIn), }, body: dataIn }); const data = await response.json(); if (debug) { console.log("data", data); } const metadata = { ...metadataIn, // Keep all the type information from preProcess name: data.name, encryptedData: data.encryptedData, }; if (debug) { console.log("metadata", metadata); } const dataIdentifier = metadata.encryptedData.dataIdentifier; const kernelClient = await getKernelClient(walletClient, baseSepolia, bundlerRpcUrl, authorization, debug); await deployPermissionedData(dataIdentifier, JSON.stringify(metadata), kernelClient, walletClient.account.address, registryContractAddress, validatorAddress, PermissionsRegistryAbi, debug); await mintOwnerNFT(kernelClient, registryContractAddress, dataIdentifier, PermissionsRegistryAbi, debug); return { dataCID: data.encryptedData.ipfsHash, dataIdentifier: data.encryptedData.dataIdentifier, }; }