@bankofai/x402-evm 1.0.0-beta.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 +172 -0
- package/dist/cjs/auth-capture/client/index.d.ts +44 -0
- package/dist/cjs/auth-capture/client/index.js +298 -0
- package/dist/cjs/auth-capture/client/index.js.map +1 -0
- package/dist/cjs/batch-settlement/client/file-storage.d.ts +47 -0
- package/dist/cjs/batch-settlement/client/file-storage.js +116 -0
- package/dist/cjs/batch-settlement/client/file-storage.js.map +1 -0
- package/dist/cjs/batch-settlement/client/index.d.ts +111 -0
- package/dist/cjs/batch-settlement/client/index.js +1565 -0
- package/dist/cjs/batch-settlement/client/index.js.map +1 -0
- package/dist/cjs/batch-settlement/facilitator/index.d.ts +72 -0
- package/dist/cjs/batch-settlement/facilitator/index.js +2102 -0
- package/dist/cjs/batch-settlement/facilitator/index.js.map +1 -0
- package/dist/cjs/batch-settlement/server/file-storage.d.ts +53 -0
- package/dist/cjs/batch-settlement/server/file-storage.js +181 -0
- package/dist/cjs/batch-settlement/server/file-storage.js.map +1 -0
- package/dist/cjs/batch-settlement/server/index.d.ts +491 -0
- package/dist/cjs/batch-settlement/server/index.js +1978 -0
- package/dist/cjs/batch-settlement/server/index.js.map +1 -0
- package/dist/cjs/batch-settlement/server/redis-storage.d.ts +87 -0
- package/dist/cjs/batch-settlement/server/redis-storage.js +181 -0
- package/dist/cjs/batch-settlement/server/redis-storage.js.map +1 -0
- package/dist/cjs/client/agent-wallet.d.ts +69 -0
- package/dist/cjs/client/agent-wallet.js +84 -0
- package/dist/cjs/client/agent-wallet.js.map +1 -0
- package/dist/cjs/exact/client/index.d.ts +63 -0
- package/dist/cjs/exact/client/index.js +739 -0
- package/dist/cjs/exact/client/index.js.map +1 -0
- package/dist/cjs/exact/facilitator/index.d.ts +141 -0
- package/dist/cjs/exact/facilitator/index.js +1989 -0
- package/dist/cjs/exact/facilitator/index.js.map +1 -0
- package/dist/cjs/exact/server/index.d.ts +118 -0
- package/dist/cjs/exact/server/index.js +326 -0
- package/dist/cjs/exact/server/index.js.map +1 -0
- package/dist/cjs/exact/v1/client/index.d.ts +38 -0
- package/dist/cjs/exact/v1/client/index.js +193 -0
- package/dist/cjs/exact/v1/client/index.js.map +1 -0
- package/dist/cjs/exact/v1/facilitator/index.d.ts +84 -0
- package/dist/cjs/exact/v1/facilitator/index.js +739 -0
- package/dist/cjs/exact/v1/facilitator/index.js.map +1 -0
- package/dist/cjs/facilitator/agent-wallet.d.ts +109 -0
- package/dist/cjs/facilitator/agent-wallet.js +105 -0
- package/dist/cjs/facilitator/agent-wallet.js.map +1 -0
- package/dist/cjs/index.d.ts +338 -0
- package/dist/cjs/index.js +2860 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/permit2-DK5A8alk.d.ts +729 -0
- package/dist/cjs/permit2-DhJRUcgY.d.ts +729 -0
- package/dist/cjs/rpc-DULZzRne.d.ts +13 -0
- package/dist/cjs/scheme-7ehldYoO.d.ts +307 -0
- package/dist/cjs/scheme-BjBJzHF7.d.ts +307 -0
- package/dist/cjs/scheme-DWgpkDgz.d.ts +47 -0
- package/dist/cjs/signer-BFelv8DL.d.ts +170 -0
- package/dist/cjs/storage-6W5MO46W.d.ts +50 -0
- package/dist/cjs/storage-CHNote8s.d.ts +81 -0
- package/dist/cjs/storage-DjCv5IPh.d.ts +81 -0
- package/dist/cjs/types-CKd3Xoi1.d.ts +180 -0
- package/dist/cjs/types-DIt9uAUy.d.ts +180 -0
- package/dist/cjs/upto/client/index.d.ts +34 -0
- package/dist/cjs/upto/client/index.js +509 -0
- package/dist/cjs/upto/client/index.js.map +1 -0
- package/dist/cjs/upto/facilitator/index.d.ts +54 -0
- package/dist/cjs/upto/facilitator/index.js +1313 -0
- package/dist/cjs/upto/facilitator/index.js.map +1 -0
- package/dist/cjs/upto/server/index.d.ts +69 -0
- package/dist/cjs/upto/server/index.js +296 -0
- package/dist/cjs/upto/server/index.js.map +1 -0
- package/dist/cjs/v1/index.d.ts +40 -0
- package/dist/cjs/v1/index.js +199 -0
- package/dist/cjs/v1/index.js.map +1 -0
- package/dist/esm/auth-capture/client/index.d.mts +44 -0
- package/dist/esm/auth-capture/client/index.mjs +8 -0
- package/dist/esm/auth-capture/client/index.mjs.map +1 -0
- package/dist/esm/batch-settlement/client/file-storage.d.mts +47 -0
- package/dist/esm/batch-settlement/client/file-storage.mjs +63 -0
- package/dist/esm/batch-settlement/client/file-storage.mjs.map +1 -0
- package/dist/esm/batch-settlement/client/index.d.mts +111 -0
- package/dist/esm/batch-settlement/client/index.mjs +58 -0
- package/dist/esm/batch-settlement/client/index.mjs.map +1 -0
- package/dist/esm/batch-settlement/facilitator/index.d.mts +72 -0
- package/dist/esm/batch-settlement/facilitator/index.mjs +1252 -0
- package/dist/esm/batch-settlement/facilitator/index.mjs.map +1 -0
- package/dist/esm/batch-settlement/server/file-storage.d.mts +53 -0
- package/dist/esm/batch-settlement/server/file-storage.mjs +128 -0
- package/dist/esm/batch-settlement/server/file-storage.mjs.map +1 -0
- package/dist/esm/batch-settlement/server/index.d.mts +491 -0
- package/dist/esm/batch-settlement/server/index.mjs +1640 -0
- package/dist/esm/batch-settlement/server/index.mjs.map +1 -0
- package/dist/esm/batch-settlement/server/redis-storage.d.mts +87 -0
- package/dist/esm/batch-settlement/server/redis-storage.mjs +156 -0
- package/dist/esm/batch-settlement/server/redis-storage.mjs.map +1 -0
- package/dist/esm/chunk-2EUQTNJO.mjs +38 -0
- package/dist/esm/chunk-2EUQTNJO.mjs.map +1 -0
- package/dist/esm/chunk-3WZF6722.mjs +36 -0
- package/dist/esm/chunk-3WZF6722.mjs.map +1 -0
- package/dist/esm/chunk-E4Z7PNXC.mjs +275 -0
- package/dist/esm/chunk-E4Z7PNXC.mjs.map +1 -0
- package/dist/esm/chunk-GQVMVP4N.mjs +911 -0
- package/dist/esm/chunk-GQVMVP4N.mjs.map +1 -0
- package/dist/esm/chunk-H2EYJIZL.mjs +489 -0
- package/dist/esm/chunk-H2EYJIZL.mjs.map +1 -0
- package/dist/esm/chunk-H3KPLYGI.mjs +152 -0
- package/dist/esm/chunk-H3KPLYGI.mjs.map +1 -0
- package/dist/esm/chunk-HYABYUBD.mjs +432 -0
- package/dist/esm/chunk-HYABYUBD.mjs.map +1 -0
- package/dist/esm/chunk-I2DVUHM5.mjs +123 -0
- package/dist/esm/chunk-I2DVUHM5.mjs.map +1 -0
- package/dist/esm/chunk-JK7SLLF7.mjs +34 -0
- package/dist/esm/chunk-JK7SLLF7.mjs.map +1 -0
- package/dist/esm/chunk-JNT7C46S.mjs +352 -0
- package/dist/esm/chunk-JNT7C46S.mjs.map +1 -0
- package/dist/esm/chunk-MACPBXCT.mjs +415 -0
- package/dist/esm/chunk-MACPBXCT.mjs.map +1 -0
- package/dist/esm/chunk-P3QOX3QZ.mjs +113 -0
- package/dist/esm/chunk-P3QOX3QZ.mjs.map +1 -0
- package/dist/esm/chunk-QVATVA3J.mjs +47 -0
- package/dist/esm/chunk-QVATVA3J.mjs.map +1 -0
- package/dist/esm/chunk-SHJFA25H.mjs +159 -0
- package/dist/esm/chunk-SHJFA25H.mjs.map +1 -0
- package/dist/esm/chunk-TW7Z65AO.mjs +34 -0
- package/dist/esm/chunk-TW7Z65AO.mjs.map +1 -0
- package/dist/esm/chunk-U4HCGTLU.mjs +35 -0
- package/dist/esm/chunk-U4HCGTLU.mjs.map +1 -0
- package/dist/esm/chunk-VS3RYAYE.mjs +80 -0
- package/dist/esm/chunk-VS3RYAYE.mjs.map +1 -0
- package/dist/esm/chunk-W6ON4LG2.mjs +39 -0
- package/dist/esm/chunk-W6ON4LG2.mjs.map +1 -0
- package/dist/esm/chunk-XG2JLZVJ.mjs +627 -0
- package/dist/esm/chunk-XG2JLZVJ.mjs.map +1 -0
- package/dist/esm/chunk-ZCJRY5LQ.mjs +162 -0
- package/dist/esm/chunk-ZCJRY5LQ.mjs.map +1 -0
- package/dist/esm/client/agent-wallet.d.mts +69 -0
- package/dist/esm/client/agent-wallet.mjs +36 -0
- package/dist/esm/client/agent-wallet.mjs.map +1 -0
- package/dist/esm/exact/client/index.d.mts +63 -0
- package/dist/esm/exact/client/index.mjs +25 -0
- package/dist/esm/exact/client/index.mjs.map +1 -0
- package/dist/esm/exact/facilitator/index.d.mts +141 -0
- package/dist/esm/exact/facilitator/index.mjs +694 -0
- package/dist/esm/exact/facilitator/index.mjs.map +1 -0
- package/dist/esm/exact/server/index.d.mts +118 -0
- package/dist/esm/exact/server/index.mjs +153 -0
- package/dist/esm/exact/server/index.mjs.map +1 -0
- package/dist/esm/exact/v1/client/index.d.mts +38 -0
- package/dist/esm/exact/v1/client/index.mjs +12 -0
- package/dist/esm/exact/v1/client/index.mjs.map +1 -0
- package/dist/esm/exact/v1/facilitator/index.d.mts +84 -0
- package/dist/esm/exact/v1/facilitator/index.mjs +12 -0
- package/dist/esm/exact/v1/facilitator/index.mjs.map +1 -0
- package/dist/esm/facilitator/agent-wallet.d.mts +109 -0
- package/dist/esm/facilitator/agent-wallet.mjs +74 -0
- package/dist/esm/facilitator/agent-wallet.mjs.map +1 -0
- package/dist/esm/index.d.mts +338 -0
- package/dist/esm/index.mjs +144 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/permit2-DhJRUcgY.d.mts +729 -0
- package/dist/esm/rpc-DULZzRne.d.mts +13 -0
- package/dist/esm/scheme-CkNhpXrG.d.mts +307 -0
- package/dist/esm/scheme-D8ZbykGV.d.mts +47 -0
- package/dist/esm/signer-BFelv8DL.d.mts +170 -0
- package/dist/esm/storage-6W5MO46W.d.mts +50 -0
- package/dist/esm/storage-BEzTEiUr.d.mts +81 -0
- package/dist/esm/types-DIt9uAUy.d.mts +180 -0
- package/dist/esm/upto/client/index.d.mts +34 -0
- package/dist/esm/upto/client/index.mjs +22 -0
- package/dist/esm/upto/client/index.mjs.map +1 -0
- package/dist/esm/upto/facilitator/index.d.mts +54 -0
- package/dist/esm/upto/facilitator/index.mjs +507 -0
- package/dist/esm/upto/facilitator/index.mjs.map +1 -0
- package/dist/esm/upto/server/index.d.mts +69 -0
- package/dist/esm/upto/server/index.mjs +124 -0
- package/dist/esm/upto/server/index.mjs.map +1 -0
- package/dist/esm/v1/index.d.mts +40 -0
- package/dist/esm/v1/index.mjs +18 -0
- package/dist/esm/v1/index.mjs.map +1 -0
- package/package.json +250 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getDefaultAsset
|
|
3
|
+
} from "../../chunk-H3KPLYGI.mjs";
|
|
4
|
+
|
|
5
|
+
// src/upto/server/scheme.ts
|
|
6
|
+
import { convertToTokenAmount, numberToDecimalString, parseMoneyString } from "@bankofai/x402-core/utils";
|
|
7
|
+
import { getAddress } from "viem";
|
|
8
|
+
var UptoEvmScheme = class {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.scheme = "upto";
|
|
11
|
+
this.moneyParsers = [];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Registers a custom money parser for converting prices to asset amounts.
|
|
15
|
+
*
|
|
16
|
+
* @param parser - The money parser function to register
|
|
17
|
+
* @returns This instance for chaining
|
|
18
|
+
*/
|
|
19
|
+
registerMoneyParser(parser) {
|
|
20
|
+
this.moneyParsers.push(parser);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns the decimal precision of the default stablecoin for the given network.
|
|
25
|
+
* Implements the optional AssetDecimalsProvider interface used by resolveSettlementOverrideAmount.
|
|
26
|
+
*
|
|
27
|
+
* @param _asset - The asset symbol (unused; defaults to the network's default stablecoin)
|
|
28
|
+
* @param network - The network to look up the default asset for
|
|
29
|
+
* @returns The number of decimal places for the asset
|
|
30
|
+
*/
|
|
31
|
+
getAssetDecimals(_asset, network) {
|
|
32
|
+
try {
|
|
33
|
+
return getDefaultAsset(network).decimals;
|
|
34
|
+
} catch {
|
|
35
|
+
return 6;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parses a price into an asset amount for the given network.
|
|
40
|
+
*
|
|
41
|
+
* @param price - The price to parse (string, number, or AssetAmount)
|
|
42
|
+
* @param network - The target network
|
|
43
|
+
* @returns Promise resolving to an asset amount
|
|
44
|
+
*/
|
|
45
|
+
async parsePrice(price, network) {
|
|
46
|
+
if (typeof price === "object" && price !== null && "amount" in price) {
|
|
47
|
+
if (!price.asset) {
|
|
48
|
+
throw new Error(`Asset address must be specified for AssetAmount on network ${network}`);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
amount: price.amount,
|
|
52
|
+
asset: price.asset,
|
|
53
|
+
extra: price.extra || {}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const amount = this.parseMoneyToDecimal(price);
|
|
57
|
+
for (const parser of this.moneyParsers) {
|
|
58
|
+
const result = await parser(amount, network);
|
|
59
|
+
if (result !== null) {
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return this.defaultMoneyConversion(amount, network);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Enhances payment requirements with upto-specific metadata.
|
|
67
|
+
*
|
|
68
|
+
* @param paymentRequirements - The base payment requirements
|
|
69
|
+
* @param supportedKind - The supported scheme/network kind
|
|
70
|
+
* @param supportedKind.x402Version - The x402 protocol version
|
|
71
|
+
* @param supportedKind.scheme - The payment scheme name
|
|
72
|
+
* @param supportedKind.network - The target network
|
|
73
|
+
* @param supportedKind.extra - Optional extra metadata
|
|
74
|
+
* @param extensionKeys - Extension keys to include
|
|
75
|
+
* @returns Promise resolving to enhanced payment requirements
|
|
76
|
+
*/
|
|
77
|
+
enhancePaymentRequirements(paymentRequirements, supportedKind, extensionKeys) {
|
|
78
|
+
void extensionKeys;
|
|
79
|
+
return Promise.resolve({
|
|
80
|
+
...paymentRequirements,
|
|
81
|
+
extra: {
|
|
82
|
+
...paymentRequirements.extra,
|
|
83
|
+
assetTransferMethod: "permit2",
|
|
84
|
+
...supportedKind.extra?.facilitatorAddress ? { facilitatorAddress: getAddress(supportedKind.extra.facilitatorAddress) } : {}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parses a money string or number into a decimal value.
|
|
90
|
+
*
|
|
91
|
+
* @param money - The money value to parse
|
|
92
|
+
* @returns The parsed decimal amount
|
|
93
|
+
*/
|
|
94
|
+
parseMoneyToDecimal(money) {
|
|
95
|
+
if (typeof money === "number") {
|
|
96
|
+
return money;
|
|
97
|
+
}
|
|
98
|
+
return parseMoneyString(money);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Converts a numeric dollar amount to an AssetAmount using the default token for the network.
|
|
102
|
+
*
|
|
103
|
+
* @param amount - The dollar amount as a number
|
|
104
|
+
* @param network - The target network
|
|
105
|
+
* @returns The converted asset amount with token metadata
|
|
106
|
+
*/
|
|
107
|
+
defaultMoneyConversion(amount, network) {
|
|
108
|
+
const assetInfo = getDefaultAsset(network);
|
|
109
|
+
const tokenAmount = convertToTokenAmount(numberToDecimalString(amount), assetInfo.decimals);
|
|
110
|
+
return {
|
|
111
|
+
amount: tokenAmount,
|
|
112
|
+
asset: assetInfo.address,
|
|
113
|
+
extra: {
|
|
114
|
+
name: assetInfo.name,
|
|
115
|
+
version: assetInfo.version,
|
|
116
|
+
assetTransferMethod: "permit2"
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
export {
|
|
122
|
+
UptoEvmScheme
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/upto/server/scheme.ts"],"sourcesContent":["import {\n AssetAmount,\n Network,\n PaymentRequirements,\n Price,\n SchemeNetworkServer,\n MoneyParser,\n} from \"@bankofai/x402-core/types\";\nimport { convertToTokenAmount, numberToDecimalString, parseMoneyString } from \"@bankofai/x402-core/utils\";\nimport { getAddress } from \"viem\";\nimport { getDefaultAsset } from \"../../shared/defaultAssets\";\n\n/**\n * EVM server implementation for the Upto payment scheme.\n * Handles price parsing, payment requirements enhancement, and default asset resolution.\n */\nexport class UptoEvmScheme implements SchemeNetworkServer {\n readonly scheme = \"upto\";\n private moneyParsers: MoneyParser[] = [];\n\n /**\n * Registers a custom money parser for converting prices to asset amounts.\n *\n * @param parser - The money parser function to register\n * @returns This instance for chaining\n */\n registerMoneyParser(parser: MoneyParser): UptoEvmScheme {\n this.moneyParsers.push(parser);\n return this;\n }\n\n /**\n * Returns the decimal precision of the default stablecoin for the given network.\n * Implements the optional AssetDecimalsProvider interface used by resolveSettlementOverrideAmount.\n *\n * @param _asset - The asset symbol (unused; defaults to the network's default stablecoin)\n * @param network - The network to look up the default asset for\n * @returns The number of decimal places for the asset\n */\n getAssetDecimals(_asset: string, network: Network): number {\n try {\n return getDefaultAsset(network).decimals;\n } catch {\n return 6;\n }\n }\n\n /**\n * Parses a price into an asset amount for the given network.\n *\n * @param price - The price to parse (string, number, or AssetAmount)\n * @param network - The target network\n * @returns Promise resolving to an asset amount\n */\n async parsePrice(price: Price, network: Network): Promise<AssetAmount> {\n if (typeof price === \"object\" && price !== null && \"amount\" in price) {\n if (!price.asset) {\n throw new Error(`Asset address must be specified for AssetAmount on network ${network}`);\n }\n return {\n amount: price.amount,\n asset: price.asset,\n extra: price.extra || {},\n };\n }\n\n const amount = this.parseMoneyToDecimal(price);\n\n for (const parser of this.moneyParsers) {\n const result = await parser(amount, network);\n if (result !== null) {\n return result;\n }\n }\n\n return this.defaultMoneyConversion(amount, network);\n }\n\n /**\n * Enhances payment requirements with upto-specific metadata.\n *\n * @param paymentRequirements - The base payment requirements\n * @param supportedKind - The supported scheme/network kind\n * @param supportedKind.x402Version - The x402 protocol version\n * @param supportedKind.scheme - The payment scheme name\n * @param supportedKind.network - The target network\n * @param supportedKind.extra - Optional extra metadata\n * @param extensionKeys - Extension keys to include\n * @returns Promise resolving to enhanced payment requirements\n */\n enhancePaymentRequirements(\n paymentRequirements: PaymentRequirements,\n supportedKind: {\n x402Version: number;\n scheme: string;\n network: Network;\n extra?: Record<string, unknown>;\n },\n extensionKeys: string[],\n ): Promise<PaymentRequirements> {\n void extensionKeys;\n return Promise.resolve({\n ...paymentRequirements,\n extra: {\n ...paymentRequirements.extra,\n assetTransferMethod: \"permit2\",\n ...(supportedKind.extra?.facilitatorAddress\n ? { facilitatorAddress: getAddress(supportedKind.extra.facilitatorAddress as string) }\n : {}),\n },\n });\n }\n\n /**\n * Parses a money string or number into a decimal value.\n *\n * @param money - The money value to parse\n * @returns The parsed decimal amount\n */\n private parseMoneyToDecimal(money: string | number): number {\n if (typeof money === \"number\") {\n return money;\n }\n\n return parseMoneyString(money);\n }\n\n /**\n * Converts a numeric dollar amount to an AssetAmount using the default token for the network.\n *\n * @param amount - The dollar amount as a number\n * @param network - The target network\n * @returns The converted asset amount with token metadata\n */\n private defaultMoneyConversion(amount: number, network: Network): AssetAmount {\n const assetInfo = getDefaultAsset(network);\n const tokenAmount = convertToTokenAmount(numberToDecimalString(amount), assetInfo.decimals);\n\n return {\n amount: tokenAmount,\n asset: assetInfo.address,\n extra: {\n name: assetInfo.name,\n version: assetInfo.version,\n assetTransferMethod: \"permit2\",\n },\n };\n }\n}\n"],"mappings":";;;;;AAQA,SAAS,sBAAsB,uBAAuB,wBAAwB;AAC9E,SAAS,kBAAkB;AAOpB,IAAM,gBAAN,MAAmD;AAAA,EAAnD;AACL,SAAS,SAAS;AAClB,SAAQ,eAA8B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQvC,oBAAoB,QAAoC;AACtD,SAAK,aAAa,KAAK,MAAM;AAC7B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,iBAAiB,QAAgB,SAA0B;AACzD,QAAI;AACF,aAAO,gBAAgB,OAAO,EAAE;AAAA,IAClC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,WAAW,OAAc,SAAwC;AACrE,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,YAAY,OAAO;AACpE,UAAI,CAAC,MAAM,OAAO;AAChB,cAAM,IAAI,MAAM,8DAA8D,OAAO,EAAE;AAAA,MACzF;AACA,aAAO;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,OAAO,MAAM,SAAS,CAAC;AAAA,MACzB;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,oBAAoB,KAAK;AAE7C,eAAW,UAAU,KAAK,cAAc;AACtC,YAAM,SAAS,MAAM,OAAO,QAAQ,OAAO;AAC3C,UAAI,WAAW,MAAM;AACnB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,KAAK,uBAAuB,QAAQ,OAAO;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,2BACE,qBACA,eAMA,eAC8B;AAC9B,SAAK;AACL,WAAO,QAAQ,QAAQ;AAAA,MACrB,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG,oBAAoB;AAAA,QACvB,qBAAqB;AAAA,QACrB,GAAI,cAAc,OAAO,qBACrB,EAAE,oBAAoB,WAAW,cAAc,MAAM,kBAA4B,EAAE,IACnF,CAAC;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,oBAAoB,OAAgC;AAC1D,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO;AAAA,IACT;AAEA,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,uBAAuB,QAAgB,SAA+B;AAC5E,UAAM,YAAY,gBAAgB,OAAO;AACzC,UAAM,cAAc,qBAAqB,sBAAsB,MAAM,GAAG,UAAU,QAAQ;AAE1F,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,QACL,MAAM,UAAU;AAAA,QAChB,SAAS,UAAU;AAAA,QACnB,qBAAqB;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export { ExactEvmSchemeV1 } from '../exact/v1/client/index.mjs';
|
|
2
|
+
import '@bankofai/x402-core/types';
|
|
3
|
+
import '../signer-BFelv8DL.mjs';
|
|
4
|
+
import 'viem';
|
|
5
|
+
|
|
6
|
+
declare const EVM_NETWORK_CHAIN_ID_MAP: {
|
|
7
|
+
readonly ethereum: 1;
|
|
8
|
+
readonly sepolia: 11155111;
|
|
9
|
+
readonly abstract: 2741;
|
|
10
|
+
readonly "abstract-testnet": 11124;
|
|
11
|
+
readonly "base-sepolia": 84532;
|
|
12
|
+
readonly base: 8453;
|
|
13
|
+
readonly "avalanche-fuji": 43113;
|
|
14
|
+
readonly avalanche: 43114;
|
|
15
|
+
readonly iotex: 4689;
|
|
16
|
+
readonly sei: 1329;
|
|
17
|
+
readonly "sei-testnet": 1328;
|
|
18
|
+
readonly polygon: 137;
|
|
19
|
+
readonly "polygon-amoy": 80002;
|
|
20
|
+
readonly peaq: 3338;
|
|
21
|
+
readonly story: 1514;
|
|
22
|
+
readonly educhain: 41923;
|
|
23
|
+
readonly "skale-base-sepolia": 324705682;
|
|
24
|
+
readonly megaeth: 4326;
|
|
25
|
+
readonly monad: 143;
|
|
26
|
+
readonly stable: 988;
|
|
27
|
+
readonly "stable-testnet": 2201;
|
|
28
|
+
};
|
|
29
|
+
type EvmNetworkV1 = keyof typeof EVM_NETWORK_CHAIN_ID_MAP;
|
|
30
|
+
declare const NETWORKS: string[];
|
|
31
|
+
/**
|
|
32
|
+
* Extract chain ID from a v1 legacy network name.
|
|
33
|
+
*
|
|
34
|
+
* @param network - The v1 network name (e.g., "base-sepolia", "polygon")
|
|
35
|
+
* @returns The numeric chain ID
|
|
36
|
+
* @throws Error if the network name is not a known v1 network
|
|
37
|
+
*/
|
|
38
|
+
declare function getEvmChainIdV1(network: string): number;
|
|
39
|
+
|
|
40
|
+
export { EVM_NETWORK_CHAIN_ID_MAP, type EvmNetworkV1, NETWORKS, getEvmChainIdV1 };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EVM_NETWORK_CHAIN_ID_MAP,
|
|
3
|
+
ExactEvmSchemeV12 as ExactEvmSchemeV1,
|
|
4
|
+
NETWORKS,
|
|
5
|
+
getEvmChainIdV1
|
|
6
|
+
} from "../chunk-XG2JLZVJ.mjs";
|
|
7
|
+
import "../chunk-P3QOX3QZ.mjs";
|
|
8
|
+
import "../chunk-JNT7C46S.mjs";
|
|
9
|
+
import "../chunk-MACPBXCT.mjs";
|
|
10
|
+
import "../chunk-VS3RYAYE.mjs";
|
|
11
|
+
import "../chunk-TW7Z65AO.mjs";
|
|
12
|
+
export {
|
|
13
|
+
EVM_NETWORK_CHAIN_ID_MAP,
|
|
14
|
+
ExactEvmSchemeV1,
|
|
15
|
+
NETWORKS,
|
|
16
|
+
getEvmChainIdV1
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bankofai/x402-evm",
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"version": "1.0.0-beta.0",
|
|
7
|
+
"main": "./dist/cjs/index.js",
|
|
8
|
+
"module": "./dist/esm/index.js",
|
|
9
|
+
"types": "./dist/cjs/index.d.ts",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"x402",
|
|
12
|
+
"payment",
|
|
13
|
+
"protocol",
|
|
14
|
+
"evm",
|
|
15
|
+
"ethereum"
|
|
16
|
+
],
|
|
17
|
+
"license": "Apache-2.0",
|
|
18
|
+
"author": "x402 Foundation",
|
|
19
|
+
"repository": "https://github.com/x402-foundation/x402",
|
|
20
|
+
"description": "x402 Payment Protocol EVM Implementation",
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@eslint/js": "^9.24.0",
|
|
23
|
+
"@types/node": "^22.13.4",
|
|
24
|
+
"@typescript-eslint/eslint-plugin": "^8.29.1",
|
|
25
|
+
"@typescript-eslint/parser": "^8.29.1",
|
|
26
|
+
"eslint": "^9.24.0",
|
|
27
|
+
"eslint-plugin-import": "^2.31.0",
|
|
28
|
+
"eslint-plugin-jsdoc": "^50.6.9",
|
|
29
|
+
"eslint-plugin-prettier": "^5.2.6",
|
|
30
|
+
"prettier": "3.5.2",
|
|
31
|
+
"tsup": "^8.4.0",
|
|
32
|
+
"tsx": "^4.21.0",
|
|
33
|
+
"typescript": "^5.7.3",
|
|
34
|
+
"vite": "^6.2.6",
|
|
35
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
36
|
+
"vitest": "^3.0.5"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"viem": "^2.48.11",
|
|
40
|
+
"zod": "^3.24.2",
|
|
41
|
+
"@bankofai/x402-core": "~1.0.0-beta.0"
|
|
42
|
+
},
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"import": {
|
|
46
|
+
"types": "./dist/esm/index.d.mts",
|
|
47
|
+
"default": "./dist/esm/index.mjs"
|
|
48
|
+
},
|
|
49
|
+
"require": {
|
|
50
|
+
"types": "./dist/cjs/index.d.ts",
|
|
51
|
+
"default": "./dist/cjs/index.js"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"./v1": {
|
|
55
|
+
"import": {
|
|
56
|
+
"types": "./dist/esm/v1/index.d.mts",
|
|
57
|
+
"default": "./dist/esm/v1/index.mjs"
|
|
58
|
+
},
|
|
59
|
+
"require": {
|
|
60
|
+
"types": "./dist/cjs/v1/index.d.ts",
|
|
61
|
+
"default": "./dist/cjs/v1/index.js"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"./exact/client": {
|
|
65
|
+
"import": {
|
|
66
|
+
"types": "./dist/esm/exact/client/index.d.mts",
|
|
67
|
+
"default": "./dist/esm/exact/client/index.mjs"
|
|
68
|
+
},
|
|
69
|
+
"require": {
|
|
70
|
+
"types": "./dist/cjs/exact/client/index.d.ts",
|
|
71
|
+
"default": "./dist/cjs/exact/client/index.js"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"./exact/server": {
|
|
75
|
+
"import": {
|
|
76
|
+
"types": "./dist/esm/exact/server/index.d.mts",
|
|
77
|
+
"default": "./dist/esm/exact/server/index.mjs"
|
|
78
|
+
},
|
|
79
|
+
"require": {
|
|
80
|
+
"types": "./dist/cjs/exact/server/index.d.ts",
|
|
81
|
+
"default": "./dist/cjs/exact/server/index.js"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"./exact/facilitator": {
|
|
85
|
+
"import": {
|
|
86
|
+
"types": "./dist/esm/exact/facilitator/index.d.mts",
|
|
87
|
+
"default": "./dist/esm/exact/facilitator/index.mjs"
|
|
88
|
+
},
|
|
89
|
+
"require": {
|
|
90
|
+
"types": "./dist/cjs/exact/facilitator/index.d.ts",
|
|
91
|
+
"default": "./dist/cjs/exact/facilitator/index.js"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"./exact/v1/client": {
|
|
95
|
+
"import": {
|
|
96
|
+
"types": "./dist/esm/exact/v1/client/index.d.mts",
|
|
97
|
+
"default": "./dist/esm/exact/v1/client/index.mjs"
|
|
98
|
+
},
|
|
99
|
+
"require": {
|
|
100
|
+
"types": "./dist/cjs/exact/v1/client/index.d.ts",
|
|
101
|
+
"default": "./dist/cjs/exact/v1/client/index.js"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"./exact/v1/facilitator": {
|
|
105
|
+
"import": {
|
|
106
|
+
"types": "./dist/esm/exact/v1/facilitator/index.d.mts",
|
|
107
|
+
"default": "./dist/esm/exact/v1/facilitator/index.mjs"
|
|
108
|
+
},
|
|
109
|
+
"require": {
|
|
110
|
+
"types": "./dist/cjs/exact/v1/facilitator/index.d.ts",
|
|
111
|
+
"default": "./dist/cjs/exact/v1/facilitator/index.js"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"./upto/client": {
|
|
115
|
+
"import": {
|
|
116
|
+
"types": "./dist/esm/upto/client/index.d.mts",
|
|
117
|
+
"default": "./dist/esm/upto/client/index.mjs"
|
|
118
|
+
},
|
|
119
|
+
"require": {
|
|
120
|
+
"types": "./dist/cjs/upto/client/index.d.ts",
|
|
121
|
+
"default": "./dist/cjs/upto/client/index.js"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"./upto/server": {
|
|
125
|
+
"import": {
|
|
126
|
+
"types": "./dist/esm/upto/server/index.d.mts",
|
|
127
|
+
"default": "./dist/esm/upto/server/index.mjs"
|
|
128
|
+
},
|
|
129
|
+
"require": {
|
|
130
|
+
"types": "./dist/cjs/upto/server/index.d.ts",
|
|
131
|
+
"default": "./dist/cjs/upto/server/index.js"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"./upto/facilitator": {
|
|
135
|
+
"import": {
|
|
136
|
+
"types": "./dist/esm/upto/facilitator/index.d.mts",
|
|
137
|
+
"default": "./dist/esm/upto/facilitator/index.mjs"
|
|
138
|
+
},
|
|
139
|
+
"require": {
|
|
140
|
+
"types": "./dist/cjs/upto/facilitator/index.d.ts",
|
|
141
|
+
"default": "./dist/cjs/upto/facilitator/index.js"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"./batch-settlement/client": {
|
|
145
|
+
"import": {
|
|
146
|
+
"types": "./dist/esm/batch-settlement/client/index.d.mts",
|
|
147
|
+
"default": "./dist/esm/batch-settlement/client/index.mjs"
|
|
148
|
+
},
|
|
149
|
+
"require": {
|
|
150
|
+
"types": "./dist/cjs/batch-settlement/client/index.d.ts",
|
|
151
|
+
"default": "./dist/cjs/batch-settlement/client/index.js"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"./batch-settlement/client/file-storage": {
|
|
155
|
+
"import": {
|
|
156
|
+
"types": "./dist/esm/batch-settlement/client/file-storage.d.mts",
|
|
157
|
+
"default": "./dist/esm/batch-settlement/client/file-storage.mjs"
|
|
158
|
+
},
|
|
159
|
+
"require": {
|
|
160
|
+
"types": "./dist/cjs/batch-settlement/client/file-storage.d.ts",
|
|
161
|
+
"default": "./dist/cjs/batch-settlement/client/file-storage.js"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"./batch-settlement/server": {
|
|
165
|
+
"import": {
|
|
166
|
+
"types": "./dist/esm/batch-settlement/server/index.d.mts",
|
|
167
|
+
"default": "./dist/esm/batch-settlement/server/index.mjs"
|
|
168
|
+
},
|
|
169
|
+
"require": {
|
|
170
|
+
"types": "./dist/cjs/batch-settlement/server/index.d.ts",
|
|
171
|
+
"default": "./dist/cjs/batch-settlement/server/index.js"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"./batch-settlement/server/file-storage": {
|
|
175
|
+
"import": {
|
|
176
|
+
"types": "./dist/esm/batch-settlement/server/file-storage.d.mts",
|
|
177
|
+
"default": "./dist/esm/batch-settlement/server/file-storage.mjs"
|
|
178
|
+
},
|
|
179
|
+
"require": {
|
|
180
|
+
"types": "./dist/cjs/batch-settlement/server/file-storage.d.ts",
|
|
181
|
+
"default": "./dist/cjs/batch-settlement/server/file-storage.js"
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"./batch-settlement/server/redis-storage": {
|
|
185
|
+
"import": {
|
|
186
|
+
"types": "./dist/esm/batch-settlement/server/redis-storage.d.mts",
|
|
187
|
+
"default": "./dist/esm/batch-settlement/server/redis-storage.mjs"
|
|
188
|
+
},
|
|
189
|
+
"require": {
|
|
190
|
+
"types": "./dist/cjs/batch-settlement/server/redis-storage.d.ts",
|
|
191
|
+
"default": "./dist/cjs/batch-settlement/server/redis-storage.js"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"./batch-settlement/facilitator": {
|
|
195
|
+
"import": {
|
|
196
|
+
"types": "./dist/esm/batch-settlement/facilitator/index.d.mts",
|
|
197
|
+
"default": "./dist/esm/batch-settlement/facilitator/index.mjs"
|
|
198
|
+
},
|
|
199
|
+
"require": {
|
|
200
|
+
"types": "./dist/cjs/batch-settlement/facilitator/index.d.ts",
|
|
201
|
+
"default": "./dist/cjs/batch-settlement/facilitator/index.js"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"./auth-capture/client": {
|
|
205
|
+
"import": {
|
|
206
|
+
"types": "./dist/esm/auth-capture/client/index.d.mts",
|
|
207
|
+
"default": "./dist/esm/auth-capture/client/index.mjs"
|
|
208
|
+
},
|
|
209
|
+
"require": {
|
|
210
|
+
"types": "./dist/cjs/auth-capture/client/index.d.ts",
|
|
211
|
+
"default": "./dist/cjs/auth-capture/client/index.js"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"./facilitator/agent-wallet": {
|
|
215
|
+
"import": {
|
|
216
|
+
"types": "./dist/esm/facilitator/agent-wallet.d.mts",
|
|
217
|
+
"default": "./dist/esm/facilitator/agent-wallet.mjs"
|
|
218
|
+
},
|
|
219
|
+
"require": {
|
|
220
|
+
"types": "./dist/cjs/facilitator/agent-wallet.d.ts",
|
|
221
|
+
"default": "./dist/cjs/facilitator/agent-wallet.js"
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
"./client/agent-wallet": {
|
|
225
|
+
"import": {
|
|
226
|
+
"types": "./dist/esm/client/agent-wallet.d.mts",
|
|
227
|
+
"default": "./dist/esm/client/agent-wallet.mjs"
|
|
228
|
+
},
|
|
229
|
+
"require": {
|
|
230
|
+
"types": "./dist/cjs/client/agent-wallet.d.ts",
|
|
231
|
+
"default": "./dist/cjs/client/agent-wallet.js"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"files": [
|
|
236
|
+
"dist"
|
|
237
|
+
],
|
|
238
|
+
"scripts": {
|
|
239
|
+
"start": "tsx --env-file=.env index.ts",
|
|
240
|
+
"build": "NODE_OPTIONS=--max-old-space-size=8192 tsup",
|
|
241
|
+
"test": "vitest run",
|
|
242
|
+
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
243
|
+
"test:watch": "vitest",
|
|
244
|
+
"watch": "tsc --watch",
|
|
245
|
+
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
|
|
246
|
+
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
|
|
247
|
+
"lint": "eslint . --ext .ts --fix",
|
|
248
|
+
"lint:check": "eslint . --ext .ts"
|
|
249
|
+
}
|
|
250
|
+
}
|