/** * Personal Server registration typed-data and signing helpers. * * These helpers are protocol-owned and runtime-neutral. Apps can sign with * viem local accounts, wallet clients, Account products, or any equivalent * signer by adapting to {@link PersonalServerRegistrationSigner}. * * @category Protocol */ import { type Account, type Address, type Hex, type TypedDataDomain, type TypedDataDefinition } from "viem"; import { SERVER_REGISTRATION_TYPES, type DataPortabilityGatewayConfig, type ServerRegistrationMessage } from "./eip712.js"; import { getContractAddress } from "../generated/addresses.js"; type SupportedContractAddressChainId = Parameters[0]; export declare const PERSONAL_SERVER_REGISTRATION_DEFAULT_CHAIN_ID: SupportedContractAddressChainId; export declare const PERSONAL_SERVER_REGISTRATION_DEFAULT_VERIFYING_CONTRACT: `0x${string}`; export type PersonalServerRegistrationTypedData = TypedDataDefinition & { message: ServerRegistrationMessage; }; export interface PersonalServerRegistrationSigner { address: Address; signTypedData(typedData: PersonalServerRegistrationTypedData): Promise | Hex; } export interface ViemPersonalServerRegistrationWalletClient { account?: Account | Address | null; signTypedData(typedData: PersonalServerRegistrationTypedData & { account?: Account | Address; }): Promise; } export type ViemPersonalServerRegistrationSignerSource = PersonalServerRegistrationSigner | ViemPersonalServerRegistrationWalletClient; export interface BuildPersonalServerRegistrationTypedDataInput { ownerAddress: Address; serverAddress: Address; serverPublicKey: string; serverUrl: string; config?: DataPortabilityGatewayConfig; chainId?: number; verifyingContract?: Address; } export interface BuildPersonalServerRegistrationSignatureInput { signer: PersonalServerRegistrationSigner; serverAddress: Address; serverPublicKey: string; serverUrl: string; config?: DataPortabilityGatewayConfig; chainId?: number; verifyingContract?: Address; } export interface PersonalServerRegistrationSignature { signature: Hex; signerAddress: Address; typedData: PersonalServerRegistrationTypedData; } export interface PersonalServerRegistrationDomainInput { config?: DataPortabilityGatewayConfig; chainId?: number; verifyingContract?: Address; } export declare function createViemPersonalServerRegistrationSigner(source: ViemPersonalServerRegistrationSignerSource, options?: { account?: Account | Address; }): PersonalServerRegistrationSigner; export declare function personalServerRegistrationDomain(input?: PersonalServerRegistrationDomainInput): TypedDataDomain; export declare function buildPersonalServerRegistrationTypedData(input: BuildPersonalServerRegistrationTypedDataInput): PersonalServerRegistrationTypedData; export declare function buildPersonalServerRegistrationSignature(input: BuildPersonalServerRegistrationSignatureInput): Promise; export declare const registerPersonalServerSignature: typeof buildPersonalServerRegistrationSignature; export {};