diff --git a/apps/scan/src/lib/x402/index.ts b/apps/scan/src/lib/x402/index.ts index dda6fc519..59a49cc5c 100644 --- a/apps/scan/src/lib/x402/index.ts +++ b/apps/scan/src/lib/x402/index.ts @@ -32,7 +32,7 @@ export type InputSchema = OutputSchema['input']; * the database in a common format for v1 and v2. */ export const normalizedAcceptSchema = z3.object({ - scheme: z3.literal('exact'), + scheme: z3.enum(['exact', 'escrow']), network: z3.string(), maxAmountRequired: z3.string(), payTo: z3.string(), @@ -71,7 +71,7 @@ function normalizePaymentRequirement( ): NormalizedAccept { if (isV2PaymentRequirement(accept)) { return { - scheme: accept.scheme as 'exact', + scheme: accept.scheme as 'exact' | 'escrow', network: normalizeChainId(accept.network), maxAmountRequired: accept.amount, payTo: accept.payTo, diff --git a/apps/scan/src/services/db/resources/resource.ts b/apps/scan/src/services/db/resources/resource.ts index a2b20e63a..4efb365c4 100644 --- a/apps/scan/src/services/db/resources/resource.ts +++ b/apps/scan/src/services/db/resources/resource.ts @@ -28,7 +28,7 @@ export const upsertResourceSchema = z.object({ metadata: z.record(z.string(), z.any()).optional(), accepts: z.array( z.object({ - scheme: z.enum(['exact']), + scheme: z.enum(['exact', 'escrow']), network: z.union([ z.enum([ 'base_sepolia', diff --git a/packages/internal/databases/scan/prisma/schema.prisma b/packages/internal/databases/scan/prisma/schema.prisma index ac567b777..40c3bc5de 100644 --- a/packages/internal/databases/scan/prisma/schema.prisma +++ b/packages/internal/databases/scan/prisma/schema.prisma @@ -105,6 +105,7 @@ model Resources { } enum AcceptsScheme { + escrow exact }