@wtflabs/x402-facilitator 0.0.1-beta.4 → 0.0.1-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -68,7 +68,7 @@ interface VerifyResponse {
68
68
  */
69
69
  interface SettleResponse {
70
70
  success: boolean;
71
- transaction?: string;
71
+ transactionHash?: string;
72
72
  network?: string;
73
73
  error?: string;
74
74
  errorMessage?: string;
package/dist/index.d.ts CHANGED
@@ -68,7 +68,7 @@ interface VerifyResponse {
68
68
  */
69
69
  interface SettleResponse {
70
70
  success: boolean;
71
- transaction?: string;
71
+ transactionHash?: string;
72
72
  network?: string;
73
73
  error?: string;
74
74
  errorMessage?: string;
package/dist/index.js CHANGED
@@ -137,7 +137,7 @@ var Facilitator = class {
137
137
  const data = await response.json();
138
138
  return {
139
139
  success: data.success ?? true,
140
- transaction: data.transaction,
140
+ transactionHash: data.transactionHash,
141
141
  network: data.network,
142
142
  receipt: data.receipt,
143
143
  error: data.error,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/facilitator.ts"],"sourcesContent":["export { Facilitator } from \"./facilitator\";\nexport * from \"./types\";\n\n","import type {\n FacilitatorConfig,\n PaymentPayload,\n PaymentRequirements,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n WaitUntil,\n} from \"./types\";\n\n/**\n * WTF Facilitator 默认 URL\n */\nconst DEFAULT_FACILITATOR_URL = \"https://facilitator.wtf.com/v1\";\n\n/**\n * 默认 Relayer 地址\n */\nconst DEFAULT_RELAYER_ADDRESS = \"0x877D0A51a37178b5F34Ffb68a5c2beD0ff46D432\";\n\n/**\n * Facilitator 类\n * 用于处理支付验证和结算\n *\n * @example\n * ```typescript\n * const facilitator = new Facilitator({\n * recipientAddress: \"0x1234...\",\n * relayer: \"0x5678...\", // 可选\n * waitUntil: \"confirmed\", // 可选\n * });\n *\n * // 验证支付\n * const verifyResult = await facilitator.verify(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 结算支付\n * const settleResult = await facilitator.settle(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 获取支持的支付类型\n * const supported = await facilitator.supported();\n * ```\n */\nexport class Facilitator {\n private config: Required<FacilitatorConfig>;\n private authHeaders: Record<string, string>;\n\n constructor(config: FacilitatorConfig) {\n if (!config.recipientAddress) {\n throw new Error(\"recipientAddress is required\");\n }\n\n this.config = {\n recipientAddress: config.recipientAddress,\n relayer: config.relayer || DEFAULT_RELAYER_ADDRESS,\n waitUntil: config.waitUntil || \"confirmed\",\n baseUrl: config.baseUrl || DEFAULT_FACILITATOR_URL,\n apiKey: config.apiKey || \"\",\n };\n\n this.authHeaders = this.config.apiKey\n ? {\n Authorization: `Bearer ${this.config.apiKey}`,\n }\n : {};\n }\n\n /**\n * 获取 relayer 地址\n */\n get relayer(): string {\n return this.config.relayer;\n }\n\n /**\n * 获取 recipient 地址\n */\n get recipientAddress(): string {\n return this.config.recipientAddress;\n }\n\n /**\n * 获取等待策略\n */\n get waitUntil(): WaitUntil {\n return this.config.waitUntil;\n }\n\n /**\n * 验证支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @returns 验证结果\n */\n async verify(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/verify`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Verification failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n payer?: string;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n payer: data.payer,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Verification error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 结算支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @param waitUntil 可选的等待策略,覆盖配置中的默认值\n * @returns 结算结果\n */\n async settle(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n waitUntil?: WaitUntil,\n ): Promise<SettleResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/settle`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n waitUntil: waitUntil || this.config.waitUntil,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Settlement failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n transaction?: string;\n network?: string;\n receipt?: any;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n transaction: data.transaction,\n network: data.network,\n receipt: data.receipt,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Settlement error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 获取支持的支付类型\n * @param filters 可选的过滤条件\n * @returns 支持的支付类型列表\n */\n async supported(filters?: {\n chainId?: number;\n tokenAddress?: string;\n }): Promise<SupportedResponse> {\n try {\n const url = new URL(`${this.config.baseUrl}/supported`);\n if (filters?.chainId) {\n url.searchParams.set(\"chainId\", filters.chainId.toString());\n }\n if (filters?.tokenAddress) {\n url.searchParams.set(\"tokenAddress\", filters.tokenAddress);\n }\n\n const response = await fetch(url.toString(), {\n headers: this.authHeaders,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to get supported kinds: ${response.status}`);\n }\n\n const data = await response.json();\n return data as SupportedResponse;\n } catch (error) {\n console.error(\"Error fetching supported payment kinds:\", error);\n return { kinds: [] };\n }\n }\n\n /**\n * 获取完整配置\n */\n getConfig(): Required<FacilitatorConfig> {\n return { ...this.config };\n }\n}\n\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/facilitator.ts"],"sourcesContent":["export { Facilitator } from \"./facilitator\";\nexport * from \"./types\";\n\n","import type {\n FacilitatorConfig,\n PaymentPayload,\n PaymentRequirements,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n WaitUntil,\n} from \"./types\";\n\n/**\n * WTF Facilitator 默认 URL\n */\nconst DEFAULT_FACILITATOR_URL = \"https://facilitator.wtf.com/v1\";\n\n/**\n * 默认 Relayer 地址\n */\nconst DEFAULT_RELAYER_ADDRESS = \"0x877D0A51a37178b5F34Ffb68a5c2beD0ff46D432\";\n\n/**\n * Facilitator 类\n * 用于处理支付验证和结算\n *\n * @example\n * ```typescript\n * const facilitator = new Facilitator({\n * recipientAddress: \"0x1234...\",\n * relayer: \"0x5678...\", // 可选\n * waitUntil: \"confirmed\", // 可选\n * });\n *\n * // 验证支付\n * const verifyResult = await facilitator.verify(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 结算支付\n * const settleResult = await facilitator.settle(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 获取支持的支付类型\n * const supported = await facilitator.supported();\n * ```\n */\nexport class Facilitator {\n private config: Required<FacilitatorConfig>;\n private authHeaders: Record<string, string>;\n\n constructor(config: FacilitatorConfig) {\n if (!config.recipientAddress) {\n throw new Error(\"recipientAddress is required\");\n }\n\n this.config = {\n recipientAddress: config.recipientAddress,\n relayer: config.relayer || DEFAULT_RELAYER_ADDRESS,\n waitUntil: config.waitUntil || \"confirmed\",\n baseUrl: config.baseUrl || DEFAULT_FACILITATOR_URL,\n apiKey: config.apiKey || \"\",\n };\n\n this.authHeaders = this.config.apiKey\n ? {\n Authorization: `Bearer ${this.config.apiKey}`,\n }\n : {};\n }\n\n /**\n * 获取 relayer 地址\n */\n get relayer(): string {\n return this.config.relayer;\n }\n\n /**\n * 获取 recipient 地址\n */\n get recipientAddress(): string {\n return this.config.recipientAddress;\n }\n\n /**\n * 获取等待策略\n */\n get waitUntil(): WaitUntil {\n return this.config.waitUntil;\n }\n\n /**\n * 验证支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @returns 验证结果\n */\n async verify(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/verify`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Verification failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n payer?: string;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n payer: data.payer,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Verification error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 结算支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @param waitUntil 可选的等待策略,覆盖配置中的默认值\n * @returns 结算结果\n */\n async settle(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n waitUntil?: WaitUntil,\n ): Promise<SettleResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/settle`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n waitUntil: waitUntil || this.config.waitUntil,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Settlement failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n transactionHash?: string;\n network?: string;\n receipt?: any;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n transactionHash: data.transactionHash,\n network: data.network,\n receipt: data.receipt,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Settlement error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 获取支持的支付类型\n * @param filters 可选的过滤条件\n * @returns 支持的支付类型列表\n */\n async supported(filters?: {\n chainId?: number;\n tokenAddress?: string;\n }): Promise<SupportedResponse> {\n try {\n const url = new URL(`${this.config.baseUrl}/supported`);\n if (filters?.chainId) {\n url.searchParams.set(\"chainId\", filters.chainId.toString());\n }\n if (filters?.tokenAddress) {\n url.searchParams.set(\"tokenAddress\", filters.tokenAddress);\n }\n\n const response = await fetch(url.toString(), {\n headers: this.authHeaders,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to get supported kinds: ${response.status}`);\n }\n\n const data = await response.json();\n return data as SupportedResponse;\n } catch (error) {\n console.error(\"Error fetching supported payment kinds:\", error);\n return { kinds: [] };\n }\n }\n\n /**\n * 获取完整配置\n */\n getConfig(): Required<FacilitatorConfig> {\n return { ...this.config };\n }\n}\n\n"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -111,7 +111,7 @@ var Facilitator = class {
111
111
  const data = await response.json();
112
112
  return {
113
113
  success: data.success ?? true,
114
- transaction: data.transaction,
114
+ transactionHash: data.transactionHash,
115
115
  network: data.network,
116
116
  receipt: data.receipt,
117
117
  error: data.error,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/facilitator.ts"],"sourcesContent":["import type {\n FacilitatorConfig,\n PaymentPayload,\n PaymentRequirements,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n WaitUntil,\n} from \"./types\";\n\n/**\n * WTF Facilitator 默认 URL\n */\nconst DEFAULT_FACILITATOR_URL = \"https://facilitator.wtf.com/v1\";\n\n/**\n * 默认 Relayer 地址\n */\nconst DEFAULT_RELAYER_ADDRESS = \"0x877D0A51a37178b5F34Ffb68a5c2beD0ff46D432\";\n\n/**\n * Facilitator 类\n * 用于处理支付验证和结算\n *\n * @example\n * ```typescript\n * const facilitator = new Facilitator({\n * recipientAddress: \"0x1234...\",\n * relayer: \"0x5678...\", // 可选\n * waitUntil: \"confirmed\", // 可选\n * });\n *\n * // 验证支付\n * const verifyResult = await facilitator.verify(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 结算支付\n * const settleResult = await facilitator.settle(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 获取支持的支付类型\n * const supported = await facilitator.supported();\n * ```\n */\nexport class Facilitator {\n private config: Required<FacilitatorConfig>;\n private authHeaders: Record<string, string>;\n\n constructor(config: FacilitatorConfig) {\n if (!config.recipientAddress) {\n throw new Error(\"recipientAddress is required\");\n }\n\n this.config = {\n recipientAddress: config.recipientAddress,\n relayer: config.relayer || DEFAULT_RELAYER_ADDRESS,\n waitUntil: config.waitUntil || \"confirmed\",\n baseUrl: config.baseUrl || DEFAULT_FACILITATOR_URL,\n apiKey: config.apiKey || \"\",\n };\n\n this.authHeaders = this.config.apiKey\n ? {\n Authorization: `Bearer ${this.config.apiKey}`,\n }\n : {};\n }\n\n /**\n * 获取 relayer 地址\n */\n get relayer(): string {\n return this.config.relayer;\n }\n\n /**\n * 获取 recipient 地址\n */\n get recipientAddress(): string {\n return this.config.recipientAddress;\n }\n\n /**\n * 获取等待策略\n */\n get waitUntil(): WaitUntil {\n return this.config.waitUntil;\n }\n\n /**\n * 验证支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @returns 验证结果\n */\n async verify(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/verify`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Verification failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n payer?: string;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n payer: data.payer,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Verification error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 结算支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @param waitUntil 可选的等待策略,覆盖配置中的默认值\n * @returns 结算结果\n */\n async settle(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n waitUntil?: WaitUntil,\n ): Promise<SettleResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/settle`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n waitUntil: waitUntil || this.config.waitUntil,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Settlement failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n transaction?: string;\n network?: string;\n receipt?: any;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n transaction: data.transaction,\n network: data.network,\n receipt: data.receipt,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Settlement error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 获取支持的支付类型\n * @param filters 可选的过滤条件\n * @returns 支持的支付类型列表\n */\n async supported(filters?: {\n chainId?: number;\n tokenAddress?: string;\n }): Promise<SupportedResponse> {\n try {\n const url = new URL(`${this.config.baseUrl}/supported`);\n if (filters?.chainId) {\n url.searchParams.set(\"chainId\", filters.chainId.toString());\n }\n if (filters?.tokenAddress) {\n url.searchParams.set(\"tokenAddress\", filters.tokenAddress);\n }\n\n const response = await fetch(url.toString(), {\n headers: this.authHeaders,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to get supported kinds: ${response.status}`);\n }\n\n const data = await response.json();\n return data as SupportedResponse;\n } catch (error) {\n console.error(\"Error fetching supported payment kinds:\", error);\n return { kinds: [] };\n }\n }\n\n /**\n * 获取完整配置\n */\n getConfig(): Required<FacilitatorConfig> {\n return { ...this.config };\n }\n}\n\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/facilitator.ts"],"sourcesContent":["import type {\n FacilitatorConfig,\n PaymentPayload,\n PaymentRequirements,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n WaitUntil,\n} from \"./types\";\n\n/**\n * WTF Facilitator 默认 URL\n */\nconst DEFAULT_FACILITATOR_URL = \"https://facilitator.wtf.com/v1\";\n\n/**\n * 默认 Relayer 地址\n */\nconst DEFAULT_RELAYER_ADDRESS = \"0x877D0A51a37178b5F34Ffb68a5c2beD0ff46D432\";\n\n/**\n * Facilitator 类\n * 用于处理支付验证和结算\n *\n * @example\n * ```typescript\n * const facilitator = new Facilitator({\n * recipientAddress: \"0x1234...\",\n * relayer: \"0x5678...\", // 可选\n * waitUntil: \"confirmed\", // 可选\n * });\n *\n * // 验证支付\n * const verifyResult = await facilitator.verify(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 结算支付\n * const settleResult = await facilitator.settle(\n * paymentPayload,\n * paymentRequirements\n * );\n *\n * // 获取支持的支付类型\n * const supported = await facilitator.supported();\n * ```\n */\nexport class Facilitator {\n private config: Required<FacilitatorConfig>;\n private authHeaders: Record<string, string>;\n\n constructor(config: FacilitatorConfig) {\n if (!config.recipientAddress) {\n throw new Error(\"recipientAddress is required\");\n }\n\n this.config = {\n recipientAddress: config.recipientAddress,\n relayer: config.relayer || DEFAULT_RELAYER_ADDRESS,\n waitUntil: config.waitUntil || \"confirmed\",\n baseUrl: config.baseUrl || DEFAULT_FACILITATOR_URL,\n apiKey: config.apiKey || \"\",\n };\n\n this.authHeaders = this.config.apiKey\n ? {\n Authorization: `Bearer ${this.config.apiKey}`,\n }\n : {};\n }\n\n /**\n * 获取 relayer 地址\n */\n get relayer(): string {\n return this.config.relayer;\n }\n\n /**\n * 获取 recipient 地址\n */\n get recipientAddress(): string {\n return this.config.recipientAddress;\n }\n\n /**\n * 获取等待策略\n */\n get waitUntil(): WaitUntil {\n return this.config.waitUntil;\n }\n\n /**\n * 验证支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @returns 验证结果\n */\n async verify(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/verify`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Verification failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n payer?: string;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n payer: data.payer,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Verification error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 结算支付\n * @param payload 支付负载\n * @param requirements 支付要求\n * @param waitUntil 可选的等待策略,覆盖配置中的默认值\n * @returns 结算结果\n */\n async settle(\n payload: PaymentPayload,\n requirements: PaymentRequirements,\n waitUntil?: WaitUntil,\n ): Promise<SettleResponse> {\n try {\n const response = await fetch(`${this.config.baseUrl}/settle`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.authHeaders,\n },\n body: JSON.stringify({\n x402Version: payload.x402Version,\n paymentPayload: payload,\n paymentRequirements: requirements,\n waitUntil: waitUntil || this.config.waitUntil,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Settlement failed: ${response.status}`,\n errorMessage: errorText,\n };\n }\n\n const data = (await response.json()) as {\n success?: boolean;\n transactionHash?: string;\n network?: string;\n receipt?: any;\n error?: string;\n errorMessage?: string;\n };\n return {\n success: data.success ?? true,\n transactionHash: data.transactionHash,\n network: data.network,\n receipt: data.receipt,\n error: data.error,\n errorMessage: data.errorMessage,\n };\n } catch (error) {\n return {\n success: false,\n error: \"Settlement error\",\n errorMessage:\n error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }\n\n /**\n * 获取支持的支付类型\n * @param filters 可选的过滤条件\n * @returns 支持的支付类型列表\n */\n async supported(filters?: {\n chainId?: number;\n tokenAddress?: string;\n }): Promise<SupportedResponse> {\n try {\n const url = new URL(`${this.config.baseUrl}/supported`);\n if (filters?.chainId) {\n url.searchParams.set(\"chainId\", filters.chainId.toString());\n }\n if (filters?.tokenAddress) {\n url.searchParams.set(\"tokenAddress\", filters.tokenAddress);\n }\n\n const response = await fetch(url.toString(), {\n headers: this.authHeaders,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to get supported kinds: ${response.status}`);\n }\n\n const data = await response.json();\n return data as SupportedResponse;\n } catch (error) {\n console.error(\"Error fetching supported payment kinds:\", error);\n return { kinds: [] };\n }\n }\n\n /**\n * 获取完整配置\n */\n getConfig(): Required<FacilitatorConfig> {\n return { ...this.config };\n }\n}\n\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wtflabs/x402-facilitator",
3
- "version": "0.0.1-beta.4",
3
+ "version": "0.0.1-beta.5",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",