x402z-client-web
v0.1.2
Published
Browser helpers for the erc7984-mind-v1 x402 scheme.
Readme
x402z-client-web
Browser helpers for the erc7984-mind-v1 x402 scheme.
Install
pnpm add x402z-client-web x402z-shared-webFolder map
src/http/: HTTP client helperssrc/scheme/: scheme implementation + registrationsrc/index.ts: public exports
Usage (Browser)
import { createX402zClient } from "x402z-client-web";
import {
createRelayer,
createBrowserSigner,
getBrowserEthereumProvider,
getSepoliaConfig,
} from "x402z-shared-web";
import type { FhevmInstanceConfig } from "x402z-shared-web";
const provider = getBrowserEthereumProvider();
const relayerConfig: FhevmInstanceConfig = {
...(getSepoliaConfig() as object),
network: provider,
};
const relayer = await createRelayer(relayerConfig);
const signer = await createBrowserSigner(provider);
const client = createX402zClient({
preferredMethods: ["erc7984-mind-v1.CONFIDENTIAL_USDC.sepolia"] as const,
signer,
relayer,
});
const paid = await client.pay("https://example.com/demo");
console.log(paid.response.status);createX402zClient builds the confidential payment input automatically using the
confidential.batcherAddress provided by the server’s payment requirements.
createRelayer calls initSDK() automatically on first use.
Choosing Payment Methods (Client)
The client picks the first preferred method that matches the server’s accepts list
by scheme + network + asset.
You can specify preferred methods in two ways:
- Name string (scheme + token + network alias):
preferredMethods: ["exact.USDC.base", "erc7984-mind-v1.CONFIDENTIAL_USDC.sepolia"] as const- Config entry (from
SCHEME_CONFIG):
import { SCHEME_CONFIG } from "x402z-scheme-config";
preferredMethods: [
SCHEME_CONFIG.exact.USDC.base,
SCHEME_CONFIG["erc7984-mind-v1"].CONFIDENTIAL_USDC.sepolia,
]If preferredMethods is omitted, the client defaults to SCHEME_CONFIG_NAMES
(all known methods, in order).
API
createX402zClient(config)preferredMethods(optional): ordered list of preferred methods.- Name form:
"exact.USDC.base"(matches scheme/token/network alias fromx402z-scheme-config). - Config form:
SCHEME_CONFIG.exact.USDC.base.
- Name form:
signer(required): signer used for both exact and confidential schemesrelayer(required when usingerc7984-mind-v1): relayer instance (browser)fetch(optional): custom fetch implementation
client.pay(url, options?): performs the 402 handshake and retries with payment headers- returns
{ response, paymentRequired?, confidentialRequirements? }
- returns
Examples
See examples/README.md for the full-process web examples (examples/full-process/web-vite and examples/full-process/web-next).
Notes
- Web builds use
@zama-fhe/relayer-sdk/web(no CDN script tag or bundle). - Requires an injected wallet that supports
eth_signTypedData_v4(e.g. MetaMask). - Confidential scheme name:
erc7984-mind-v1 - Exact scheme name:
exact
API surface
Exports:
createX402zClient: convenience client wrapper for browser pay flows.X402zEvmClientScheme: client scheme implementation for erc7984-mind-v1.registerX402zEvmClientScheme: registers the scheme with x402 client.
Types:
X402zClient: client instance type.PreferredPaymentMethod: preferred payment method selector (object form or scheme-config name string).X402zClientOptions: options forcreateX402zClient.X402zConfidentialClientOptions: options for confidential payments.X402zExactClientOptions: options for exact payments.PayOptions: per-request payment options.X402zClientSchemeOptions: scheme config for client registration.X402zClientRegistrationOptions: registration options for the scheme.ConfidentialRequirementsExtra: scheme requirements extension payload.RelayerInstance: relayer instance type.- re-exported types from
@x402/core/types: shared x402 types.
