> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x402x.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Server 参数

> X402Server 与 createRequirements 配置项

## 构造

```ts theme={null}
new X402Server({
  client,          // Viem PublicClient
  facilitator,     // Facilitator 实例
  network?,        // 可选，默认从 client 推断
});
```

## createRequirements(config)

```ts theme={null}
{
  asset: string;
  maxAmountRequired: string;
  network?: string;
  scheme?: "exact";
  outputSchema?: Record<string, unknown>;
  paymentType?: "permit" | "eip3009" | "permit2" | "auto";
  resource?: string;
  description?: string;
  mimeType?: string;
  maxTimeoutSeconds?: number;
  extra?: Record<string, unknown>;
  autoDetect?: boolean; // 默认 true
}
```

## 其他方法签名

```ts theme={null}
// 处理完整支付：parse → verify → settle
process(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): Promise<ProcessResult>;

// 仅解析
parse(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): ParseResult;

// 仅验证（基于 parse 后的数据）
verify(parsed: ParsedPayment): Promise<VerifyResult>;

// 仅结算（执行链上交易）
settle(parsed: ParsedPayment): Promise<SettleResult>;

// 预热 Token 能力缓存
initialize(tokens: string[]): Promise<InitResult>;

// 生成 402 响应体
get402Response(
  requirements: PaymentRequirements,
  error?: string,
  errorStage?: "parse" | "verify" | "settle"
): Response402;

// 清缓存
clearCache(tokenAddress?: string): Promise<void>;
```

## 关键入参与校验

* `paymentHeader`：来自 `req.headers["x-payment"]`，可能为 `undefined`
* `expectedRequirements`：必须与受保护资源一致（network/asset/payTo/timeout 等）
* 建议在创建后使用 Zod 校验 `PaymentRequirementsSchema.parse(requirements)`
