/**
 * 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";
export declare const PERSONAL_SERVER_REGISTRATION_DEFAULT_CHAIN_ID = 1480;
export declare const PERSONAL_SERVER_REGISTRATION_DEFAULT_VERIFYING_CONTRACT: "0x1483B1F634DBA75AeaE60da7f01A679aabd5ee2c";
export type PersonalServerRegistrationTypedData = TypedDataDefinition<typeof SERVER_REGISTRATION_TYPES, "ServerRegistration"> & {
    message: ServerRegistrationMessage;
};
export interface PersonalServerRegistrationSigner {
    address: Address;
    signTypedData(typedData: PersonalServerRegistrationTypedData): Promise<Hex> | Hex;
}
export interface ViemPersonalServerRegistrationWalletClient {
    account?: Account | Address | null;
    signTypedData(typedData: PersonalServerRegistrationTypedData & {
        account?: Account | Address;
    }): Promise<Hex>;
}
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<PersonalServerRegistrationSignature>;
export declare const registerPersonalServerSignature: typeof buildPersonalServerRegistrationSignature;
