@payai/x402-evm 2.4.1 → 2.4.2
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/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 +71 -0
- package/dist/cjs/batch-settlement/facilitator/index.js +2032 -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 +1960 -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/exact/client/index.d.ts +6 -4
- package/dist/cjs/exact/client/index.js +7 -5
- package/dist/cjs/exact/client/index.js.map +1 -1
- package/dist/cjs/exact/facilitator/index.d.ts +16 -9
- package/dist/cjs/exact/facilitator/index.js +35 -7
- package/dist/cjs/exact/facilitator/index.js.map +1 -1
- package/dist/cjs/exact/server/index.js +40 -1
- package/dist/cjs/exact/server/index.js.map +1 -1
- package/dist/cjs/exact/v1/client/index.d.ts +2 -1
- package/dist/cjs/exact/v1/client/index.js.map +1 -1
- package/dist/cjs/exact/v1/facilitator/index.d.ts +11 -5
- package/dist/cjs/exact/v1/facilitator/index.js +16 -2
- package/dist/cjs/exact/v1/facilitator/index.js.map +1 -1
- package/dist/cjs/index.d.ts +113 -7
- package/dist/cjs/index.js +1353 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/{esm/permit2-CyZxwngN.d.mts → cjs/permit2-DhJRUcgY.d.ts} +1 -13
- package/dist/cjs/rpc-DULZzRne.d.ts +13 -0
- package/dist/cjs/scheme-CvkPJXBD.d.ts +307 -0
- package/dist/{esm/scheme-DCR7hsa3.d.mts → cjs/scheme-DTQFE9xp.d.ts} +2 -2
- package/dist/{esm/signer-D912R4mq.d.mts → cjs/signer-tYS6Y46X.d.ts} +3 -0
- package/dist/cjs/storage-6W5MO46W.d.ts +50 -0
- package/dist/cjs/storage-Bl6aD0Xg.d.ts +81 -0
- package/dist/cjs/types-CF8P2-NM.d.ts +180 -0
- package/dist/cjs/upto/client/index.d.ts +5 -3
- package/dist/cjs/upto/client/index.js +7 -5
- package/dist/cjs/upto/client/index.js.map +1 -1
- package/dist/cjs/upto/facilitator/index.d.ts +2 -1
- package/dist/cjs/upto/facilitator/index.js +2 -1
- package/dist/cjs/upto/facilitator/index.js.map +1 -1
- package/dist/cjs/upto/server/index.js +40 -1
- package/dist/cjs/upto/server/index.js.map +1 -1
- package/dist/cjs/v1/index.d.ts +2 -1
- package/dist/cjs/v1/index.js.map +1 -1
- 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 +59 -0
- package/dist/esm/batch-settlement/client/index.mjs.map +1 -0
- package/dist/esm/batch-settlement/facilitator/index.d.mts +71 -0
- package/dist/esm/batch-settlement/facilitator/index.mjs +1235 -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 +1645 -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-53USC5VE.mjs +47 -0
- package/dist/esm/chunk-53USC5VE.mjs.map +1 -0
- package/dist/esm/{chunk-GJ57SZGI.mjs → chunk-6WQOGWBE.mjs} +7 -5
- package/dist/esm/{chunk-GJ57SZGI.mjs.map → chunk-6WQOGWBE.mjs.map} +1 -1
- package/dist/esm/{chunk-F3OOHBAW.mjs → chunk-BTYNCDNS.mjs} +42 -2
- package/dist/esm/{chunk-F3OOHBAW.mjs.map → chunk-BTYNCDNS.mjs.map} +1 -1
- package/dist/esm/{chunk-ERK2ZPOY.mjs → chunk-CSQS7ZON.mjs} +27 -7
- package/dist/esm/chunk-CSQS7ZON.mjs.map +1 -0
- package/dist/esm/chunk-GD4MKCN7.mjs +57 -0
- package/dist/esm/chunk-GD4MKCN7.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-IN5YIT5C.mjs +159 -0
- package/dist/esm/chunk-IN5YIT5C.mjs.map +1 -0
- package/dist/esm/{chunk-JII456TS.mjs → chunk-JK7SLLF7.mjs} +1 -1
- package/dist/esm/chunk-JK7SLLF7.mjs.map +1 -0
- package/dist/esm/{chunk-C4ZQMS77.mjs → chunk-MACPBXCT.mjs} +2 -216
- package/dist/esm/chunk-MACPBXCT.mjs.map +1 -0
- package/dist/esm/chunk-NKYVYGRA.mjs +911 -0
- package/dist/esm/chunk-NKYVYGRA.mjs.map +1 -0
- package/dist/esm/{chunk-FQJR4RCF.mjs → chunk-R7I3RZFF.mjs} +10 -6
- package/dist/esm/{chunk-FQJR4RCF.mjs.map → chunk-R7I3RZFF.mjs.map} +1 -1
- package/dist/esm/{chunk-CRT6YNY5.mjs → chunk-RWLVVO3B.mjs} +21 -61
- package/dist/esm/chunk-RWLVVO3B.mjs.map +1 -0
- package/dist/esm/chunk-TGFAVNUD.mjs +111 -0
- package/dist/esm/chunk-TGFAVNUD.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-WKBC5YMI.mjs → chunk-YMQCTKDU.mjs} +23 -55
- package/dist/esm/chunk-YMQCTKDU.mjs.map +1 -0
- package/dist/esm/exact/client/index.d.mts +6 -4
- package/dist/esm/exact/client/index.mjs +10 -5
- package/dist/esm/exact/facilitator/index.d.mts +16 -9
- package/dist/esm/exact/facilitator/index.mjs +36 -14
- package/dist/esm/exact/facilitator/index.mjs.map +1 -1
- package/dist/esm/exact/server/index.mjs +1 -1
- package/dist/esm/exact/v1/client/index.d.mts +2 -1
- package/dist/esm/exact/v1/client/index.mjs +5 -2
- package/dist/esm/exact/v1/facilitator/index.d.mts +11 -5
- package/dist/esm/exact/v1/facilitator/index.mjs +5 -2
- package/dist/esm/index.d.mts +113 -7
- package/dist/esm/index.mjs +53 -7
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/permit2-DhJRUcgY.d.mts +729 -0
- package/dist/esm/rpc-DULZzRne.d.mts +13 -0
- package/dist/esm/scheme-DtbSS4Fk.d.mts +307 -0
- package/dist/esm/scheme-gtqAIYPJ.d.mts +47 -0
- package/dist/esm/signer-tYS6Y46X.d.mts +170 -0
- package/dist/esm/storage-6W5MO46W.d.mts +50 -0
- package/dist/esm/storage-sZ1CDS4P.d.mts +81 -0
- package/dist/esm/types-CF8P2-NM.d.mts +180 -0
- package/dist/esm/upto/client/index.d.mts +5 -3
- package/dist/esm/upto/client/index.mjs +9 -4
- package/dist/esm/upto/facilitator/index.d.mts +2 -1
- package/dist/esm/upto/facilitator/index.mjs +17 -9
- package/dist/esm/upto/facilitator/index.mjs.map +1 -1
- package/dist/esm/upto/server/index.mjs +1 -1
- package/dist/esm/v1/index.d.mts +2 -1
- package/dist/esm/v1/index.mjs +5 -2
- package/package.json +5 -5
- package/dist/esm/chunk-C4ZQMS77.mjs.map +0 -1
- package/dist/esm/chunk-CRT6YNY5.mjs.map +0 -1
- package/dist/esm/chunk-ERK2ZPOY.mjs.map +0 -1
- package/dist/esm/chunk-JII456TS.mjs.map +0 -1
- package/dist/esm/chunk-WKBC5YMI.mjs.map +0 -1
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getEvmChainId
|
|
3
|
+
} from "./chunk-TW7Z65AO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/batch-settlement/constants.ts
|
|
6
|
+
import { keccak256, toBytes } from "viem";
|
|
7
|
+
var BATCH_SETTLEMENT_SCHEME = "batch-settlement";
|
|
8
|
+
var BATCH_SETTLEMENT_ADDRESS = "0x4020074e9dF2ce1deE5A9C1b5c3f541D02a10003";
|
|
9
|
+
var ERC3009_DEPOSIT_COLLECTOR_ADDRESS = "0x4020806089470a89826cB9fB1f4059150b550004";
|
|
10
|
+
var PERMIT2_DEPOSIT_COLLECTOR_ADDRESS = "0x4020425FAf3B746C082C2f942b4E5159887B0005";
|
|
11
|
+
var MIN_WITHDRAW_DELAY = 900;
|
|
12
|
+
var MAX_WITHDRAW_DELAY = 2592e3;
|
|
13
|
+
var BATCH_SETTLEMENT_DOMAIN = {
|
|
14
|
+
name: "x402 Batch Settlement",
|
|
15
|
+
version: "1"
|
|
16
|
+
};
|
|
17
|
+
var CHANNEL_CONFIG_TYPEHASH = keccak256(
|
|
18
|
+
toBytes(
|
|
19
|
+
"ChannelConfig(address payer,address payerAuthorizer,address receiver,address receiverAuthorizer,address token,uint40 withdrawDelay,bytes32 salt)"
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
var channelConfigTypes = {
|
|
23
|
+
ChannelConfig: [
|
|
24
|
+
{ name: "payer", type: "address" },
|
|
25
|
+
{ name: "payerAuthorizer", type: "address" },
|
|
26
|
+
{ name: "receiver", type: "address" },
|
|
27
|
+
{ name: "receiverAuthorizer", type: "address" },
|
|
28
|
+
{ name: "token", type: "address" },
|
|
29
|
+
{ name: "withdrawDelay", type: "uint40" },
|
|
30
|
+
{ name: "salt", type: "bytes32" }
|
|
31
|
+
]
|
|
32
|
+
};
|
|
33
|
+
var voucherTypes = {
|
|
34
|
+
Voucher: [
|
|
35
|
+
{ name: "channelId", type: "bytes32" },
|
|
36
|
+
{ name: "maxClaimableAmount", type: "uint128" }
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
var refundTypes = {
|
|
40
|
+
Refund: [
|
|
41
|
+
{ name: "channelId", type: "bytes32" },
|
|
42
|
+
{ name: "nonce", type: "uint256" },
|
|
43
|
+
{ name: "amount", type: "uint128" }
|
|
44
|
+
]
|
|
45
|
+
};
|
|
46
|
+
var claimBatchTypes = {
|
|
47
|
+
ClaimBatch: [{ name: "claims", type: "ClaimEntry[]" }],
|
|
48
|
+
ClaimEntry: [
|
|
49
|
+
{ name: "channelId", type: "bytes32" },
|
|
50
|
+
{ name: "maxClaimableAmount", type: "uint128" },
|
|
51
|
+
{ name: "totalClaimed", type: "uint128" }
|
|
52
|
+
]
|
|
53
|
+
};
|
|
54
|
+
var receiveAuthorizationTypes = {
|
|
55
|
+
ReceiveWithAuthorization: [
|
|
56
|
+
{ name: "from", type: "address" },
|
|
57
|
+
{ name: "to", type: "address" },
|
|
58
|
+
{ name: "value", type: "uint256" },
|
|
59
|
+
{ name: "validAfter", type: "uint256" },
|
|
60
|
+
{ name: "validBefore", type: "uint256" },
|
|
61
|
+
{ name: "nonce", type: "bytes32" }
|
|
62
|
+
]
|
|
63
|
+
};
|
|
64
|
+
var batchPermit2WitnessTypes = {
|
|
65
|
+
PermitWitnessTransferFrom: [
|
|
66
|
+
{ name: "permitted", type: "TokenPermissions" },
|
|
67
|
+
{ name: "spender", type: "address" },
|
|
68
|
+
{ name: "nonce", type: "uint256" },
|
|
69
|
+
{ name: "deadline", type: "uint256" },
|
|
70
|
+
{ name: "witness", type: "DepositWitness" }
|
|
71
|
+
],
|
|
72
|
+
TokenPermissions: [
|
|
73
|
+
{ name: "token", type: "address" },
|
|
74
|
+
{ name: "amount", type: "uint256" }
|
|
75
|
+
],
|
|
76
|
+
DepositWitness: [{ name: "channelId", type: "bytes32" }]
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// src/batch-settlement/utils.ts
|
|
80
|
+
import { getAddress, hashTypedData } from "viem";
|
|
81
|
+
function computeChannelId(config, networkOrChainId) {
|
|
82
|
+
const chainId = typeof networkOrChainId === "number" ? networkOrChainId : getEvmChainId(networkOrChainId);
|
|
83
|
+
return hashTypedData({
|
|
84
|
+
domain: getBatchSettlementEip712Domain(chainId),
|
|
85
|
+
types: channelConfigTypes,
|
|
86
|
+
primaryType: "ChannelConfig",
|
|
87
|
+
message: {
|
|
88
|
+
payer: config.payer,
|
|
89
|
+
payerAuthorizer: config.payerAuthorizer,
|
|
90
|
+
receiver: config.receiver,
|
|
91
|
+
receiverAuthorizer: config.receiverAuthorizer,
|
|
92
|
+
token: config.token,
|
|
93
|
+
withdrawDelay: config.withdrawDelay,
|
|
94
|
+
salt: config.salt
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function getBatchSettlementEip712Domain(chainId) {
|
|
99
|
+
return {
|
|
100
|
+
...BATCH_SETTLEMENT_DOMAIN,
|
|
101
|
+
chainId,
|
|
102
|
+
verifyingContract: getAddress(BATCH_SETTLEMENT_ADDRESS)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/batch-settlement/errors.ts
|
|
107
|
+
var ErrChannelNotFound = "invalid_batch_settlement_evm_channel_not_found";
|
|
108
|
+
var ErrTokenMismatch = "invalid_batch_settlement_evm_token_mismatch";
|
|
109
|
+
var ErrInvalidVoucherSignature = "invalid_batch_settlement_evm_voucher_signature";
|
|
110
|
+
var ErrCumulativeExceedsBalance = "invalid_batch_settlement_evm_cumulative_exceeds_balance";
|
|
111
|
+
var ErrCumulativeAmountBelowClaimed = "invalid_batch_settlement_evm_cumulative_below_claimed";
|
|
112
|
+
var ErrInsufficientBalance = "invalid_batch_settlement_evm_insufficient_balance";
|
|
113
|
+
var ErrDepositTransactionFailed = "invalid_batch_settlement_evm_deposit_transaction_failed";
|
|
114
|
+
var ErrClaimTransactionFailed = "invalid_batch_settlement_evm_claim_transaction_failed";
|
|
115
|
+
var ErrSettleTransactionFailed = "invalid_batch_settlement_evm_settle_transaction_failed";
|
|
116
|
+
var ErrInvalidScheme = "invalid_batch_settlement_evm_scheme";
|
|
117
|
+
var ErrNetworkMismatch = "invalid_batch_settlement_evm_network_mismatch";
|
|
118
|
+
var ErrMissingEip712Domain = "invalid_batch_settlement_evm_missing_eip712_domain";
|
|
119
|
+
var ErrValidBeforeExpired = "invalid_batch_settlement_evm_payload_authorization_valid_before";
|
|
120
|
+
var ErrValidAfterInFuture = "invalid_batch_settlement_evm_payload_authorization_valid_after";
|
|
121
|
+
var ErrInvalidReceiveAuthorizationSignature = "invalid_batch_settlement_evm_receive_authorization_signature";
|
|
122
|
+
var ErrErc3009AuthorizationRequired = "invalid_batch_settlement_evm_erc3009_authorization_required";
|
|
123
|
+
var ErrRefundTransactionFailed = "invalid_batch_settlement_evm_refund_transaction_failed";
|
|
124
|
+
var ErrInvalidPayloadType = "invalid_batch_settlement_evm_payload_type";
|
|
125
|
+
var ErrWithdrawDelayOutOfRange = "invalid_batch_settlement_evm_withdraw_delay_out_of_range";
|
|
126
|
+
var ErrChannelIdMismatch = "invalid_batch_settlement_evm_channel_id_mismatch";
|
|
127
|
+
var ErrReceiverMismatch = "invalid_batch_settlement_evm_receiver_mismatch";
|
|
128
|
+
var ErrReceiverAuthorizerMismatch = "invalid_batch_settlement_evm_receiver_authorizer_mismatch";
|
|
129
|
+
var ErrWithdrawDelayMismatch = "invalid_batch_settlement_evm_withdraw_delay_mismatch";
|
|
130
|
+
var ErrAuthorizerAddressMismatch = "invalid_batch_settlement_evm_authorizer_address_mismatch";
|
|
131
|
+
var ErrDepositSimulationFailed = "invalid_batch_settlement_evm_deposit_simulation_failed";
|
|
132
|
+
var ErrClaimSimulationFailed = "invalid_batch_settlement_evm_claim_simulation_failed";
|
|
133
|
+
var ErrSettleSimulationFailed = "invalid_batch_settlement_evm_settle_simulation_failed";
|
|
134
|
+
var ErrNothingToSettle = "invalid_batch_settlement_evm_nothing_to_settle";
|
|
135
|
+
var ErrRefundPayload = "invalid_batch_settlement_evm_refund_payload";
|
|
136
|
+
var ErrRefundSimulationFailed = "invalid_batch_settlement_evm_refund_simulation_failed";
|
|
137
|
+
var ErrRpcReadFailed = "invalid_batch_settlement_evm_rpc_read_failed";
|
|
138
|
+
var ErrPermit2AuthorizationRequired = "invalid_batch_settlement_evm_permit2_authorization_required";
|
|
139
|
+
var ErrPermit2InvalidSpender = "invalid_batch_settlement_evm_permit2_invalid_spender";
|
|
140
|
+
var ErrPermit2AmountMismatch = "invalid_batch_settlement_evm_permit2_amount_mismatch";
|
|
141
|
+
var ErrPermit2DeadlineExpired = "invalid_batch_settlement_evm_permit2_deadline_expired";
|
|
142
|
+
var ErrPermit2InvalidSignature = "invalid_batch_settlement_evm_permit2_invalid_signature";
|
|
143
|
+
var ErrPermit2AllowanceRequired = "invalid_batch_settlement_evm_permit2_allowance_required";
|
|
144
|
+
var ErrEip2612AmountMismatch = "invalid_batch_settlement_evm_eip2612_amount_mismatch";
|
|
145
|
+
var ErrErc20ApprovalUnavailable = "invalid_batch_settlement_evm_erc20_approval_unavailable";
|
|
146
|
+
var ErrCumulativeAmountMismatch = "invalid_batch_settlement_evm_cumulative_amount_mismatch";
|
|
147
|
+
var ErrChannelBusy = "invalid_batch_settlement_evm_channel_busy";
|
|
148
|
+
var ErrChargeExceedsSignedCumulative = "invalid_batch_settlement_evm_charge_exceeds_signed_cumulative";
|
|
149
|
+
var ErrMissingChannel = "invalid_batch_settlement_evm_missing_channel";
|
|
150
|
+
var ErrRefundNoBalance = "invalid_batch_settlement_evm_refund_no_balance";
|
|
151
|
+
var ErrRefundAmountInvalid = "invalid_batch_settlement_evm_refund_amount_invalid";
|
|
152
|
+
|
|
153
|
+
// src/batch-settlement/abi.ts
|
|
154
|
+
var channelConfigComponents = [
|
|
155
|
+
{ name: "payer", type: "address" },
|
|
156
|
+
{ name: "payerAuthorizer", type: "address" },
|
|
157
|
+
{ name: "receiver", type: "address" },
|
|
158
|
+
{ name: "receiverAuthorizer", type: "address" },
|
|
159
|
+
{ name: "token", type: "address" },
|
|
160
|
+
{ name: "withdrawDelay", type: "uint40" },
|
|
161
|
+
{ name: "salt", type: "bytes32" }
|
|
162
|
+
];
|
|
163
|
+
var voucherClaimComponents = [
|
|
164
|
+
{
|
|
165
|
+
name: "voucher",
|
|
166
|
+
type: "tuple",
|
|
167
|
+
components: [
|
|
168
|
+
{
|
|
169
|
+
name: "channel",
|
|
170
|
+
type: "tuple",
|
|
171
|
+
components: channelConfigComponents
|
|
172
|
+
},
|
|
173
|
+
{ name: "maxClaimableAmount", type: "uint128" }
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{ name: "signature", type: "bytes" },
|
|
177
|
+
{ name: "totalClaimed", type: "uint128" }
|
|
178
|
+
];
|
|
179
|
+
var batchSettlementABI = [
|
|
180
|
+
{
|
|
181
|
+
type: "function",
|
|
182
|
+
name: "multicall",
|
|
183
|
+
inputs: [{ name: "data", type: "bytes[]" }],
|
|
184
|
+
outputs: [{ name: "results", type: "bytes[]" }],
|
|
185
|
+
stateMutability: "nonpayable"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: "function",
|
|
189
|
+
name: "deposit",
|
|
190
|
+
inputs: [
|
|
191
|
+
{ name: "config", type: "tuple", components: channelConfigComponents },
|
|
192
|
+
{ name: "amount", type: "uint128" },
|
|
193
|
+
{ name: "collector", type: "address" },
|
|
194
|
+
{ name: "collectorData", type: "bytes" }
|
|
195
|
+
],
|
|
196
|
+
outputs: [],
|
|
197
|
+
stateMutability: "nonpayable"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: "function",
|
|
201
|
+
name: "claim",
|
|
202
|
+
inputs: [{ name: "voucherClaims", type: "tuple[]", components: voucherClaimComponents }],
|
|
203
|
+
outputs: [],
|
|
204
|
+
stateMutability: "nonpayable"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: "function",
|
|
208
|
+
name: "claimWithSignature",
|
|
209
|
+
inputs: [
|
|
210
|
+
{ name: "voucherClaims", type: "tuple[]", components: voucherClaimComponents },
|
|
211
|
+
{ name: "authorizerSignature", type: "bytes" }
|
|
212
|
+
],
|
|
213
|
+
outputs: [],
|
|
214
|
+
stateMutability: "nonpayable"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
type: "function",
|
|
218
|
+
name: "settle",
|
|
219
|
+
inputs: [
|
|
220
|
+
{ name: "receiver", type: "address" },
|
|
221
|
+
{ name: "token", type: "address" }
|
|
222
|
+
],
|
|
223
|
+
outputs: [],
|
|
224
|
+
stateMutability: "nonpayable"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
type: "function",
|
|
228
|
+
name: "initiateWithdraw",
|
|
229
|
+
inputs: [
|
|
230
|
+
{ name: "config", type: "tuple", components: channelConfigComponents },
|
|
231
|
+
{ name: "amount", type: "uint128" }
|
|
232
|
+
],
|
|
233
|
+
outputs: [],
|
|
234
|
+
stateMutability: "nonpayable"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
type: "function",
|
|
238
|
+
name: "finalizeWithdraw",
|
|
239
|
+
inputs: [{ name: "config", type: "tuple", components: channelConfigComponents }],
|
|
240
|
+
outputs: [],
|
|
241
|
+
stateMutability: "nonpayable"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
type: "function",
|
|
245
|
+
name: "refund",
|
|
246
|
+
inputs: [
|
|
247
|
+
{ name: "config", type: "tuple", components: channelConfigComponents },
|
|
248
|
+
{ name: "amount", type: "uint128" }
|
|
249
|
+
],
|
|
250
|
+
outputs: [],
|
|
251
|
+
stateMutability: "nonpayable"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
type: "function",
|
|
255
|
+
name: "refundWithSignature",
|
|
256
|
+
inputs: [
|
|
257
|
+
{ name: "config", type: "tuple", components: channelConfigComponents },
|
|
258
|
+
{ name: "amount", type: "uint128" },
|
|
259
|
+
{ name: "nonce", type: "uint256" },
|
|
260
|
+
{ name: "receiverAuthorizerSignature", type: "bytes" }
|
|
261
|
+
],
|
|
262
|
+
outputs: [],
|
|
263
|
+
stateMutability: "nonpayable"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
type: "function",
|
|
267
|
+
name: "getChannelId",
|
|
268
|
+
inputs: [{ name: "config", type: "tuple", components: channelConfigComponents }],
|
|
269
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
270
|
+
stateMutability: "view"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
type: "function",
|
|
274
|
+
name: "CHANNEL_CONFIG_TYPEHASH",
|
|
275
|
+
inputs: [],
|
|
276
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
277
|
+
stateMutability: "view"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
type: "function",
|
|
281
|
+
name: "channels",
|
|
282
|
+
inputs: [{ name: "channelId", type: "bytes32" }],
|
|
283
|
+
outputs: [
|
|
284
|
+
{ name: "balance", type: "uint128" },
|
|
285
|
+
{ name: "totalClaimed", type: "uint128" }
|
|
286
|
+
],
|
|
287
|
+
stateMutability: "view"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
type: "function",
|
|
291
|
+
name: "pendingWithdrawals",
|
|
292
|
+
inputs: [{ name: "channelId", type: "bytes32" }],
|
|
293
|
+
outputs: [
|
|
294
|
+
{ name: "amount", type: "uint128" },
|
|
295
|
+
{ name: "initiatedAt", type: "uint40" }
|
|
296
|
+
],
|
|
297
|
+
stateMutability: "view"
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
type: "function",
|
|
301
|
+
name: "receivers",
|
|
302
|
+
inputs: [
|
|
303
|
+
{ name: "receiver", type: "address" },
|
|
304
|
+
{ name: "token", type: "address" }
|
|
305
|
+
],
|
|
306
|
+
outputs: [
|
|
307
|
+
{ name: "totalClaimed", type: "uint128" },
|
|
308
|
+
{ name: "totalSettled", type: "uint128" }
|
|
309
|
+
],
|
|
310
|
+
stateMutability: "view"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
type: "function",
|
|
314
|
+
name: "getVoucherDigest",
|
|
315
|
+
inputs: [
|
|
316
|
+
{ name: "channelId", type: "bytes32" },
|
|
317
|
+
{ name: "maxClaimableAmount", type: "uint128" }
|
|
318
|
+
],
|
|
319
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
320
|
+
stateMutability: "view"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
type: "function",
|
|
324
|
+
name: "getRefundDigest",
|
|
325
|
+
inputs: [
|
|
326
|
+
{ name: "channelId", type: "bytes32" },
|
|
327
|
+
{ name: "nonce", type: "uint256" },
|
|
328
|
+
{ name: "amount", type: "uint128" }
|
|
329
|
+
],
|
|
330
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
331
|
+
stateMutability: "view"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
type: "function",
|
|
335
|
+
name: "refundNonce",
|
|
336
|
+
inputs: [{ name: "channelId", type: "bytes32" }],
|
|
337
|
+
outputs: [{ name: "", type: "uint256" }],
|
|
338
|
+
stateMutability: "view"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
type: "function",
|
|
342
|
+
name: "getClaimBatchDigest",
|
|
343
|
+
inputs: [{ name: "voucherClaims", type: "tuple[]", components: voucherClaimComponents }],
|
|
344
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
345
|
+
stateMutability: "view"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
type: "event",
|
|
349
|
+
name: "Settled",
|
|
350
|
+
inputs: [
|
|
351
|
+
{ name: "receiver", type: "address", indexed: true },
|
|
352
|
+
{ name: "token", type: "address", indexed: true },
|
|
353
|
+
{ name: "sender", type: "address", indexed: true },
|
|
354
|
+
{ name: "amount", type: "uint128", indexed: false }
|
|
355
|
+
],
|
|
356
|
+
anonymous: false
|
|
357
|
+
}
|
|
358
|
+
];
|
|
359
|
+
var erc20BalanceOfABI = [
|
|
360
|
+
{
|
|
361
|
+
type: "function",
|
|
362
|
+
name: "balanceOf",
|
|
363
|
+
inputs: [{ name: "account", type: "address" }],
|
|
364
|
+
outputs: [{ name: "", type: "uint256" }],
|
|
365
|
+
stateMutability: "view"
|
|
366
|
+
}
|
|
367
|
+
];
|
|
368
|
+
|
|
369
|
+
export {
|
|
370
|
+
BATCH_SETTLEMENT_SCHEME,
|
|
371
|
+
BATCH_SETTLEMENT_ADDRESS,
|
|
372
|
+
ERC3009_DEPOSIT_COLLECTOR_ADDRESS,
|
|
373
|
+
PERMIT2_DEPOSIT_COLLECTOR_ADDRESS,
|
|
374
|
+
MIN_WITHDRAW_DELAY,
|
|
375
|
+
MAX_WITHDRAW_DELAY,
|
|
376
|
+
BATCH_SETTLEMENT_DOMAIN,
|
|
377
|
+
voucherTypes,
|
|
378
|
+
refundTypes,
|
|
379
|
+
claimBatchTypes,
|
|
380
|
+
receiveAuthorizationTypes,
|
|
381
|
+
batchPermit2WitnessTypes,
|
|
382
|
+
computeChannelId,
|
|
383
|
+
getBatchSettlementEip712Domain,
|
|
384
|
+
ErrChannelNotFound,
|
|
385
|
+
ErrTokenMismatch,
|
|
386
|
+
ErrInvalidVoucherSignature,
|
|
387
|
+
ErrCumulativeExceedsBalance,
|
|
388
|
+
ErrCumulativeAmountBelowClaimed,
|
|
389
|
+
ErrInsufficientBalance,
|
|
390
|
+
ErrDepositTransactionFailed,
|
|
391
|
+
ErrClaimTransactionFailed,
|
|
392
|
+
ErrSettleTransactionFailed,
|
|
393
|
+
ErrInvalidScheme,
|
|
394
|
+
ErrNetworkMismatch,
|
|
395
|
+
ErrMissingEip712Domain,
|
|
396
|
+
ErrValidBeforeExpired,
|
|
397
|
+
ErrValidAfterInFuture,
|
|
398
|
+
ErrInvalidReceiveAuthorizationSignature,
|
|
399
|
+
ErrErc3009AuthorizationRequired,
|
|
400
|
+
ErrRefundTransactionFailed,
|
|
401
|
+
ErrInvalidPayloadType,
|
|
402
|
+
ErrWithdrawDelayOutOfRange,
|
|
403
|
+
ErrChannelIdMismatch,
|
|
404
|
+
ErrReceiverMismatch,
|
|
405
|
+
ErrReceiverAuthorizerMismatch,
|
|
406
|
+
ErrWithdrawDelayMismatch,
|
|
407
|
+
ErrAuthorizerAddressMismatch,
|
|
408
|
+
ErrDepositSimulationFailed,
|
|
409
|
+
ErrClaimSimulationFailed,
|
|
410
|
+
ErrSettleSimulationFailed,
|
|
411
|
+
ErrNothingToSettle,
|
|
412
|
+
ErrRefundPayload,
|
|
413
|
+
ErrRefundSimulationFailed,
|
|
414
|
+
ErrRpcReadFailed,
|
|
415
|
+
ErrPermit2AuthorizationRequired,
|
|
416
|
+
ErrPermit2InvalidSpender,
|
|
417
|
+
ErrPermit2AmountMismatch,
|
|
418
|
+
ErrPermit2DeadlineExpired,
|
|
419
|
+
ErrPermit2InvalidSignature,
|
|
420
|
+
ErrPermit2AllowanceRequired,
|
|
421
|
+
ErrEip2612AmountMismatch,
|
|
422
|
+
ErrErc20ApprovalUnavailable,
|
|
423
|
+
ErrCumulativeAmountMismatch,
|
|
424
|
+
ErrChannelBusy,
|
|
425
|
+
ErrChargeExceedsSignedCumulative,
|
|
426
|
+
ErrMissingChannel,
|
|
427
|
+
ErrRefundNoBalance,
|
|
428
|
+
ErrRefundAmountInvalid,
|
|
429
|
+
batchSettlementABI,
|
|
430
|
+
erc20BalanceOfABI
|
|
431
|
+
};
|
|
432
|
+
//# sourceMappingURL=chunk-HYABYUBD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/batch-settlement/constants.ts","../../src/batch-settlement/utils.ts","../../src/batch-settlement/errors.ts","../../src/batch-settlement/abi.ts"],"sourcesContent":["import { keccak256, toBytes } from \"viem\";\n\n/** Scheme identifier for the batch-settlement payment scheme. */\nexport const BATCH_SETTLEMENT_SCHEME = \"batch-settlement\" as const;\n\n/** Deployed address of the x402BatchSettlement contract. */\nexport const BATCH_SETTLEMENT_ADDRESS = \"0x4020074e9dF2ce1deE5A9C1b5c3f541D02a10003\" as const;\n\n/** Deployed address of the ERC3009DepositCollector contract. */\nexport const ERC3009_DEPOSIT_COLLECTOR_ADDRESS =\n \"0x4020806089470a89826cB9fB1f4059150b550004\" as const;\n\n/** Deployed address of the Permit2DepositCollector contract. */\nexport const PERMIT2_DEPOSIT_COLLECTOR_ADDRESS =\n \"0x4020425FAf3B746C082C2f942b4E5159887B0005\" as const;\n\n/** Minimum withdraw delay in seconds (15 minutes), matching the onchain constant. */\nexport const MIN_WITHDRAW_DELAY = 900;\n\n/** Maximum withdraw delay in seconds (30 days), matching the onchain constant. */\nexport const MAX_WITHDRAW_DELAY = 2_592_000;\n\n/** EIP-712 domain fields shared across all batch-settlement typed-data signatures. */\nexport const BATCH_SETTLEMENT_DOMAIN = {\n name: \"x402 Batch Settlement\",\n version: \"1\",\n} as const;\n\n/** EIP-712 type hash for channel identity. */\nexport const CHANNEL_CONFIG_TYPEHASH = keccak256(\n toBytes(\n \"ChannelConfig(address payer,address payerAuthorizer,address receiver,address receiverAuthorizer,address token,uint40 withdrawDelay,bytes32 salt)\",\n ),\n);\n\n/** EIP-712 type definition for a channel configuration. */\nexport const channelConfigTypes = {\n ChannelConfig: [\n { name: \"payer\", type: \"address\" },\n { name: \"payerAuthorizer\", type: \"address\" },\n { name: \"receiver\", type: \"address\" },\n { name: \"receiverAuthorizer\", type: \"address\" },\n { name: \"token\", type: \"address\" },\n { name: \"withdrawDelay\", type: \"uint40\" },\n { name: \"salt\", type: \"bytes32\" },\n ],\n} as const;\n\n/** EIP-712 type definition for a cumulative voucher: `Voucher(bytes32 channelId, uint128 maxClaimableAmount)`. */\nexport const voucherTypes = {\n Voucher: [\n { name: \"channelId\", type: \"bytes32\" },\n { name: \"maxClaimableAmount\", type: \"uint128\" },\n ],\n} as const;\n\n/** EIP-712 type definition for cooperative refund: `Refund(bytes32 channelId, uint256 nonce, uint128 amount)`. */\nexport const refundTypes = {\n Refund: [\n { name: \"channelId\", type: \"bytes32\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"amount\", type: \"uint128\" },\n ],\n} as const;\n\n/** EIP-712 type definitions for a receiver-authorizer claim batch (nested ClaimEntry). */\nexport const claimBatchTypes = {\n ClaimBatch: [{ name: \"claims\", type: \"ClaimEntry[]\" }],\n ClaimEntry: [\n { name: \"channelId\", type: \"bytes32\" },\n { name: \"maxClaimableAmount\", type: \"uint128\" },\n { name: \"totalClaimed\", type: \"uint128\" },\n ],\n} as const;\n\n/** EIP-712 type definition for ERC-3009 `ReceiveWithAuthorization` (used for gasless deposits). */\nexport const receiveAuthorizationTypes = {\n ReceiveWithAuthorization: [\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} as const;\n\n/** Permit2 typed data for channel-bound batch deposits. */\nexport const batchPermit2WitnessTypes = {\n PermitWitnessTransferFrom: [\n { name: \"permitted\", type: \"TokenPermissions\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"witness\", type: \"DepositWitness\" },\n ],\n TokenPermissions: [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n DepositWitness: [{ name: \"channelId\", type: \"bytes32\" }],\n} as const;\n","import { getAddress, hashTypedData } from \"viem\";\nimport { BATCH_SETTLEMENT_ADDRESS, BATCH_SETTLEMENT_DOMAIN, channelConfigTypes } from \"./constants\";\nimport type { ChannelConfig } from \"./types\";\nimport { getEvmChainId } from \"../utils\";\n\n/**\n * Computes the chain-bound channel id from a {@link ChannelConfig} struct.\n *\n * @param config - The immutable channel configuration.\n * @param networkOrChainId - CAIP-2 network identifier or numeric EVM chain id.\n * @returns The `bytes32` channel id as a hex string.\n */\nexport function computeChannelId(\n config: ChannelConfig,\n networkOrChainId: string | number,\n): `0x${string}` {\n const chainId =\n typeof networkOrChainId === \"number\" ? networkOrChainId : getEvmChainId(networkOrChainId);\n return hashTypedData({\n domain: getBatchSettlementEip712Domain(chainId),\n types: channelConfigTypes,\n primaryType: \"ChannelConfig\",\n message: {\n payer: config.payer,\n payerAuthorizer: config.payerAuthorizer,\n receiver: config.receiver,\n receiverAuthorizer: config.receiverAuthorizer,\n token: config.token,\n withdrawDelay: config.withdrawDelay,\n salt: config.salt,\n },\n });\n}\n\n/**\n * Returns the full EIP-712 domain for the batch-settlement contract on the given chain.\n *\n * @param chainId - Numeric EVM chain id.\n * @returns EIP-712 domain with `name`, `version`, `chainId`, and checksummed `verifyingContract`.\n */\nexport function getBatchSettlementEip712Domain(chainId: number) {\n return {\n ...BATCH_SETTLEMENT_DOMAIN,\n chainId,\n verifyingContract: getAddress(BATCH_SETTLEMENT_ADDRESS),\n } as const;\n}\n","/** Error codes for the batch-settlement EVM scheme (see scheme_batch_settlement_evm2.md). */\n\nexport const ErrChannelNotFound = \"invalid_batch_settlement_evm_channel_not_found\";\nexport const ErrTokenMismatch = \"invalid_batch_settlement_evm_token_mismatch\";\nexport const ErrInvalidVoucherSignature = \"invalid_batch_settlement_evm_voucher_signature\";\nexport const ErrCumulativeExceedsBalance =\n \"invalid_batch_settlement_evm_cumulative_exceeds_balance\";\nexport const ErrCumulativeAmountBelowClaimed =\n \"invalid_batch_settlement_evm_cumulative_below_claimed\";\nexport const ErrInsufficientBalance = \"invalid_batch_settlement_evm_insufficient_balance\";\nexport const ErrDepositTransactionFailed =\n \"invalid_batch_settlement_evm_deposit_transaction_failed\";\nexport const ErrClaimTransactionFailed = \"invalid_batch_settlement_evm_claim_transaction_failed\";\nexport const ErrSettleTransactionFailed = \"invalid_batch_settlement_evm_settle_transaction_failed\";\nexport const ErrInvalidScheme = \"invalid_batch_settlement_evm_scheme\";\nexport const ErrNetworkMismatch = \"invalid_batch_settlement_evm_network_mismatch\";\nexport const ErrMissingEip712Domain = \"invalid_batch_settlement_evm_missing_eip712_domain\";\nexport const ErrValidBeforeExpired =\n \"invalid_batch_settlement_evm_payload_authorization_valid_before\";\nexport const ErrValidAfterInFuture =\n \"invalid_batch_settlement_evm_payload_authorization_valid_after\";\nexport const ErrInvalidReceiveAuthorizationSignature =\n \"invalid_batch_settlement_evm_receive_authorization_signature\";\nexport const ErrErc3009AuthorizationRequired =\n \"invalid_batch_settlement_evm_erc3009_authorization_required\";\nexport const ErrRefundTransactionFailed = \"invalid_batch_settlement_evm_refund_transaction_failed\";\nexport const ErrInvalidPayloadType = \"invalid_batch_settlement_evm_payload_type\";\nexport const ErrWithdrawDelayOutOfRange =\n \"invalid_batch_settlement_evm_withdraw_delay_out_of_range\";\nexport const ErrChannelIdMismatch = \"invalid_batch_settlement_evm_channel_id_mismatch\";\nexport const ErrReceiverMismatch = \"invalid_batch_settlement_evm_receiver_mismatch\";\nexport const ErrReceiverAuthorizerMismatch =\n \"invalid_batch_settlement_evm_receiver_authorizer_mismatch\";\nexport const ErrWithdrawDelayMismatch = \"invalid_batch_settlement_evm_withdraw_delay_mismatch\";\nexport const ErrAuthorizerAddressMismatch =\n \"invalid_batch_settlement_evm_authorizer_address_mismatch\";\nexport const ErrDepositSimulationFailed = \"invalid_batch_settlement_evm_deposit_simulation_failed\";\nexport const ErrClaimSimulationFailed = \"invalid_batch_settlement_evm_claim_simulation_failed\";\nexport const ErrSettleSimulationFailed = \"invalid_batch_settlement_evm_settle_simulation_failed\";\nexport const ErrNothingToSettle = \"invalid_batch_settlement_evm_nothing_to_settle\";\nexport const ErrRefundPayload = \"invalid_batch_settlement_evm_refund_payload\";\nexport const ErrRefundSimulationFailed = \"invalid_batch_settlement_evm_refund_simulation_failed\";\nexport const ErrRpcReadFailed = \"invalid_batch_settlement_evm_rpc_read_failed\";\nexport const ErrPermit2AuthorizationRequired =\n \"invalid_batch_settlement_evm_permit2_authorization_required\";\nexport const ErrPermit2InvalidSpender = \"invalid_batch_settlement_evm_permit2_invalid_spender\";\nexport const ErrPermit2AmountMismatch = \"invalid_batch_settlement_evm_permit2_amount_mismatch\";\nexport const ErrPermit2DeadlineExpired = \"invalid_batch_settlement_evm_permit2_deadline_expired\";\nexport const ErrPermit2InvalidSignature = \"invalid_batch_settlement_evm_permit2_invalid_signature\";\nexport const ErrPermit2AllowanceRequired =\n \"invalid_batch_settlement_evm_permit2_allowance_required\";\nexport const ErrEip2612AmountMismatch = \"invalid_batch_settlement_evm_eip2612_amount_mismatch\";\nexport const ErrEip2612OwnerMismatch = \"invalid_batch_settlement_evm_eip2612_owner_mismatch\";\nexport const ErrEip2612AssetMismatch = \"invalid_batch_settlement_evm_eip2612_asset_mismatch\";\nexport const ErrEip2612SpenderMismatch = \"invalid_batch_settlement_evm_eip2612_spender_mismatch\";\nexport const ErrEip2612DeadlineExpired = \"invalid_batch_settlement_evm_eip2612_deadline_expired\";\nexport const ErrErc20ApprovalUnavailable =\n \"invalid_batch_settlement_evm_erc20_approval_unavailable\";\n\n/** Resource server: 402 `error` and lifecycle `reason` (same strings as the spec). */\nexport const ErrCumulativeAmountMismatch =\n \"invalid_batch_settlement_evm_cumulative_amount_mismatch\";\nexport const ErrChannelBusy = \"invalid_batch_settlement_evm_channel_busy\";\nexport const ErrChargeExceedsSignedCumulative =\n \"invalid_batch_settlement_evm_charge_exceeds_signed_cumulative\";\nexport const ErrMissingChannel = \"invalid_batch_settlement_evm_missing_channel\";\nexport const ErrRefundNoBalance = \"invalid_batch_settlement_evm_refund_no_balance\";\nexport const ErrRefundAmountInvalid = \"invalid_batch_settlement_evm_refund_amount_invalid\";\n","export const channelConfigComponents = [\n { name: \"payer\", type: \"address\" },\n { name: \"payerAuthorizer\", type: \"address\" },\n { name: \"receiver\", type: \"address\" },\n { name: \"receiverAuthorizer\", type: \"address\" },\n { name: \"token\", type: \"address\" },\n { name: \"withdrawDelay\", type: \"uint40\" },\n { name: \"salt\", type: \"bytes32\" },\n] as const;\n\nconst voucherClaimComponents = [\n {\n name: \"voucher\",\n type: \"tuple\",\n components: [\n {\n name: \"channel\",\n type: \"tuple\",\n components: channelConfigComponents,\n },\n { name: \"maxClaimableAmount\", type: \"uint128\" },\n ],\n },\n { name: \"signature\", type: \"bytes\" },\n { name: \"totalClaimed\", type: \"uint128\" },\n] as const;\n\nexport const batchSettlementABI = [\n {\n type: \"function\",\n name: \"multicall\",\n inputs: [{ name: \"data\", type: \"bytes[]\" }],\n outputs: [{ name: \"results\", type: \"bytes[]\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"deposit\",\n inputs: [\n { name: \"config\", type: \"tuple\", components: channelConfigComponents },\n { name: \"amount\", type: \"uint128\" },\n { name: \"collector\", type: \"address\" },\n { name: \"collectorData\", type: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"claim\",\n inputs: [{ name: \"voucherClaims\", type: \"tuple[]\", components: voucherClaimComponents }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"claimWithSignature\",\n inputs: [\n { name: \"voucherClaims\", type: \"tuple[]\", components: voucherClaimComponents },\n { name: \"authorizerSignature\", type: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"settle\",\n inputs: [\n { name: \"receiver\", type: \"address\" },\n { name: \"token\", type: \"address\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"initiateWithdraw\",\n inputs: [\n { name: \"config\", type: \"tuple\", components: channelConfigComponents },\n { name: \"amount\", type: \"uint128\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"finalizeWithdraw\",\n inputs: [{ name: \"config\", type: \"tuple\", components: channelConfigComponents }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"refund\",\n inputs: [\n { name: \"config\", type: \"tuple\", components: channelConfigComponents },\n { name: \"amount\", type: \"uint128\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"refundWithSignature\",\n inputs: [\n { name: \"config\", type: \"tuple\", components: channelConfigComponents },\n { name: \"amount\", type: \"uint128\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"receiverAuthorizerSignature\", type: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"getChannelId\",\n inputs: [{ name: \"config\", type: \"tuple\", components: channelConfigComponents }],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"CHANNEL_CONFIG_TYPEHASH\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"channels\",\n inputs: [{ name: \"channelId\", type: \"bytes32\" }],\n outputs: [\n { name: \"balance\", type: \"uint128\" },\n { name: \"totalClaimed\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pendingWithdrawals\",\n inputs: [{ name: \"channelId\", type: \"bytes32\" }],\n outputs: [\n { name: \"amount\", type: \"uint128\" },\n { name: \"initiatedAt\", type: \"uint40\" },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"receivers\",\n inputs: [\n { name: \"receiver\", type: \"address\" },\n { name: \"token\", type: \"address\" },\n ],\n outputs: [\n { name: \"totalClaimed\", type: \"uint128\" },\n { name: \"totalSettled\", type: \"uint128\" },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getVoucherDigest\",\n inputs: [\n { name: \"channelId\", type: \"bytes32\" },\n { name: \"maxClaimableAmount\", type: \"uint128\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getRefundDigest\",\n inputs: [\n { name: \"channelId\", type: \"bytes32\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"amount\", type: \"uint128\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"refundNonce\",\n inputs: [{ name: \"channelId\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getClaimBatchDigest\",\n inputs: [{ name: \"voucherClaims\", type: \"tuple[]\", components: voucherClaimComponents }],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"event\",\n name: \"Settled\",\n inputs: [\n { name: \"receiver\", type: \"address\", indexed: true },\n { name: \"token\", type: \"address\", indexed: true },\n { name: \"sender\", type: \"address\", indexed: true },\n { name: \"amount\", type: \"uint128\", indexed: false },\n ],\n anonymous: false,\n },\n] as const;\n\nexport const erc20BalanceOfABI = [\n {\n type: \"function\",\n name: \"balanceOf\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n },\n] as const;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BATCH_SETTLEMENT_ADDRESS,
|
|
3
|
+
ErrChannelIdMismatch,
|
|
4
|
+
ErrReceiverAuthorizerMismatch,
|
|
5
|
+
ErrReceiverMismatch,
|
|
6
|
+
ErrRpcReadFailed,
|
|
7
|
+
ErrTokenMismatch,
|
|
8
|
+
ErrValidAfterInFuture,
|
|
9
|
+
ErrValidBeforeExpired,
|
|
10
|
+
ErrWithdrawDelayMismatch,
|
|
11
|
+
ErrWithdrawDelayOutOfRange,
|
|
12
|
+
MAX_WITHDRAW_DELAY,
|
|
13
|
+
MIN_WITHDRAW_DELAY,
|
|
14
|
+
batchSettlementABI,
|
|
15
|
+
claimBatchTypes,
|
|
16
|
+
computeChannelId,
|
|
17
|
+
getBatchSettlementEip712Domain,
|
|
18
|
+
refundTypes,
|
|
19
|
+
voucherTypes
|
|
20
|
+
} from "./chunk-HYABYUBD.mjs";
|
|
21
|
+
import {
|
|
22
|
+
multicall
|
|
23
|
+
} from "./chunk-VS3RYAYE.mjs";
|
|
24
|
+
import {
|
|
25
|
+
getEvmChainId
|
|
26
|
+
} from "./chunk-TW7Z65AO.mjs";
|
|
27
|
+
|
|
28
|
+
// src/batch-settlement/authorizerSigner.ts
|
|
29
|
+
async function signClaimBatch(signer, claims, network) {
|
|
30
|
+
const chainId = getEvmChainId(network);
|
|
31
|
+
const claimEntries = claims.map((c) => ({
|
|
32
|
+
channelId: computeChannelId(c.voucher.channel, chainId),
|
|
33
|
+
maxClaimableAmount: BigInt(c.voucher.maxClaimableAmount),
|
|
34
|
+
totalClaimed: BigInt(c.totalClaimed)
|
|
35
|
+
}));
|
|
36
|
+
return signer.signTypedData({
|
|
37
|
+
domain: getBatchSettlementEip712Domain(chainId),
|
|
38
|
+
types: claimBatchTypes,
|
|
39
|
+
primaryType: "ClaimBatch",
|
|
40
|
+
message: {
|
|
41
|
+
claims: claimEntries
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function signRefund(signer, channelId, amount, nonce, network) {
|
|
46
|
+
const chainId = getEvmChainId(network);
|
|
47
|
+
return signer.signTypedData({
|
|
48
|
+
domain: getBatchSettlementEip712Domain(chainId),
|
|
49
|
+
types: refundTypes,
|
|
50
|
+
primaryType: "Refund",
|
|
51
|
+
message: {
|
|
52
|
+
channelId,
|
|
53
|
+
nonce: BigInt(nonce),
|
|
54
|
+
amount: BigInt(amount)
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// src/batch-settlement/facilitator/utils.ts
|
|
60
|
+
import { getAddress, verifyTypedData as viemVerifyTypedData } from "viem";
|
|
61
|
+
function toContractChannelConfig(config) {
|
|
62
|
+
return {
|
|
63
|
+
payer: getAddress(config.payer),
|
|
64
|
+
payerAuthorizer: getAddress(config.payerAuthorizer),
|
|
65
|
+
receiver: getAddress(config.receiver),
|
|
66
|
+
receiverAuthorizer: getAddress(config.receiverAuthorizer),
|
|
67
|
+
token: getAddress(config.token),
|
|
68
|
+
withdrawDelay: config.withdrawDelay,
|
|
69
|
+
salt: config.salt
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function erc3009AuthorizationTimeInvalidReason(validAfter, validBefore) {
|
|
73
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
74
|
+
if (validBefore < BigInt(now + 6)) return ErrValidBeforeExpired;
|
|
75
|
+
if (validAfter > BigInt(now)) return ErrValidAfterInFuture;
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
async function verifyBatchSettlementVoucherTypedData(signer, params, chainId) {
|
|
79
|
+
const domain = getBatchSettlementEip712Domain(chainId);
|
|
80
|
+
const message = {
|
|
81
|
+
channelId: params.channelId,
|
|
82
|
+
maxClaimableAmount: BigInt(params.maxClaimableAmount)
|
|
83
|
+
};
|
|
84
|
+
const zeroAddress = "0x0000000000000000000000000000000000000000";
|
|
85
|
+
if (params.payerAuthorizer !== zeroAddress) {
|
|
86
|
+
return viemVerifyTypedData({
|
|
87
|
+
address: getAddress(params.payerAuthorizer),
|
|
88
|
+
domain,
|
|
89
|
+
types: voucherTypes,
|
|
90
|
+
primaryType: "Voucher",
|
|
91
|
+
message,
|
|
92
|
+
signature: params.signature
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return signer.verifyTypedData({
|
|
96
|
+
address: getAddress(params.payer),
|
|
97
|
+
domain,
|
|
98
|
+
types: voucherTypes,
|
|
99
|
+
primaryType: "Voucher",
|
|
100
|
+
message,
|
|
101
|
+
signature: params.signature
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function validateChannelConfig(config, channelId, requirements) {
|
|
105
|
+
const computedId = computeChannelId(config, requirements.network);
|
|
106
|
+
if (computedId.toLowerCase() !== channelId.toLowerCase()) {
|
|
107
|
+
return ErrChannelIdMismatch;
|
|
108
|
+
}
|
|
109
|
+
if (getAddress(config.receiver) !== getAddress(requirements.payTo)) {
|
|
110
|
+
return ErrReceiverMismatch;
|
|
111
|
+
}
|
|
112
|
+
const extra = requirements.extra;
|
|
113
|
+
const requiredReceiverAuthorizer = extra?.receiverAuthorizer;
|
|
114
|
+
if (!requiredReceiverAuthorizer || getAddress(requiredReceiverAuthorizer) === "0x0000000000000000000000000000000000000000" || getAddress(config.receiverAuthorizer) !== getAddress(requiredReceiverAuthorizer)) {
|
|
115
|
+
return ErrReceiverAuthorizerMismatch;
|
|
116
|
+
}
|
|
117
|
+
if (getAddress(config.token) !== getAddress(requirements.asset)) {
|
|
118
|
+
return ErrTokenMismatch;
|
|
119
|
+
}
|
|
120
|
+
if (extra?.withdrawDelay !== void 0 && config.withdrawDelay !== Number(extra.withdrawDelay)) {
|
|
121
|
+
return ErrWithdrawDelayMismatch;
|
|
122
|
+
}
|
|
123
|
+
if (config.withdrawDelay < MIN_WITHDRAW_DELAY || config.withdrawDelay > MAX_WITHDRAW_DELAY) {
|
|
124
|
+
return ErrWithdrawDelayOutOfRange;
|
|
125
|
+
}
|
|
126
|
+
return void 0;
|
|
127
|
+
}
|
|
128
|
+
async function readChannelState(signer, channelId) {
|
|
129
|
+
const target = getAddress(BATCH_SETTLEMENT_ADDRESS);
|
|
130
|
+
const mcResults = await multicall(signer.readContract.bind(signer), [
|
|
131
|
+
{ address: target, abi: batchSettlementABI, functionName: "channels", args: [channelId] },
|
|
132
|
+
{
|
|
133
|
+
address: target,
|
|
134
|
+
abi: batchSettlementABI,
|
|
135
|
+
functionName: "pendingWithdrawals",
|
|
136
|
+
args: [channelId]
|
|
137
|
+
},
|
|
138
|
+
{ address: target, abi: batchSettlementABI, functionName: "refundNonce", args: [channelId] }
|
|
139
|
+
]);
|
|
140
|
+
const [chRes, wdRes, rnRes] = mcResults;
|
|
141
|
+
if (chRes.status === "failure" || wdRes.status === "failure" || rnRes.status === "failure") {
|
|
142
|
+
throw new Error(`${ErrRpcReadFailed}: multicall returned failure for ${channelId}`);
|
|
143
|
+
}
|
|
144
|
+
const [balance, totalClaimed] = chRes.result;
|
|
145
|
+
const [, wdInitiatedAt] = wdRes.result;
|
|
146
|
+
const refundNonce = rnRes.result;
|
|
147
|
+
return { balance, totalClaimed, withdrawRequestedAt: Number(wdInitiatedAt), refundNonce };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export {
|
|
151
|
+
signClaimBatch,
|
|
152
|
+
signRefund,
|
|
153
|
+
toContractChannelConfig,
|
|
154
|
+
erc3009AuthorizationTimeInvalidReason,
|
|
155
|
+
verifyBatchSettlementVoucherTypedData,
|
|
156
|
+
validateChannelConfig,
|
|
157
|
+
readChannelState
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=chunk-IN5YIT5C.mjs.map
|