import type { IncomingMessage, ServerResponse } from "node:http";
function b64Encode(s: string): string {
return Buffer.from(s, "utf-8").toString("base64");
}
// Your wallet addresses (from env or config)
const EVM_PAY_TO = process.env.EVM_ADDRESS ?? "0x209693Bc6afc0C5328bA36FaF03C514EF312287C";
const SVM_PAY_TO = process.env.SVM_ADDRESS ?? "6KPYDyuRnpuKcm1TerUmwLd2BcaihvhF4Ccrr8beruu2";
// Example: protected resource URL and metadata
const resourceUrl = "https://api.example.com/weather";
const resourceDescription = "Weather data";
const resourceMimeType = "application/json";
const paymentRequired = {
x402Version: 2,
error: "PAYMENT-SIGNATURE header is required",
resource: {
url: resourceUrl,
description: resourceDescription,
mimeType: resourceMimeType,
},
accepts: [
{
scheme: "exact",
network: "eip155:84532",
amount: "10000",
asset: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
payTo: EVM_PAY_TO,
maxTimeoutSeconds: 60,
extra: { name: "USDC", version: "2" },
},
{
scheme: "exact",
network: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d",
amount: "1000000",
asset: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
payTo: SVM_PAY_TO,
maxTimeoutSeconds: 60,
extra: { feePayer: "2wKupLR9q6wXYppw8Gr2NvWxKBUqm4PPJKkQfoxHDBg4" },
},
],
extensions: {},
};
const paymentRequiredB64 = b64Encode(JSON.stringify(paymentRequired));