facinet 2.2.1 → 2.3.0
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/README.md +71 -242
- package/dist/browser.js +2720 -27515
- package/dist/browser.js.map +4 -4
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +7 -8
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/facilitator.d.ts +4 -15
- package/dist/commands/facilitator.d.ts.map +1 -1
- package/dist/commands/facilitator.js +24 -28
- package/dist/commands/facilitator.js.map +1 -1
- package/dist/commands/pay.d.ts +1 -8
- package/dist/commands/pay.d.ts.map +1 -1
- package/dist/commands/pay.js +35 -30
- package/dist/commands/pay.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +636 -92
- package/dist/index.js.map +7 -1
- package/dist/sdk/Facinet.d.ts +19 -3
- package/dist/sdk/Facinet.d.ts.map +1 -1
- package/dist/sdk/Facinet.js +113 -52
- package/dist/sdk/Facinet.js.map +1 -1
- package/dist/sdk/types.d.ts +8 -2
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk.d.ts +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +346 -25
- package/dist/sdk.js.map +7 -1
- package/dist/sdk.mjs +93 -32
- package/dist/sdk.mjs.map +2 -2
- package/dist/utils/api.d.ts +13 -12
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +4 -32
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/config.d.ts +2 -9
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +0 -1
- package/dist/utils/config.js.map +1 -1
- package/package.json +4 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/commands/pay.ts", "../src/utils/config.ts", "../src/utils/api.ts", "../src/commands/facilitator.ts", "../src/commands/connect.ts"],
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\n/**\n * Facinet CLI - x402 Facilitator Network\n *\n * Command-line tool for making payments and managing facilitators\n * on the x402 payment network.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { payCommand } from './commands/pay';\nimport { facilitatorCommand } from './commands/facilitator';\nimport { connectCommand } from './commands/connect';\n\nconst program = new Command();\n\n// ASCII Art Banner\nconsole.log(\n chalk.cyan(`\n\\u2554\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2557\n\\u2551 \\u2551\n\\u2551 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2557\\u2588\\u2588\\u2588\\u2557 \\u2551\n\\u2551 \\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D\\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D\\u2588\\u2588\\u2551\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2551\n\\u2551 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2551\\u2588\\u2588\\u2551 \\u2588\\u2588\\u2551\\u2588\\u2588\\u2554\\u2588\\u2588\\u2557 \\u2551\n\\u2551 \\u2588\\u2588\\u2554\\u2550\\u2550\\u255D \\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2551\\u2588\\u2588\\u2551 \\u2588\\u2588\\u2551\\u2588\\u2588\\u2551\\u255A\\u2588\\u2588\\u2557\\u2551\n\\u2551 \\u2588\\u2588\\u2551 \\u2588\\u2588\\u2551 \\u2588\\u2588\\u2551\\u255A\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2551\\u2588\\u2588\\u2551 \\u255A\\u2588\\u2588\\u2551\n\\u2551 \\u255A\\u2550\\u255D \\u255A\\u2550\\u255D \\u255A\\u2550\\u255D \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D\\u255A\\u2550\\u255D\\u255A\\u2550\\u255D \\u255A\\u2550\\u2551\n\\u2551 \\u2551\n\\u2551 x402 Facilitator Network CLI \\u2551\n\\u2551 \\u2551\n\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D\n`)\n);\n\nprogram\n .name('facinet')\n .description('CLI tool for x402 Facilitator Network')\n .version('2.3.0');\n\n// Connect wallet command\nprogram\n .command('connect')\n .description('Connect your wallet to Facinet')\n .action(connectCommand);\n\n// Pay command\nprogram\n .command('pay')\n .description('Make a payment via x402 facilitator network')\n .option('-a, --amount <amount>', 'Payment amount in USDC', '1')\n .option('-t, --to <address>', 'Recipient address')\n .option('-c, --chain <chain>', 'Blockchain network (avalanche, ethereum, base, polygon)', 'avalanche')\n .option('-n, --network <url>', 'Custom network URL')\n .action(payCommand);\n\n// Facilitator commands\nconst facilitator = program\n .command('facilitator')\n .alias('fac')\n .description('Manage facilitators');\n\nfacilitator\n .command('create')\n .description('Create a new facilitator')\n .option('-n, --name <name>', 'Facilitator name')\n .option('-r, --recipient <address>', 'Payment recipient address')\n .option(\n '-u, --url <url>',\n 'API URL',\n 'https://x402-avalanche-chi.vercel.app'\n )\n .action(facilitatorCommand.create);\n\nfacilitator\n .command('list')\n .description('List all active facilitators')\n .option(\n '-u, --url <url>',\n 'API URL',\n 'https://x402-avalanche-chi.vercel.app'\n )\n .action(facilitatorCommand.list);\n\nfacilitator\n .command('status <id>')\n .description('Check facilitator status')\n .option(\n '-u, --url <url>',\n 'API URL',\n 'https://x402-avalanche-chi.vercel.app'\n )\n .action(facilitatorCommand.status);\n\nfacilitator\n .command('balance <id>')\n .description('Check facilitator gas balance')\n .option(\n '-u, --url <url>',\n 'API URL',\n 'https://x402-avalanche-chi.vercel.app'\n )\n .action(facilitatorCommand.balance);\n\n// Help command\nprogram.on('--help', () => {\n console.log('');\n console.log(chalk.cyan('Examples:'));\n console.log('');\n console.log(' $ facinet connect');\n console.log(' $ facinet pay --amount 1 --to 0x123... --chain base');\n console.log(' $ facinet facilitator create --name \"MyNode\"');\n console.log(' $ facinet facilitator list');\n console.log(' $ facinet facilitator status fac_xyz123');\n console.log('');\n console.log(chalk.cyan('Supported Chains:'));\n console.log(' avalanche - Avalanche Fuji (Testnet)');\n console.log(' ethereum - Ethereum Sepolia (Testnet)');\n console.log(' base - Base Sepolia (Testnet)');\n console.log(' polygon - Polygon Amoy (Testnet)');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n", "/**\n * Pay Command\n *\n * Make a payment via x402 facilitator network\n */\n\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Wallet, JsonRpcProvider } from 'ethers';\nimport { getConfig } from '../utils/config';\nimport { selectRandomFacilitator } from '../utils/api';\n\nconst CHAINS: Record<string, any> = {\n avalanche: {\n name: 'Avalanche Fuji',\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',\n chainId: 43113,\n },\n ethereum: {\n name: 'Ethereum Sepolia',\n rpcUrl: 'https://ethereum-sepolia-rpc.publicnode.com',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n chainId: 11155111,\n },\n base: {\n name: 'Base Sepolia',\n rpcUrl: 'https://sepolia.base.org',\n usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n chainId: 84532,\n },\n polygon: {\n name: 'Polygon Amoy',\n rpcUrl: 'https://rpc-amoy.polygon.technology',\n usdcAddress: '0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582',\n chainId: 80002,\n },\n};\n\nexport async function payCommand(options: any) {\n console.log(chalk.cyan('\\n\\uD83D\\uDCB3 Make Payment via x402 Network\\n'));\n\n const config = getConfig();\n if (!config.privateKey) {\n console.log(chalk.red('\\u274C No wallet connected. Run `facinet connect` first.'));\n process.exit(1);\n }\n\n let recipient = options.to;\n if (!recipient) {\n const answer = await inquirer.prompt([\n {\n type: 'input',\n name: 'recipient',\n message: 'Recipient address:',\n validate: (input: string) => {\n if (!input.match(/^0x[a-fA-F0-9]{40}$/)) {\n return 'Invalid Ethereum address';\n }\n return true;\n },\n },\n ]);\n recipient = answer.recipient;\n }\n\n const chain = CHAINS[options.chain];\n if (!chain) {\n console.log(chalk.red(`\\u274C Unsupported chain: ${options.chain}. Supported: ${Object.keys(CHAINS).join(', ')}`));\n process.exit(1);\n }\n\n console.log(chalk.gray(`\\n\\uD83D\\uDCCA Payment Details:`));\n console.log(chalk.gray(` Amount: ${options.amount} USDC`));\n console.log(chalk.gray(` To: ${recipient}`));\n console.log(chalk.gray(` Chain: ${chain.name}`));\n console.log(chalk.gray(` Your Address: ${config.address}\\n`));\n\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Proceed with payment?',\n default: true,\n },\n ]);\n\n if (!confirm) {\n console.log(chalk.yellow('Payment cancelled.'));\n process.exit(0);\n }\n\n let spinner = ora('Selecting random facilitator...').start();\n\n try {\n const facilitator = await selectRandomFacilitator(\n config.apiUrl || options.network || 'https://x402-avalanche-chi.vercel.app'\n );\n spinner.succeed(`Selected facilitator: ${chalk.green(facilitator.name)}`);\n\n spinner = ora('Preparing transaction...').start();\n const wallet = new Wallet(config.privateKey);\n const provider = new JsonRpcProvider(chain.rpcUrl);\n const connectedWallet = wallet.connect(provider);\n\n const amount = BigInt(parseFloat(options.amount) * 1000000);\n const validAfter = Math.floor(Date.now() / 1000) - 60;\n const validBefore = validAfter + 3600;\n const nonce =\n '0x' +\n Array.from({ length: 64 }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join('');\n\n const domain = {\n name: 'USD Coin',\n version: '2',\n chainId: chain.chainId,\n verifyingContract: chain.usdcAddress,\n };\n\n const types = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n };\n\n const value = {\n from: wallet.address,\n to: recipient,\n value: amount,\n validAfter,\n validBefore,\n nonce,\n };\n\n spinner.text = 'Signing authorization...';\n const signature = await connectedWallet.signTypedData(domain, types, value);\n spinner.succeed('Authorization signed!');\n\n spinner = ora('Submitting to facilitator...').start();\n\n const paymentPayload = {\n signature,\n authorization: {\n from: wallet.address,\n to: recipient,\n value: amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce,\n },\n };\n\n const axios = require('axios');\n const apiUrl =\n config.apiUrl || options.network || 'https://x402-avalanche-chi.vercel.app';\n const response = await axios.post(`${apiUrl}/api/x402/settle-custom`, {\n facilitatorId: facilitator.id,\n paymentPayload,\n });\n\n if (!response.data.success) {\n throw new Error(response.data.error || 'Payment failed');\n }\n\n spinner.succeed('Payment submitted!');\n\n const txHash = response.data.txHash;\n console.log(chalk.green('\\n\\u2705 Payment processed successfully!'));\n console.log(chalk.gray(`\\n\\uD83D\\uDCC4 Payment Details:`));\n console.log(chalk.gray(` Facilitator: ${facilitator.name}`));\n console.log(chalk.gray(` Amount: ${options.amount} USDC`));\n console.log(chalk.gray(` Recipient: ${recipient}`));\n console.log(chalk.gray(` Chain: ${chain.name}`));\n console.log(chalk.gray(` Transaction: ${txHash}\\n`));\n\n console.log(chalk.cyan(`\\uD83D\\uDD17 View on explorer: ${chain.name.includes('Avalanche')\n ? `https://testnet.snowtrace.io/tx/${txHash}`\n : chain.name.includes('Base')\n ? `https://sepolia.basescan.org/tx/${txHash}`\n : chain.name.includes('Polygon')\n ? `https://amoy.polygonscan.com/tx/${txHash}`\n : `https://sepolia.etherscan.io/tx/${txHash}`\n }\\n`));\n } catch (error: any) {\n spinner.fail('Payment failed');\n console.log(chalk.red(`\\n\\u274C Error: ${error.message}\\n`));\n process.exit(1);\n }\n}\n", "/**\n * Configuration Management\n *\n * Save and load user configuration\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n\nconst CONFIG_DIR = path.join(os.homedir(), '.facinet');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');\n\n/**\n * Get configuration\n */\nexport function getConfig(): Record<string, any> {\n try {\n if (!fs.existsSync(CONFIG_FILE)) {\n return {};\n }\n const data = fs.readFileSync(CONFIG_FILE, 'utf8');\n return JSON.parse(data);\n } catch (error) {\n return {};\n }\n}\n\n/**\n * Save configuration\n */\nexport function saveConfig(config: Record<string, any>): void {\n try {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n }\n const existingConfig = getConfig();\n const newConfig = { ...existingConfig, ...config };\n fs.writeFileSync(CONFIG_FILE, JSON.stringify(newConfig, null, 2), 'utf8');\n } catch (error: any) {\n throw new Error(`Failed to save configuration: ${error.message}`);\n }\n}\n\n/**\n * Clear configuration\n */\nexport function clearConfig(): void {\n try {\n if (fs.existsSync(CONFIG_FILE)) {\n fs.unlinkSync(CONFIG_FILE);\n }\n } catch (error: any) {\n throw new Error(`Failed to clear configuration: ${error.message}`);\n }\n}\n", "/**\n * API Client\n *\n * Interact with x402 backend APIs\n */\n\nimport axios from 'axios';\n\n/**\n * Get all active facilitators\n */\nexport async function listFacilitators(apiUrl: string) {\n try {\n const response = await axios.get(`${apiUrl}/api/facilitator/list`, {\n timeout: 10000,\n headers: {\n 'User-Agent': 'Facinet-CLI/2.3.0',\n },\n });\n\n if (response.data.success) {\n return response.data.facilitators.filter((f: any) => f.status === 'active');\n }\n return [];\n } catch (error: any) {\n throw new Error(\n `Failed to fetch facilitators: ${error.message || error.code || 'Unknown error'}`\n );\n }\n}\n\n/**\n * Select a random active facilitator\n */\nexport async function selectRandomFacilitator(apiUrl: string) {\n const facilitators = await listFacilitators(apiUrl);\n\n if (facilitators.length === 0) {\n throw new Error('No active facilitators available');\n }\n\n const randomIndex = Math.floor(Math.random() * facilitators.length);\n return facilitators[randomIndex];\n}\n\n/**\n * Get facilitator by ID\n */\nexport async function getFacilitatorById(apiUrl: string, id: string) {\n try {\n const response = await axios.get(`${apiUrl}/api/facilitator/list`);\n if (response.data.success) {\n const facilitator = response.data.facilitators.find((f: any) => f.id === id);\n if (!facilitator) {\n throw new Error('Facilitator not found');\n }\n return facilitator;\n }\n throw new Error('Failed to fetch facilitator');\n } catch (error: any) {\n throw new Error(`Failed to get facilitator: ${error.message}`);\n }\n}\n\n/**\n * Get facilitator status\n */\nexport async function getFacilitatorStatus(apiUrl: string, id: string) {\n return getFacilitatorById(apiUrl, id);\n}\n\n/**\n * Get facilitator balance\n */\nexport async function getFacilitatorBalance(apiUrl: string, id: string) {\n try {\n const response = await axios.post(`${apiUrl}/api/facilitator/balance`, {\n facilitatorId: id,\n });\n\n if (response.data.success) {\n return {\n name: response.data.name,\n wallet: response.data.wallet,\n balance: response.data.balance,\n status: response.data.status,\n };\n }\n throw new Error('Failed to fetch balance');\n } catch (error: any) {\n throw new Error(`Failed to get balance: ${error.message}`);\n }\n}\n\n/**\n * Create a new facilitator\n */\nexport async function createFacilitator(apiUrl: string, payload: any) {\n try {\n throw new Error(\n 'Facilitator creation requires payment flow. Please use the web interface at ' +\n apiUrl\n );\n } catch (error: any) {\n throw new Error(`Failed to create facilitator: ${error.message}`);\n }\n}\n\n/**\n * Submit payment to facilitator\n */\nexport async function submitPayment(\n apiUrl: string,\n facilitatorId: string,\n paymentPayload: any\n) {\n try {\n const response = await axios.post(`${apiUrl}/api/x402/settle-custom`, {\n facilitatorId,\n paymentPayload,\n });\n\n if (response.data.success) {\n return {\n txHash: response.data.txHash,\n facilitatorWallet: response.data.facilitatorWallet,\n facilitatorName: response.data.facilitatorName,\n };\n }\n throw new Error('Payment submission failed');\n } catch (error: any) {\n throw new Error(`Failed to submit payment: ${error.message}`);\n }\n}\n", "/**\n * Facilitator Commands\n *\n * Create and manage facilitators\n */\n\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { Wallet } from 'ethers';\nimport { getConfig } from '../utils/config';\nimport {\n listFacilitators,\n createFacilitator,\n getFacilitatorStatus,\n getFacilitatorBalance,\n} from '../utils/api';\n\n/**\n * Create a new facilitator\n */\nasync function create(options: any) {\n console.log(chalk.cyan('\\n\\uD83D\\uDE80 Create New Facilitator\\n'));\n\n const config = getConfig();\n if (!config.privateKey) {\n console.log(chalk.red('\\u274C No wallet connected. Run `facinet connect` first.'));\n process.exit(1);\n }\n\n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'name',\n message: 'Facilitator name:',\n when: !options.name,\n validate: (input: string) => {\n if (input.length < 3 || input.length > 50) {\n return 'Name must be between 3 and 50 characters';\n }\n return true;\n },\n },\n {\n type: 'input',\n name: 'recipient',\n message: 'Payment recipient address:',\n when: !options.recipient,\n default: config.address,\n validate: (input: string) => {\n if (!input.match(/^0x[a-fA-F0-9]{40}$/)) {\n return 'Invalid Ethereum address';\n }\n return true;\n },\n },\n ]);\n\n const name = options.name || answers.name;\n const recipient = options.recipient || answers.recipient;\n\n console.log(chalk.gray(`\\n\\uD83D\\uDCCB Facilitator Details:`));\n console.log(chalk.gray(` Name: ${name}`));\n console.log(chalk.gray(` Recipient: ${recipient}`));\n console.log(chalk.gray(` Creator: ${config.address}\\n`));\n\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Create facilitator? (Requires 1 USDC registration fee)',\n default: true,\n },\n ]);\n\n if (!confirm) {\n console.log(chalk.yellow('Cancelled.'));\n process.exit(0);\n }\n\n const spinner = ora('Creating facilitator...').start();\n\n try {\n const wallet = new Wallet(config.privateKey);\n const facilitatorWallet = Wallet.createRandom();\n\n spinner.text = 'Registering facilitator...';\n\n const result = await createFacilitator(options.url, {\n name,\n facilitatorWallet: facilitatorWallet.address,\n facilitatorPrivateKey: facilitatorWallet.privateKey,\n paymentRecipient: recipient,\n createdBy: wallet.address,\n });\n\n spinner.succeed('Facilitator created!');\n\n console.log(chalk.green('\\n\\u2705 Facilitator created successfully!'));\n console.log(chalk.gray(`\\n\\uD83D\\uDCC4 Details:`));\n console.log(chalk.gray(` ID: ${result.id}`));\n console.log(chalk.gray(` Name: ${name}`));\n console.log(chalk.gray(` Wallet: ${facilitatorWallet.address}`));\n console.log(chalk.gray(` Status: ${result.status}`));\n console.log(chalk.yellow(`\\n\\u26A0\\uFE0F IMPORTANT: Save facilitator wallet private key!`));\n console.log(chalk.gray(` Private Key: ${facilitatorWallet.privateKey}\\n`));\n\n console.log(chalk.cyan('\\uD83D\\uDCA1 Next steps:'));\n console.log(chalk.gray(` 1. Fund facilitator wallet with gas token`));\n console.log(chalk.gray(` 2. Check status: facinet facilitator status ${result.id}`));\n console.log(chalk.gray(` 3. Monitor balance: facinet facilitator balance ${result.id}\\n`));\n } catch (error: any) {\n spinner.fail('Failed to create facilitator');\n console.log(chalk.red(`\\n\\u274C Error: ${error.message}\\n`));\n process.exit(1);\n }\n}\n\n/**\n * List all facilitators\n */\nasync function list(options: any) {\n console.log(chalk.cyan('\\n\\uD83D\\uDCCB Active Facilitators\\n'));\n\n const spinner = ora('Loading facilitators...').start();\n\n try {\n const facilitators = await listFacilitators(options.url);\n spinner.stop();\n\n if (facilitators.length === 0) {\n console.log(chalk.yellow('No active facilitators found.\\n'));\n return;\n }\n\n console.log(chalk.gray(`Found ${facilitators.length} active facilitator(s):\\n`));\n\n facilitators.forEach((fac: any, index: number) => {\n console.log(chalk.cyan(`${index + 1}. ${fac.name}`));\n console.log(chalk.gray(` ID: ${fac.id}`));\n console.log(chalk.gray(` Wallet: ${fac.facilitatorWallet}`));\n console.log(\n chalk.gray(` Status: ${getStatusEmoji(fac.status)} ${fac.status.toUpperCase()}`)\n );\n console.log(chalk.gray(` Payments: ${fac.totalPayments}`));\n console.log(chalk.gray(` Created by: ${fac.createdBy}`));\n console.log('');\n });\n } catch (error: any) {\n spinner.fail('Failed to load facilitators');\n console.log(chalk.red(`\\n\\u274C Error: ${error.message}\\n`));\n process.exit(1);\n }\n}\n\n/**\n * Check facilitator status\n */\nasync function status(id: string, options: any) {\n console.log(chalk.cyan(`\\n\\uD83D\\uDCCA Facilitator Status\\n`));\n\n const spinner = ora('Checking status...').start();\n\n try {\n const fac = await getFacilitatorStatus(options.url, id);\n spinner.stop();\n\n console.log(chalk.cyan(`${fac.name}`));\n console.log(chalk.gray(`ID: ${fac.id}\\n`));\n console.log(\n chalk.gray(\n `Status: ${getStatusEmoji(fac.status)} ${chalk.bold(fac.status.toUpperCase())}`\n )\n );\n console.log(chalk.gray(`Wallet: ${fac.facilitatorWallet}`));\n console.log(chalk.gray(`Recipient: ${fac.paymentRecipient}`));\n console.log(chalk.gray(`Total Payments: ${fac.totalPayments}`));\n console.log(chalk.gray(`Gas Balance: ${fac.gasBalance || 'Unknown'}`));\n console.log(chalk.gray(`Created: ${new Date(fac.lastUsed).toLocaleString()}\\n`));\n\n if (fac.status === 'needs_funding') {\n console.log(chalk.yellow('\\u26A0\\uFE0F Facilitator needs gas token for fees'));\n console.log(chalk.gray(` Send gas token to: ${fac.facilitatorWallet}\\n`));\n }\n } catch (error: any) {\n spinner.fail('Failed to get status');\n console.log(chalk.red(`\\n\\u274C Error: ${error.message}\\n`));\n process.exit(1);\n }\n}\n\n/**\n * Check facilitator balance\n */\nasync function balance(id: string, options: any) {\n console.log(chalk.cyan(`\\n\\uD83D\\uDCB0 Facilitator Balance\\n`));\n\n const spinner = ora('Checking balance...').start();\n\n try {\n const result = await getFacilitatorBalance(options.url, id);\n spinner.stop();\n\n console.log(chalk.gray(`Facilitator: ${result.name}`));\n console.log(chalk.gray(`Wallet: ${result.wallet}\\n`));\n console.log(chalk.cyan(`Balance: ${chalk.bold(result.balance)}`));\n console.log(\n chalk.gray(`Status: ${getStatusEmoji(result.status)} ${result.status.toUpperCase()}\\n`)\n );\n\n if (parseFloat(result.balance) < 0.1) {\n console.log(chalk.yellow('\\u26A0\\uFE0F Low balance! Facilitator may become inactive.\\n'));\n }\n } catch (error: any) {\n spinner.fail('Failed to check balance');\n console.log(chalk.red(`\\n\\u274C Error: ${error.message}\\n`));\n process.exit(1);\n }\n}\n\nfunction getStatusEmoji(status: string): string {\n switch (status) {\n case 'active':\n return '\\u2705';\n case 'needs_funding':\n return '\\u26A0\\uFE0F';\n case 'inactive':\n return '\\u274C';\n default:\n return '\\u2753';\n }\n}\n\nexport const facilitatorCommand = {\n create,\n list,\n status,\n balance,\n};\n", "/**\n * Connect Command\n *\n * Connect wallet to Facinet CLI\n */\n\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport { Wallet } from 'ethers';\nimport { getConfig, saveConfig } from '../utils/config';\nimport ora from 'ora';\n\nexport async function connectCommand() {\n console.log(chalk.cyan('\\n\\uD83D\\uDD17 Connect Wallet to Facinet\\n'));\n\n const { method } = await inquirer.prompt([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to connect?',\n choices: [\n { name: 'Enter Private Key (for testing)', value: 'privateKey' },\n { name: 'Generate New Wallet', value: 'generate' },\n ],\n },\n ]);\n\n if (method === 'privateKey') {\n const { privateKey } = await inquirer.prompt([\n {\n type: 'password',\n name: 'privateKey',\n message: 'Enter your private key:',\n mask: '*',\n },\n ]);\n\n try {\n const wallet = new Wallet(privateKey);\n saveConfig({ privateKey, address: wallet.address });\n console.log(chalk.green('\\n\\u2705 Wallet connected successfully!'));\n console.log(chalk.gray(`Address: ${wallet.address}`));\n } catch (error) {\n console.log(chalk.red('\\n\\u274C Invalid private key'));\n process.exit(1);\n }\n } else {\n const spinner = ora('Generating new wallet...').start();\n const wallet = Wallet.createRandom();\n spinner.succeed('Wallet generated!');\n\n console.log(chalk.green('\\n\\u2705 New wallet created!'));\n console.log(chalk.yellow('\\n\\u26A0\\uFE0F IMPORTANT: Save your private key securely!'));\n console.log(chalk.gray(`\\nAddress: ${wallet.address}`));\n console.log(chalk.gray(`Private Key: ${wallet.privateKey}`));\n console.log(chalk.gray(`Mnemonic: ${wallet.mnemonic?.phrase}\\n`));\n\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Have you saved your private key?',\n default: false,\n },\n ]);\n\n if (!confirm) {\n console.log(chalk.red('\\nPlease save your private key before continuing.'));\n process.exit(0);\n }\n\n saveConfig({ privateKey: wallet.privateKey, address: wallet.address });\n console.log(chalk.green('\\u2705 Configuration saved!'));\n }\n\n const config = getConfig();\n console.log(chalk.cyan('\\n\\uD83D\\uDCE1 Network Configuration:'));\n console.log(chalk.gray(`Network: ${config.network || 'avalanche-fuji'}`));\n console.log(chalk.gray(`API URL: ${config.apiUrl || 'http://localhost:3000'}\\n`));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_chalk", "path", "os", "fs", "axios", "facilitator", "chalk", "inquirer", "ora", "facilitator", "axios", "import_inquirer", "import_chalk", "import_ora", "import_ethers", "chalk", "inquirer", "ora", "status", "import_inquirer", "import_chalk", "import_ethers", "import_ora", "chalk", "inquirer", "ora", "chalk"]
|
|
7
|
+
}
|
package/dist/sdk/Facinet.d.ts
CHANGED
|
@@ -2,19 +2,32 @@
|
|
|
2
2
|
* Facinet SDK - Main Class
|
|
3
3
|
*
|
|
4
4
|
* JavaScript/TypeScript SDK for integrating x402 payments
|
|
5
|
+
* Supports multichain: Avalanche Fuji, Ethereum Sepolia, Base Sepolia, Polygon Amoy
|
|
5
6
|
*/
|
|
6
|
-
import type { FacinetConfig, PaymentParams, PaymentResult, Facilitator } from './types';
|
|
7
|
+
import type { FacinetConfig, PaymentParams, PaymentResult, Facilitator, ChainConfig } from './types';
|
|
7
8
|
export declare class Facinet {
|
|
8
9
|
private config;
|
|
9
10
|
private chain;
|
|
10
11
|
private wallet?;
|
|
11
12
|
constructor(config?: FacinetConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Get the current chain configuration
|
|
15
|
+
*/
|
|
16
|
+
getChain(): ChainConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Get all supported chains
|
|
19
|
+
*/
|
|
20
|
+
static getSupportedChains(): ChainConfig[];
|
|
21
|
+
/**
|
|
22
|
+
* Get supported network names
|
|
23
|
+
*/
|
|
24
|
+
static getSupportedNetworks(): string[];
|
|
12
25
|
/**
|
|
13
26
|
* Make a payment via x402 facilitator network
|
|
14
27
|
*
|
|
15
28
|
* @example
|
|
16
29
|
* ```typescript
|
|
17
|
-
* const facinet = new Facinet();
|
|
30
|
+
* const facinet = new Facinet({ network: 'base-sepolia' });
|
|
18
31
|
* const result = await facinet.pay({
|
|
19
32
|
* amount: '1',
|
|
20
33
|
* recipient: '0xMerchantAddress',
|
|
@@ -37,15 +50,18 @@ export declare class Facinet {
|
|
|
37
50
|
*
|
|
38
51
|
* @example
|
|
39
52
|
* ```typescript
|
|
53
|
+
* // Pay on Base Sepolia
|
|
40
54
|
* await Facinet.quickPay({
|
|
41
55
|
* amount: '1',
|
|
42
56
|
* recipient: '0xMerchantAddress',
|
|
43
|
-
* privateKey: process.env.PRIVATE_KEY
|
|
57
|
+
* privateKey: process.env.PRIVATE_KEY,
|
|
58
|
+
* network: 'base-sepolia'
|
|
44
59
|
* });
|
|
45
60
|
* ```
|
|
46
61
|
*/
|
|
47
62
|
static quickPay(params: PaymentParams & {
|
|
48
63
|
privateKey?: string;
|
|
64
|
+
network?: FacinetConfig['network'];
|
|
49
65
|
}): Promise<PaymentResult>;
|
|
50
66
|
}
|
|
51
67
|
//# sourceMappingURL=Facinet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAqErG,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgF;IAC9F,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAA8B;gBAEjC,MAAM,GAAE,aAAkB;IA0BtC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,WAAW,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;IAIvC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoKxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAc/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAWrD;;;;;;;;;;;;;OAaG;WACU,QAAQ,CACnB,MAAM,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;KAAE,GAClF,OAAO,CAAC,aAAa,CAAC;CAY1B"}
|
package/dist/sdk/Facinet.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Facinet SDK - Main Class
|
|
4
4
|
*
|
|
5
5
|
* JavaScript/TypeScript SDK for integrating x402 payments
|
|
6
|
+
* Supports multichain: Avalanche Fuji, Ethereum Sepolia, Base Sepolia, Polygon Amoy
|
|
6
7
|
*/
|
|
7
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
9
|
if (k2 === undefined) k2 = k;
|
|
@@ -44,42 +45,113 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
44
45
|
exports.Facinet = void 0;
|
|
45
46
|
const axios_1 = __importDefault(require("axios"));
|
|
46
47
|
const ethers_1 = require("ethers");
|
|
48
|
+
// All 4 supported chains
|
|
47
49
|
const CHAINS = {
|
|
48
|
-
avalanche: {
|
|
49
|
-
name: '
|
|
50
|
+
'avalanche-fuji': {
|
|
51
|
+
name: 'avalanche-fuji',
|
|
52
|
+
displayName: 'Avalanche Fuji',
|
|
50
53
|
chainId: 43113,
|
|
51
54
|
rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',
|
|
52
55
|
usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',
|
|
56
|
+
usdcDecimals: 6,
|
|
53
57
|
gasToken: 'AVAX',
|
|
54
58
|
blockExplorer: 'https://testnet.snowtrace.io',
|
|
59
|
+
erc3009DomainName: 'USD Coin',
|
|
60
|
+
erc3009DomainVersion: '2',
|
|
61
|
+
},
|
|
62
|
+
'ethereum-sepolia': {
|
|
63
|
+
name: 'ethereum-sepolia',
|
|
64
|
+
displayName: 'Ethereum Sepolia',
|
|
65
|
+
chainId: 11155111,
|
|
66
|
+
rpcUrl: 'https://ethereum-sepolia-rpc.publicnode.com',
|
|
67
|
+
usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
|
|
68
|
+
usdcDecimals: 6,
|
|
69
|
+
gasToken: 'ETH',
|
|
70
|
+
blockExplorer: 'https://sepolia.etherscan.io',
|
|
71
|
+
erc3009DomainName: 'USDC',
|
|
72
|
+
erc3009DomainVersion: '2',
|
|
73
|
+
},
|
|
74
|
+
'base-sepolia': {
|
|
75
|
+
name: 'base-sepolia',
|
|
76
|
+
displayName: 'Base Sepolia',
|
|
77
|
+
chainId: 84532,
|
|
78
|
+
rpcUrl: 'https://sepolia.base.org',
|
|
79
|
+
usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
80
|
+
usdcDecimals: 6,
|
|
81
|
+
gasToken: 'ETH',
|
|
82
|
+
blockExplorer: 'https://sepolia.basescan.org',
|
|
83
|
+
erc3009DomainName: 'USDC',
|
|
84
|
+
erc3009DomainVersion: '2',
|
|
85
|
+
},
|
|
86
|
+
'polygon-amoy': {
|
|
87
|
+
name: 'polygon-amoy',
|
|
88
|
+
displayName: 'Polygon Amoy',
|
|
89
|
+
chainId: 80002,
|
|
90
|
+
rpcUrl: 'https://rpc-amoy.polygon.technology',
|
|
91
|
+
usdcAddress: '0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582',
|
|
92
|
+
usdcDecimals: 6,
|
|
93
|
+
gasToken: 'MATIC',
|
|
94
|
+
blockExplorer: 'https://amoy.polygonscan.com',
|
|
95
|
+
erc3009DomainName: 'USDC',
|
|
96
|
+
erc3009DomainVersion: '2',
|
|
55
97
|
},
|
|
56
98
|
};
|
|
99
|
+
// Legacy aliases for backwards compatibility
|
|
100
|
+
const NETWORK_ALIASES = {
|
|
101
|
+
'avalanche': 'avalanche-fuji',
|
|
102
|
+
'ethereum': 'ethereum-sepolia',
|
|
103
|
+
'polygon': 'polygon-amoy',
|
|
104
|
+
'base': 'base-sepolia',
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Resolve network name (handles legacy aliases)
|
|
108
|
+
*/
|
|
109
|
+
function resolveNetwork(network) {
|
|
110
|
+
return NETWORK_ALIASES[network] || network;
|
|
111
|
+
}
|
|
57
112
|
class Facinet {
|
|
58
113
|
constructor(config = {}) {
|
|
59
|
-
// Normalize API URL - remove trailing slash
|
|
60
114
|
const apiUrl = (config.apiUrl || 'https://x402-avalanche-chi.vercel.app').replace(/\/$/, '');
|
|
115
|
+
const resolvedNetwork = resolveNetwork(config.network || 'avalanche-fuji');
|
|
61
116
|
this.config = {
|
|
62
|
-
apiUrl
|
|
117
|
+
apiUrl,
|
|
63
118
|
privateKey: config.privateKey || '',
|
|
64
|
-
network:
|
|
119
|
+
network: resolvedNetwork,
|
|
65
120
|
rpcUrl: config.rpcUrl || '',
|
|
66
121
|
};
|
|
67
|
-
this.chain = CHAINS[
|
|
122
|
+
this.chain = CHAINS[resolvedNetwork];
|
|
68
123
|
if (!this.chain) {
|
|
69
|
-
throw new Error(`Unsupported network: ${
|
|
124
|
+
throw new Error(`Unsupported network: ${config.network}. Supported networks: ${Object.keys(CHAINS).join(', ')}`);
|
|
70
125
|
}
|
|
71
|
-
// Initialize wallet if private key provided (Node.js)
|
|
72
126
|
if (this.config.privateKey) {
|
|
73
127
|
const provider = new ethers_1.JsonRpcProvider(this.config.rpcUrl || this.chain.rpcUrl);
|
|
74
128
|
this.wallet = new ethers_1.Wallet(this.config.privateKey, provider);
|
|
75
129
|
}
|
|
76
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the current chain configuration
|
|
133
|
+
*/
|
|
134
|
+
getChain() {
|
|
135
|
+
return { ...this.chain };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all supported chains
|
|
139
|
+
*/
|
|
140
|
+
static getSupportedChains() {
|
|
141
|
+
return Object.values(CHAINS);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get supported network names
|
|
145
|
+
*/
|
|
146
|
+
static getSupportedNetworks() {
|
|
147
|
+
return Object.keys(CHAINS);
|
|
148
|
+
}
|
|
77
149
|
/**
|
|
78
150
|
* Make a payment via x402 facilitator network
|
|
79
151
|
*
|
|
80
152
|
* @example
|
|
81
153
|
* ```typescript
|
|
82
|
-
* const facinet = new Facinet();
|
|
154
|
+
* const facinet = new Facinet({ network: 'base-sepolia' });
|
|
83
155
|
* const result = await facinet.pay({
|
|
84
156
|
* amount: '1',
|
|
85
157
|
* recipient: '0xMerchantAddress',
|
|
@@ -89,21 +161,19 @@ class Facinet {
|
|
|
89
161
|
* ```
|
|
90
162
|
*/
|
|
91
163
|
async pay(params) {
|
|
92
|
-
// Validate parameters
|
|
93
164
|
if (!params.amount || parseFloat(params.amount) <= 0) {
|
|
94
165
|
throw new Error('Invalid amount');
|
|
95
166
|
}
|
|
96
167
|
if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {
|
|
97
168
|
throw new Error('Invalid recipient address');
|
|
98
169
|
}
|
|
99
|
-
//
|
|
170
|
+
// Resolve payer address
|
|
100
171
|
let payerAddress = params.payerAddress || '';
|
|
101
172
|
if (!payerAddress) {
|
|
102
173
|
if (this.wallet) {
|
|
103
174
|
payerAddress = this.wallet.address;
|
|
104
175
|
}
|
|
105
176
|
else if (typeof window !== 'undefined' && window.ethereum) {
|
|
106
|
-
// Browser - get from MetaMask
|
|
107
177
|
const accounts = await window.ethereum.request({
|
|
108
178
|
method: 'eth_requestAccounts',
|
|
109
179
|
});
|
|
@@ -113,21 +183,20 @@ class Facinet {
|
|
|
113
183
|
throw new Error('No payer address provided and no wallet available. Provide payerAddress or privateKey in config.');
|
|
114
184
|
}
|
|
115
185
|
}
|
|
116
|
-
// CRITICAL: Use lowercase addresses for EIP-712 signing (per spec)
|
|
117
186
|
payerAddress = payerAddress.toLowerCase();
|
|
118
187
|
const recipientAddress = params.recipient.toLowerCase();
|
|
119
188
|
// Select random facilitator
|
|
120
189
|
const facilitator = await this.selectRandomFacilitator();
|
|
121
190
|
// Create ERC-3009 authorization
|
|
122
|
-
const amount = BigInt(parseFloat(params.amount) *
|
|
191
|
+
const amount = BigInt(parseFloat(params.amount) * 1e6); // 6 decimals for USDC
|
|
123
192
|
const validAfter = Math.floor(Date.now() / 1000) - 60;
|
|
124
|
-
const validBefore = validAfter + 3600; // 1 hour
|
|
193
|
+
const validBefore = validAfter + 3600; // 1 hour validity
|
|
125
194
|
const nonce = '0x' +
|
|
126
195
|
Array.from({ length: 64 }, () => Math.floor(Math.random() * 16).toString(16)).join('');
|
|
127
|
-
// EIP-712 Domain
|
|
196
|
+
// EIP-712 Domain - uses chain-specific domain name
|
|
128
197
|
const domain = {
|
|
129
|
-
name:
|
|
130
|
-
version:
|
|
198
|
+
name: this.chain.erc3009DomainName,
|
|
199
|
+
version: this.chain.erc3009DomainVersion,
|
|
131
200
|
chainId: this.chain.chainId,
|
|
132
201
|
verifyingContract: this.chain.usdcAddress,
|
|
133
202
|
};
|
|
@@ -142,40 +211,39 @@ class Facinet {
|
|
|
142
211
|
],
|
|
143
212
|
};
|
|
144
213
|
const value = {
|
|
145
|
-
from: payerAddress,
|
|
146
|
-
to: recipientAddress,
|
|
214
|
+
from: payerAddress,
|
|
215
|
+
to: recipientAddress,
|
|
147
216
|
value: amount,
|
|
148
|
-
validAfter
|
|
149
|
-
validBefore
|
|
150
|
-
nonce
|
|
217
|
+
validAfter,
|
|
218
|
+
validBefore,
|
|
219
|
+
nonce,
|
|
151
220
|
};
|
|
152
|
-
// Sign authorization
|
|
221
|
+
// Sign the authorization
|
|
153
222
|
let signature;
|
|
154
223
|
if (this.wallet) {
|
|
155
|
-
// Node.js - sign with wallet (ethers handles BigInt)
|
|
156
224
|
signature = await this.wallet.signTypedData(domain, types, value);
|
|
157
225
|
}
|
|
158
226
|
else if (typeof window !== 'undefined' && window.ethereum) {
|
|
159
|
-
// Browser - Use ethers to format the typed data EXACTLY like CLI
|
|
160
227
|
const { TypedDataEncoder } = await Promise.resolve().then(() => __importStar(require('ethers')));
|
|
161
|
-
// Convert BigInt to string for JSON serialization, but keep structure identical to Node.js
|
|
162
228
|
const messageForSigning = {
|
|
163
229
|
from: payerAddress,
|
|
164
230
|
to: recipientAddress,
|
|
165
231
|
value: amount.toString(),
|
|
166
232
|
validAfter: validAfter.toString(),
|
|
167
233
|
validBefore: validBefore.toString(),
|
|
168
|
-
nonce
|
|
234
|
+
nonce,
|
|
169
235
|
};
|
|
170
|
-
// Use ethers TypedDataEncoder to get the exact hash
|
|
171
|
-
const hash = TypedDataEncoder.hash(domain, types, messageForSigning);
|
|
172
|
-
console.log('🔐 Signing hash:', hash);
|
|
173
|
-
// Create the exact same structure that ethers uses
|
|
174
236
|
const typedDataPayload = JSON.stringify({
|
|
175
237
|
types: {
|
|
238
|
+
EIP712Domain: [
|
|
239
|
+
{ name: 'name', type: 'string' },
|
|
240
|
+
{ name: 'version', type: 'string' },
|
|
241
|
+
{ name: 'chainId', type: 'uint256' },
|
|
242
|
+
{ name: 'verifyingContract', type: 'address' },
|
|
243
|
+
],
|
|
176
244
|
TransferWithAuthorization: types.TransferWithAuthorization,
|
|
177
245
|
},
|
|
178
|
-
domain
|
|
246
|
+
domain,
|
|
179
247
|
primaryType: 'TransferWithAuthorization',
|
|
180
248
|
message: messageForSigning,
|
|
181
249
|
});
|
|
@@ -183,36 +251,27 @@ class Facinet {
|
|
|
183
251
|
method: 'eth_signTypedData_v4',
|
|
184
252
|
params: [payerAddress, typedDataPayload],
|
|
185
253
|
});
|
|
186
|
-
console.log('🔐 Signature:', signature, 'Length:', signature.length);
|
|
187
254
|
}
|
|
188
255
|
else {
|
|
189
256
|
throw new Error('No signing method available');
|
|
190
257
|
}
|
|
191
|
-
|
|
192
|
-
from: payerAddress, // Checksummed
|
|
193
|
-
to: recipientAddress, // Checksummed
|
|
194
|
-
value: amount.toString(),
|
|
195
|
-
validAfter: validAfter.toString(),
|
|
196
|
-
validBefore: validBefore.toString(),
|
|
197
|
-
nonce: nonce,
|
|
198
|
-
signature: signature?.slice(0, 20) + '...',
|
|
199
|
-
});
|
|
200
|
-
// Submit to facilitator
|
|
258
|
+
// Build payment payload
|
|
201
259
|
const paymentPayload = {
|
|
202
260
|
signature,
|
|
203
261
|
authorization: {
|
|
204
|
-
from: payerAddress,
|
|
205
|
-
to: recipientAddress,
|
|
262
|
+
from: payerAddress,
|
|
263
|
+
to: recipientAddress,
|
|
206
264
|
value: amount.toString(),
|
|
207
265
|
validAfter: validAfter.toString(),
|
|
208
266
|
validBefore: validBefore.toString(),
|
|
209
|
-
nonce
|
|
267
|
+
nonce,
|
|
210
268
|
},
|
|
211
269
|
};
|
|
270
|
+
// Submit to facilitator
|
|
212
271
|
try {
|
|
213
272
|
const response = await axios_1.default.post(`${this.config.apiUrl}/api/x402/settle-custom`, {
|
|
214
273
|
facilitatorId: facilitator.id,
|
|
215
|
-
paymentPayload
|
|
274
|
+
paymentPayload,
|
|
216
275
|
});
|
|
217
276
|
if (!response.data.success) {
|
|
218
277
|
throw new Error(response.data.error || response.data.message || 'Payment failed');
|
|
@@ -226,15 +285,14 @@ class Facinet {
|
|
|
226
285
|
wallet: facilitator.facilitatorWallet,
|
|
227
286
|
},
|
|
228
287
|
payment: {
|
|
229
|
-
from: payerAddress,
|
|
230
|
-
to: recipientAddress,
|
|
288
|
+
from: payerAddress,
|
|
289
|
+
to: recipientAddress,
|
|
231
290
|
amount: params.amount,
|
|
232
291
|
network: this.config.network,
|
|
233
292
|
},
|
|
234
293
|
};
|
|
235
294
|
}
|
|
236
295
|
catch (error) {
|
|
237
|
-
// Enhanced error handling with backend error details
|
|
238
296
|
if (error.response?.data) {
|
|
239
297
|
const backendError = error.response.data.message || error.response.data.error;
|
|
240
298
|
throw new Error(`Payment failed: ${backendError}`);
|
|
@@ -268,16 +326,19 @@ class Facinet {
|
|
|
268
326
|
*
|
|
269
327
|
* @example
|
|
270
328
|
* ```typescript
|
|
329
|
+
* // Pay on Base Sepolia
|
|
271
330
|
* await Facinet.quickPay({
|
|
272
331
|
* amount: '1',
|
|
273
332
|
* recipient: '0xMerchantAddress',
|
|
274
|
-
* privateKey: process.env.PRIVATE_KEY
|
|
333
|
+
* privateKey: process.env.PRIVATE_KEY,
|
|
334
|
+
* network: 'base-sepolia'
|
|
275
335
|
* });
|
|
276
336
|
* ```
|
|
277
337
|
*/
|
|
278
338
|
static async quickPay(params) {
|
|
279
339
|
const facinet = new Facinet({
|
|
280
340
|
privateKey: params.privateKey,
|
|
341
|
+
network: params.network,
|
|
281
342
|
});
|
|
282
343
|
return facinet.pay({
|
|
283
344
|
amount: params.amount,
|
package/dist/sdk/Facinet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/types.d.ts
CHANGED
|
@@ -14,9 +14,9 @@ export interface FacinetConfig {
|
|
|
14
14
|
privateKey?: string;
|
|
15
15
|
/**
|
|
16
16
|
* Network to use
|
|
17
|
-
* @default 'avalanche'
|
|
17
|
+
* @default 'avalanche-fuji'
|
|
18
18
|
*/
|
|
19
|
-
network?: 'avalanche' | 'ethereum' | 'polygon';
|
|
19
|
+
network?: 'avalanche-fuji' | 'ethereum-sepolia' | 'base-sepolia' | 'polygon-amoy' | 'avalanche' | 'ethereum' | 'polygon' | 'base';
|
|
20
20
|
/**
|
|
21
21
|
* Custom RPC URL (optional)
|
|
22
22
|
*/
|
|
@@ -74,13 +74,19 @@ export interface Facilitator {
|
|
|
74
74
|
status: 'active' | 'inactive' | 'needs_funding';
|
|
75
75
|
totalPayments: number;
|
|
76
76
|
gasBalance?: string;
|
|
77
|
+
network?: string;
|
|
78
|
+
chainId?: number;
|
|
77
79
|
}
|
|
78
80
|
export interface ChainConfig {
|
|
79
81
|
name: string;
|
|
82
|
+
displayName: string;
|
|
80
83
|
chainId: number;
|
|
81
84
|
rpcUrl: string;
|
|
82
85
|
usdcAddress: `0x${string}`;
|
|
86
|
+
usdcDecimals: number;
|
|
83
87
|
gasToken: string;
|
|
84
88
|
blockExplorer: string;
|
|
89
|
+
erc3009DomainName: string;
|
|
90
|
+
erc3009DomainVersion: string;
|
|
85
91
|
}
|
|
86
92
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/sdk/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAElI;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B"}
|
package/dist/sdk.d.ts
CHANGED
package/dist/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC"}
|