@opendatalabs/vana-sdk
Version:
A TypeScript library for interacting with Vana Network smart contracts.
63 lines (62 loc) • 3.08 kB
TypeScript
/**
* 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;