/** Who pays the privacy pool fee, and in what, as the paymaster spells it. */ type PrivacyFeeMode = { mode: "sponsored"; pool_fee: { paid_by: "user"; token: string; }; } | { mode: "sponsored"; pool_fee: { paid_by: "sponsor"; }; } | { mode: "default"; gas_token: string; }; interface PrivacyRelayConfig { /** Paymaster that submits private transactions, so the account never appears on-chain. */ url: string; fee: PrivacyFeeMode; /** Ceiling for a fee the relay asks for, in base units of the fee token. */ maxFee: string; /** The only addresses a fee may be sent to. Also the only callers a signed relay call may name. */ allowedFeeRecipients: string[]; } /** * Everything the page must not choose: the pool, the services that see the * viewing key, and who is paid. In a vault it comes from the app's Cavos * settings, keyed by network ("sepolia", "mainnet"). */ interface StarknetPrivacyConfig { pool: string; prover: string; discovery: string; /** Encrypt requests to the prover and discovery service so they cannot read the viewing key. Defaults to true. */ ohttp?: boolean; /** Proofs need RPC spec 0.10.1 or newer. */ rpcUrl?: string; relay: PrivacyRelayConfig; } /** Strict: unknown fields, bad URLs and malformed addresses throw an error that names the field. */ declare function parseStarknetPrivacyConfig(input: unknown): StarknetPrivacyConfig; /** The in-memory Stark key. WebCrypto cannot hold one, so it is re-derived from the DEK whenever it is needed. */ interface StarknetSpend { address(): string; publicKey(): string; privateKey(): string; } export { type PrivacyFeeMode as P, type StarknetSpend as S, type StarknetPrivacyConfig as a, type PrivacyRelayConfig as b, parseStarknetPrivacyConfig as p };