UNPKG

@opendatalabs/vana-sdk

Version:

A TypeScript library for interacting with Vana Network smart contracts.

97 lines 3.26 kB
import { isAddress } from "viem"; import { SERVER_REGISTRATION_TYPES, serverRegistrationDomain } from "./eip712.js"; const PERSONAL_SERVER_REGISTRATION_DEFAULT_CHAIN_ID = 1480; const PERSONAL_SERVER_REGISTRATION_DEFAULT_VERIFYING_CONTRACT = "0x1483B1F634DBA75AeaE60da7f01A679aabd5ee2c"; function assertAddress(value, name) { if (!isAddress(value)) { throw new Error(`${name} must be a valid EVM address`); } } function getAccountAddress(account) { if (!account) { return void 0; } return typeof account === "string" ? account : account.address; } function isPersonalServerRegistrationSigner(source) { return "address" in source && typeof source.signTypedData === "function"; } function createViemPersonalServerRegistrationSigner(source, options = {}) { if (isPersonalServerRegistrationSigner(source)) { return source; } const accountAddress = getAccountAddress(options.account) ?? getAccountAddress(source.account); if (accountAddress) { return { address: accountAddress, signTypedData: (typedData) => source.signTypedData({ ...typedData, account: options.account ?? source.account ?? accountAddress }) }; } throw new Error( "Viem wallet client requires an account option or account property" ); } function personalServerRegistrationDomain(input = {}) { if (input.config) { return serverRegistrationDomain(input.config); } const verifyingContract = input.verifyingContract ?? PERSONAL_SERVER_REGISTRATION_DEFAULT_VERIFYING_CONTRACT; assertAddress(verifyingContract, "verifyingContract"); return { name: "Vana Data Portability", version: "1", chainId: input.chainId ?? PERSONAL_SERVER_REGISTRATION_DEFAULT_CHAIN_ID, verifyingContract }; } function buildPersonalServerRegistrationTypedData(input) { assertAddress(input.ownerAddress, "ownerAddress"); assertAddress(input.serverAddress, "serverAddress"); return { domain: personalServerRegistrationDomain(input), types: SERVER_REGISTRATION_TYPES, primaryType: "ServerRegistration", message: { ownerAddress: input.ownerAddress, serverAddress: input.serverAddress, publicKey: input.serverPublicKey, serverUrl: input.serverUrl } }; } async function buildPersonalServerRegistrationSignature(input) { const typedData = buildPersonalServerRegistrationTypedData({ ownerAddress: input.signer.address, serverAddress: input.serverAddress, serverPublicKey: input.serverPublicKey, serverUrl: input.serverUrl, config: input.config, chainId: input.chainId, verifyingContract: input.verifyingContract }); const signature = await input.signer.signTypedData(typedData); return { signature, signerAddress: input.signer.address, typedData }; } const registerPersonalServerSignature = buildPersonalServerRegistrationSignature; export { PERSONAL_SERVER_REGISTRATION_DEFAULT_CHAIN_ID, PERSONAL_SERVER_REGISTRATION_DEFAULT_VERIFYING_CONTRACT, buildPersonalServerRegistrationSignature, buildPersonalServerRegistrationTypedData, createViemPersonalServerRegistrationSigner, personalServerRegistrationDomain, registerPersonalServerSignature }; //# sourceMappingURL=personal-server-registration.js.map