facinet 2.0.1 ā 2.0.4
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/browser.js +17 -12
- package/dist/browser.js.map +2 -2
- package/dist/commands/pay.d.ts.map +1 -1
- package/dist/commands/pay.js +17 -3
- package/dist/commands/pay.js.map +1 -1
- package/dist/sdk/Facinet.d.ts.map +1 -1
- package/dist/sdk/Facinet.js +19 -13
- package/dist/sdk/Facinet.js.map +1 -1
- package/dist/sdk.mjs +17 -12
- package/dist/sdk.mjs.map +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBA6JnD"}
|
package/dist/commands/pay.js
CHANGED
|
@@ -125,7 +125,6 @@ async function payCommand(options) {
|
|
|
125
125
|
spinner.succeed('Authorization signed!');
|
|
126
126
|
// Send to facilitator for execution
|
|
127
127
|
spinner = (0, ora_1.default)('Submitting to facilitator...').start();
|
|
128
|
-
// In real implementation, call your API here
|
|
129
128
|
const paymentPayload = {
|
|
130
129
|
signature,
|
|
131
130
|
authorization: {
|
|
@@ -137,14 +136,29 @@ async function payCommand(options) {
|
|
|
137
136
|
nonce: nonce,
|
|
138
137
|
},
|
|
139
138
|
};
|
|
139
|
+
// Submit to API
|
|
140
|
+
const axios = require('axios');
|
|
141
|
+
const apiUrl = config.apiUrl || options.network || 'https://x402-avalanche-chi.vercel.app';
|
|
142
|
+
const response = await axios.post(`${apiUrl}/api/x402/settle-custom`, {
|
|
143
|
+
facilitatorId: facilitator.id,
|
|
144
|
+
paymentPayload: paymentPayload,
|
|
145
|
+
});
|
|
146
|
+
if (!response.data.success) {
|
|
147
|
+
throw new Error(response.data.error || 'Payment failed');
|
|
148
|
+
}
|
|
140
149
|
spinner.succeed('Payment submitted!');
|
|
150
|
+
const txHash = response.data.txHash;
|
|
141
151
|
console.log(chalk_1.default.green('\nā
Payment processed successfully!'));
|
|
142
152
|
console.log(chalk_1.default.gray(`\nš Payment Details:`));
|
|
143
153
|
console.log(chalk_1.default.gray(` Facilitator: ${facilitator.name}`));
|
|
144
154
|
console.log(chalk_1.default.gray(` Amount: ${options.amount} USDC`));
|
|
145
155
|
console.log(chalk_1.default.gray(` Recipient: ${recipient}`));
|
|
146
|
-
console.log(chalk_1.default.gray(` Chain: ${chain.name}
|
|
147
|
-
console.log(chalk_1.default.
|
|
156
|
+
console.log(chalk_1.default.gray(` Chain: ${chain.name}`));
|
|
157
|
+
console.log(chalk_1.default.gray(` Transaction: ${txHash}\n`));
|
|
158
|
+
const explorerUrl = chain.name.includes('Avalanche')
|
|
159
|
+
? `https://testnet.snowtrace.io/tx/${txHash}`
|
|
160
|
+
: `https://sepolia.etherscan.io/tx/${txHash}`;
|
|
161
|
+
console.log(chalk_1.default.cyan(`š View on explorer: ${explorerUrl}\n`));
|
|
148
162
|
}
|
|
149
163
|
catch (error) {
|
|
150
164
|
spinner.fail('Payment failed');
|
package/dist/commands/pay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAmCH,
|
|
1
|
+
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAC;AAiCjB,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAsBtC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAC;AAiCjB,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAsBtC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAiJxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAc/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAWrD;;;;;;;;;;;OAWG;WACU,QAAQ,CACnB,MAAM,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,aAAa,CAAC;CAW1B"}
|
package/dist/sdk/Facinet.js
CHANGED
|
@@ -133,22 +133,30 @@ class Facinet {
|
|
|
133
133
|
// Sign authorization
|
|
134
134
|
let signature;
|
|
135
135
|
if (this.wallet) {
|
|
136
|
-
// Node.js - sign with wallet
|
|
136
|
+
// Node.js - sign with wallet (ethers handles BigInt)
|
|
137
137
|
signature = await this.wallet.signTypedData(domain, types, value);
|
|
138
138
|
}
|
|
139
139
|
else if (typeof window !== 'undefined' && window.ethereum) {
|
|
140
140
|
// Browser - sign with MetaMask
|
|
141
|
+
// Convert BigInt to hex string for MetaMask (proper uint256 format)
|
|
142
|
+
const messageForBrowser = {
|
|
143
|
+
from: payerAddress,
|
|
144
|
+
to: params.recipient,
|
|
145
|
+
value: '0x' + amount.toString(16), // BigInt to hex string
|
|
146
|
+
validAfter: validAfter,
|
|
147
|
+
validBefore: validBefore,
|
|
148
|
+
nonce: nonce,
|
|
149
|
+
};
|
|
150
|
+
// Custom JSON stringify that handles hex strings
|
|
151
|
+
const jsonMessage = JSON.stringify({
|
|
152
|
+
domain,
|
|
153
|
+
types,
|
|
154
|
+
primaryType: 'TransferWithAuthorization',
|
|
155
|
+
message: messageForBrowser,
|
|
156
|
+
});
|
|
141
157
|
signature = await window.ethereum.request({
|
|
142
158
|
method: 'eth_signTypedData_v4',
|
|
143
|
-
params: [
|
|
144
|
-
payerAddress,
|
|
145
|
-
JSON.stringify({
|
|
146
|
-
domain,
|
|
147
|
-
types,
|
|
148
|
-
primaryType: 'TransferWithAuthorization',
|
|
149
|
-
message: value,
|
|
150
|
-
}),
|
|
151
|
-
],
|
|
159
|
+
params: [payerAddress, jsonMessage],
|
|
152
160
|
});
|
|
153
161
|
}
|
|
154
162
|
else {
|
|
@@ -168,9 +176,7 @@ class Facinet {
|
|
|
168
176
|
};
|
|
169
177
|
const response = await axios_1.default.post(`${this.config.apiUrl}/api/x402/settle-custom`, {
|
|
170
178
|
facilitatorId: facilitator.id,
|
|
171
|
-
paymentPayload:
|
|
172
|
-
payload: paymentPayload,
|
|
173
|
-
},
|
|
179
|
+
paymentPayload: paymentPayload,
|
|
174
180
|
});
|
|
175
181
|
if (!response.data.success) {
|
|
176
182
|
throw new Error('Payment failed: ' + (response.data.error || 'Unknown error'));
|
package/dist/sdk/Facinet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.mjs
CHANGED
|
@@ -119,17 +119,24 @@ var Facinet = class _Facinet {
|
|
|
119
119
|
if (this.wallet) {
|
|
120
120
|
signature = await this.wallet.signTypedData(domain, types, value);
|
|
121
121
|
} else if (typeof window !== "undefined" && window.ethereum) {
|
|
122
|
+
const messageForBrowser = {
|
|
123
|
+
from: payerAddress,
|
|
124
|
+
to: params.recipient,
|
|
125
|
+
value: "0x" + amount.toString(16),
|
|
126
|
+
// BigInt to hex string
|
|
127
|
+
validAfter,
|
|
128
|
+
validBefore,
|
|
129
|
+
nonce
|
|
130
|
+
};
|
|
131
|
+
const jsonMessage = JSON.stringify({
|
|
132
|
+
domain,
|
|
133
|
+
types,
|
|
134
|
+
primaryType: "TransferWithAuthorization",
|
|
135
|
+
message: messageForBrowser
|
|
136
|
+
});
|
|
122
137
|
signature = await window.ethereum.request({
|
|
123
138
|
method: "eth_signTypedData_v4",
|
|
124
|
-
params: [
|
|
125
|
-
payerAddress,
|
|
126
|
-
JSON.stringify({
|
|
127
|
-
domain,
|
|
128
|
-
types,
|
|
129
|
-
primaryType: "TransferWithAuthorization",
|
|
130
|
-
message: value
|
|
131
|
-
})
|
|
132
|
-
]
|
|
139
|
+
params: [payerAddress, jsonMessage]
|
|
133
140
|
});
|
|
134
141
|
} else {
|
|
135
142
|
throw new Error("No signing method available");
|
|
@@ -149,9 +156,7 @@ var Facinet = class _Facinet {
|
|
|
149
156
|
`${this.config.apiUrl}/api/x402/settle-custom`,
|
|
150
157
|
{
|
|
151
158
|
facilitatorId: facilitator.id,
|
|
152
|
-
paymentPayload
|
|
153
|
-
payload: paymentPayload
|
|
154
|
-
}
|
|
159
|
+
paymentPayload
|
|
155
160
|
}
|
|
156
161
|
);
|
|
157
162
|
if (!response.data.success) {
|
package/dist/sdk.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/sdk/Facinet.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Facinet SDK - Main Class\n *\n * JavaScript/TypeScript SDK for integrating x402 payments\n */\n\nimport axios from 'axios';\nimport { Wallet, JsonRpcProvider, Contract } from 'ethers';\nimport type {\n FacinetConfig,\n PaymentParams,\n PaymentResult,\n Facilitator,\n ChainConfig,\n} from './types';\n\nconst CHAINS: Record<string, ChainConfig> = {\n avalanche: {\n name: 'Avalanche Fuji',\n chainId: 43113,\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',\n gasToken: 'AVAX',\n blockExplorer: 'https://testnet.snowtrace.io',\n },\n ethereum: {\n name: 'Ethereum Sepolia',\n chainId: 11155111,\n rpcUrl: 'https://rpc.sepolia.org',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n gasToken: 'ETH',\n blockExplorer: 'https://sepolia.etherscan.io',\n },\n polygon: {\n name: 'Polygon Mumbai',\n chainId: 80001,\n rpcUrl: 'https://rpc-mumbai.maticvigil.com',\n usdcAddress: '0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97',\n gasToken: 'MATIC',\n blockExplorer: 'https://mumbai.polygonscan.com',\n },\n};\n\nconst ERC3009_ABI = [\n 'function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external',\n];\n\nexport class Facinet {\n private config: Required<FacinetConfig>;\n private chain: ChainConfig;\n private wallet?: Wallet;\n\n constructor(config: FacinetConfig = {}) {\n this.config = {\n apiUrl: config.apiUrl || 'https://x402-avalanche-chi.vercel.app',\n privateKey: config.privateKey || '',\n network: config.network || 'avalanche',\n rpcUrl: config.rpcUrl || '',\n };\n\n this.chain = CHAINS[this.config.network];\n if (!this.chain) {\n throw new Error(`Unsupported network: ${this.config.network}`);\n }\n\n // Initialize wallet if private key provided (Node.js)\n if (this.config.privateKey) {\n const provider = new JsonRpcProvider(\n this.config.rpcUrl || this.chain.rpcUrl\n );\n this.wallet = new Wallet(this.config.privateKey, provider);\n }\n }\n\n /**\n * Make a payment via x402 facilitator network\n *\n * @example\n * ```typescript\n * const facinet = new Facinet();\n * const result = await facinet.pay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * payerAddress: '0xCustomerAddress'\n * });\n * console.log('Payment successful!', result.txHash);\n * ```\n */\n async pay(params: PaymentParams): Promise<PaymentResult> {\n // Validate parameters\n if (!params.amount || parseFloat(params.amount) <= 0) {\n throw new Error('Invalid amount');\n }\n\n if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {\n throw new Error('Invalid recipient address');\n }\n\n // Get payer address\n let payerAddress: string = params.payerAddress || '';\n if (!payerAddress) {\n if (this.wallet) {\n payerAddress = this.wallet.address;\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - get from MetaMask\n const accounts = await (window as any).ethereum.request({\n method: 'eth_requestAccounts',\n });\n payerAddress = accounts[0];\n } else {\n throw new Error(\n 'No payer address provided and no wallet available. Provide payerAddress or privateKey in config.'\n );\n }\n }\n\n // Select random facilitator\n const facilitator = await this.selectRandomFacilitator();\n\n // Create ERC-3009 authorization\n const amount = BigInt(parseFloat(params.amount) * 1_000_000); // 6 decimals\n const validAfter = Math.floor(Date.now() / 1000) - 60;\n const validBefore = validAfter + 3600; // 1 hour\n const nonce =\n '0x' +\n Array.from({ length: 64 }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join('');\n\n // EIP-712 Domain\n const domain = {\n name: 'USD Coin',\n version: '2',\n chainId: this.chain.chainId,\n verifyingContract: this.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: payerAddress,\n to: params.recipient, // Payment goes to merchant's address!\n value: amount,\n validAfter: validAfter,\n validBefore: validBefore,\n nonce: nonce,\n };\n\n // Sign authorization\n let signature: string;\n\n if (this.wallet) {\n // Node.js - sign with wallet\n signature = await this.wallet.signTypedData(domain, types, value);\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - sign with MetaMask\n
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/**\n * Facinet SDK - Main Class\n *\n * JavaScript/TypeScript SDK for integrating x402 payments\n */\n\nimport axios from 'axios';\nimport { Wallet, JsonRpcProvider, Contract } from 'ethers';\nimport type {\n FacinetConfig,\n PaymentParams,\n PaymentResult,\n Facilitator,\n ChainConfig,\n} from './types';\n\nconst CHAINS: Record<string, ChainConfig> = {\n avalanche: {\n name: 'Avalanche Fuji',\n chainId: 43113,\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',\n gasToken: 'AVAX',\n blockExplorer: 'https://testnet.snowtrace.io',\n },\n ethereum: {\n name: 'Ethereum Sepolia',\n chainId: 11155111,\n rpcUrl: 'https://rpc.sepolia.org',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n gasToken: 'ETH',\n blockExplorer: 'https://sepolia.etherscan.io',\n },\n polygon: {\n name: 'Polygon Mumbai',\n chainId: 80001,\n rpcUrl: 'https://rpc-mumbai.maticvigil.com',\n usdcAddress: '0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97',\n gasToken: 'MATIC',\n blockExplorer: 'https://mumbai.polygonscan.com',\n },\n};\n\nconst ERC3009_ABI = [\n 'function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external',\n];\n\nexport class Facinet {\n private config: Required<FacinetConfig>;\n private chain: ChainConfig;\n private wallet?: Wallet;\n\n constructor(config: FacinetConfig = {}) {\n this.config = {\n apiUrl: config.apiUrl || 'https://x402-avalanche-chi.vercel.app',\n privateKey: config.privateKey || '',\n network: config.network || 'avalanche',\n rpcUrl: config.rpcUrl || '',\n };\n\n this.chain = CHAINS[this.config.network];\n if (!this.chain) {\n throw new Error(`Unsupported network: ${this.config.network}`);\n }\n\n // Initialize wallet if private key provided (Node.js)\n if (this.config.privateKey) {\n const provider = new JsonRpcProvider(\n this.config.rpcUrl || this.chain.rpcUrl\n );\n this.wallet = new Wallet(this.config.privateKey, provider);\n }\n }\n\n /**\n * Make a payment via x402 facilitator network\n *\n * @example\n * ```typescript\n * const facinet = new Facinet();\n * const result = await facinet.pay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * payerAddress: '0xCustomerAddress'\n * });\n * console.log('Payment successful!', result.txHash);\n * ```\n */\n async pay(params: PaymentParams): Promise<PaymentResult> {\n // Validate parameters\n if (!params.amount || parseFloat(params.amount) <= 0) {\n throw new Error('Invalid amount');\n }\n\n if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {\n throw new Error('Invalid recipient address');\n }\n\n // Get payer address\n let payerAddress: string = params.payerAddress || '';\n if (!payerAddress) {\n if (this.wallet) {\n payerAddress = this.wallet.address;\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - get from MetaMask\n const accounts = await (window as any).ethereum.request({\n method: 'eth_requestAccounts',\n });\n payerAddress = accounts[0];\n } else {\n throw new Error(\n 'No payer address provided and no wallet available. Provide payerAddress or privateKey in config.'\n );\n }\n }\n\n // Select random facilitator\n const facilitator = await this.selectRandomFacilitator();\n\n // Create ERC-3009 authorization\n const amount = BigInt(parseFloat(params.amount) * 1_000_000); // 6 decimals\n const validAfter = Math.floor(Date.now() / 1000) - 60;\n const validBefore = validAfter + 3600; // 1 hour\n const nonce =\n '0x' +\n Array.from({ length: 64 }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join('');\n\n // EIP-712 Domain\n const domain = {\n name: 'USD Coin',\n version: '2',\n chainId: this.chain.chainId,\n verifyingContract: this.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: payerAddress,\n to: params.recipient, // Payment goes to merchant's address!\n value: amount,\n validAfter: validAfter,\n validBefore: validBefore,\n nonce: nonce,\n };\n\n // Sign authorization\n let signature: string;\n\n if (this.wallet) {\n // Node.js - sign with wallet (ethers handles BigInt)\n signature = await this.wallet.signTypedData(domain, types, value);\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - sign with MetaMask\n // Convert BigInt to hex string for MetaMask (proper uint256 format)\n const messageForBrowser = {\n from: payerAddress,\n to: params.recipient,\n value: '0x' + amount.toString(16), // BigInt to hex string\n validAfter: validAfter,\n validBefore: validBefore,\n nonce: nonce,\n };\n\n // Custom JSON stringify that handles hex strings\n const jsonMessage = JSON.stringify({\n domain,\n types,\n primaryType: 'TransferWithAuthorization',\n message: messageForBrowser,\n });\n\n signature = await (window as any).ethereum.request({\n method: 'eth_signTypedData_v4',\n params: [payerAddress, jsonMessage],\n });\n } else {\n throw new Error('No signing method available');\n }\n\n // Submit to facilitator\n const paymentPayload = {\n signature,\n authorization: {\n from: payerAddress,\n to: params.recipient,\n value: amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n },\n };\n\n const response = await axios.post(\n `${this.config.apiUrl}/api/x402/settle-custom`,\n {\n facilitatorId: facilitator.id,\n paymentPayload: paymentPayload,\n }\n );\n\n if (!response.data.success) {\n throw new Error('Payment failed: ' + (response.data.error || 'Unknown error'));\n }\n\n return {\n success: true,\n txHash: response.data.txHash,\n facilitator: {\n id: facilitator.id,\n name: facilitator.name,\n wallet: facilitator.facilitatorWallet,\n },\n payment: {\n from: payerAddress,\n to: params.recipient,\n amount: params.amount,\n network: this.config.network,\n },\n };\n }\n\n /**\n * Get all active facilitators\n */\n async getFacilitators(): Promise<Facilitator[]> {\n const response = await axios.get(\n `${this.config.apiUrl}/api/facilitator/list`\n );\n\n if (response.data.success) {\n return response.data.facilitators.filter(\n (f: Facilitator) => f.status === 'active'\n );\n }\n\n return [];\n }\n\n /**\n * Select a random active facilitator\n */\n async selectRandomFacilitator(): Promise<Facilitator> {\n const facilitators = await this.getFacilitators();\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 * Quick payment helper (static method)\n *\n * @example\n * ```typescript\n * await Facinet.quickPay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * privateKey: process.env.PRIVATE_KEY\n * });\n * ```\n */\n static async quickPay(\n params: PaymentParams & { privateKey?: string }\n ): Promise<PaymentResult> {\n const facinet = new Facinet({\n privateKey: params.privateKey,\n });\n\n return facinet.pay({\n amount: params.amount,\n recipient: params.recipient,\n payerAddress: params.payerAddress,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAMA,OAAO,WAAW;AAClB,SAAS,QAAQ,uBAAiC;AASlD,IAAM,SAAsC;AAAA,EAC1C,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,eAAe;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,eAAe;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,eAAe;AAAA,EACjB;AACF;AAMO,IAAM,UAAN,MAAM,SAAQ;AAAA,EAKnB,YAAY,SAAwB,CAAC,GAAG;AACtC,SAAK,SAAS;AAAA,MACZ,QAAQ,OAAO,UAAU;AAAA,MACzB,YAAY,OAAO,cAAc;AAAA,MACjC,SAAS,OAAO,WAAW;AAAA,MAC3B,QAAQ,OAAO,UAAU;AAAA,IAC3B;AAEA,SAAK,QAAQ,OAAO,KAAK,OAAO,OAAO;AACvC,QAAI,CAAC,KAAK,OAAO;AACf,YAAM,IAAI,MAAM,wBAAwB,KAAK,OAAO,OAAO,EAAE;AAAA,IAC/D;AAGA,QAAI,KAAK,OAAO,YAAY;AAC1B,YAAM,WAAW,IAAI;AAAA,QACnB,KAAK,OAAO,UAAU,KAAK,MAAM;AAAA,MACnC;AACA,WAAK,SAAS,IAAI,OAAO,KAAK,OAAO,YAAY,QAAQ;AAAA,IAC3D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,IAAI,QAA+C;AAEvD,QAAI,CAAC,OAAO,UAAU,WAAW,OAAO,MAAM,KAAK,GAAG;AACpD,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAClC;AAEA,QAAI,CAAC,OAAO,UAAU,MAAM,qBAAqB,GAAG;AAClD,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAGA,QAAI,eAAuB,OAAO,gBAAgB;AAClD,QAAI,CAAC,cAAc;AACjB,UAAI,KAAK,QAAQ;AACf,uBAAe,KAAK,OAAO;AAAA,MAC7B,WAAW,OAAO,WAAW,eAAgB,OAAe,UAAU;AAEpE,cAAM,WAAW,MAAO,OAAe,SAAS,QAAQ;AAAA,UACtD,QAAQ;AAAA,QACV,CAAC;AACD,uBAAe,SAAS,CAAC;AAAA,MAC3B,OAAO;AACL,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,UAAM,cAAc,MAAM,KAAK,wBAAwB;AAGvD,UAAM,SAAS,OAAO,WAAW,OAAO,MAAM,IAAI,GAAS;AAC3D,UAAM,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI;AACnD,UAAM,cAAc,aAAa;AACjC,UAAM,QACJ,OACA,MAAM;AAAA,MAAK,EAAE,QAAQ,GAAG;AAAA,MAAG,MACzB,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AAAA,IAC5C,EAAE,KAAK,EAAE;AAGX,UAAM,SAAS;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,KAAK,MAAM;AAAA,MACpB,mBAAmB,KAAK,MAAM;AAAA,IAChC;AAEA,UAAM,QAAQ;AAAA,MACZ,2BAA2B;AAAA,QACzB,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,QAChC,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,QAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACjC,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,QACtC,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,QACvC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA,MACZ,MAAM;AAAA,MACN,IAAI,OAAO;AAAA;AAAA,MACX,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,QAAI;AAEJ,QAAI,KAAK,QAAQ;AAEf,kBAAY,MAAM,KAAK,OAAO,cAAc,QAAQ,OAAO,KAAK;AAAA,IAClE,WAAW,OAAO,WAAW,eAAgB,OAAe,UAAU;AAGpE,YAAM,oBAAoB;AAAA,QACxB,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,OAAO,OAAO,OAAO,SAAS,EAAE;AAAA;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAGA,YAAM,cAAc,KAAK,UAAU;AAAA,QACjC;AAAA,QACA;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAED,kBAAY,MAAO,OAAe,SAAS,QAAQ;AAAA,QACjD,QAAQ;AAAA,QACR,QAAQ,CAAC,cAAc,WAAW;AAAA,MACpC,CAAC;AAAA,IACH,OAAO;AACL,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAGA,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,eAAe;AAAA,QACb,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,OAAO,OAAO,SAAS;AAAA,QACvB,YAAY,WAAW,SAAS;AAAA,QAChC,aAAa,YAAY,SAAS;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,MAAM;AAAA,MAC3B,GAAG,KAAK,OAAO,MAAM;AAAA,MACrB;AAAA,QACE,eAAe,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,KAAK,SAAS;AAC1B,YAAM,IAAI,MAAM,sBAAsB,SAAS,KAAK,SAAS,gBAAgB;AAAA,IAC/E;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ,SAAS,KAAK;AAAA,MACtB,aAAa;AAAA,QACX,IAAI,YAAY;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,QAAQ,OAAO;AAAA,QACf,SAAS,KAAK,OAAO;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAA0C;AAC9C,UAAM,WAAW,MAAM,MAAM;AAAA,MAC3B,GAAG,KAAK,OAAO,MAAM;AAAA,IACvB;AAEA,QAAI,SAAS,KAAK,SAAS;AACzB,aAAO,SAAS,KAAK,aAAa;AAAA,QAChC,CAAC,MAAmB,EAAE,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,CAAC;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,0BAAgD;AACpD,UAAM,eAAe,MAAM,KAAK,gBAAgB;AAEhD,QAAI,aAAa,WAAW,GAAG;AAC7B,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,UAAM,cAAc,KAAK,MAAM,KAAK,OAAO,IAAI,aAAa,MAAM;AAClE,WAAO,aAAa,WAAW;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,aAAa,SACX,QACwB;AACxB,UAAM,UAAU,IAAI,SAAQ;AAAA,MAC1B,YAAY,OAAO;AAAA,IACrB,CAAC;AAED,WAAO,QAAQ,IAAI;AAAA,MACjB,QAAQ,OAAO;AAAA,MACf,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,IACvB,CAAC;AAAA,EACH;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|