@antseed/node 0.2.94 → 0.2.95
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/buyer-request-handler.d.ts +4 -1
- package/dist/buyer-request-handler.d.ts.map +1 -1
- package/dist/buyer-request-handler.js +83 -4
- package/dist/buyer-request-handler.js.map +1 -1
- package/dist/discovery/http-metadata-resolver.d.ts +7 -0
- package/dist/discovery/http-metadata-resolver.d.ts.map +1 -1
- package/dist/discovery/http-metadata-resolver.js +16 -3
- package/dist/discovery/http-metadata-resolver.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +16 -2
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +115 -20
- package/dist/node.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +9 -1
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +67 -0
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +13 -1
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +44 -0
- package/dist/p2p/payment-mux.js.map +1 -1
- package/dist/payments/buyer-free-usage-manager.d.ts +39 -0
- package/dist/payments/buyer-free-usage-manager.d.ts.map +1 -0
- package/dist/payments/buyer-free-usage-manager.js +280 -0
- package/dist/payments/buyer-free-usage-manager.js.map +1 -0
- package/dist/payments/buyer-payment-manager.d.ts +2 -4
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +34 -110
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts +6 -2
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
- package/dist/payments/buyer-payment-negotiator.js +41 -13
- package/dist/payments/buyer-payment-negotiator.js.map +1 -1
- package/dist/payments/chain-config.d.ts +3 -2
- package/dist/payments/chain-config.d.ts.map +1 -1
- package/dist/payments/chain-config.js +4 -4
- package/dist/payments/chain-config.js.map +1 -1
- package/dist/payments/channel-session-state.d.ts +2 -1
- package/dist/payments/channel-session-state.d.ts.map +1 -1
- package/dist/payments/channel-session-state.js +4 -3
- package/dist/payments/channel-session-state.js.map +1 -1
- package/dist/payments/channel-store.d.ts +31 -15
- package/dist/payments/channel-store.d.ts.map +1 -1
- package/dist/payments/channel-store.js +74 -35
- package/dist/payments/channel-store.js.map +1 -1
- package/dist/payments/channel-usage-accounting.d.ts +18 -0
- package/dist/payments/channel-usage-accounting.d.ts.map +1 -0
- package/dist/payments/channel-usage-accounting.js +66 -0
- package/dist/payments/channel-usage-accounting.js.map +1 -0
- package/dist/payments/evm/free-usage-client.d.ts +34 -0
- package/dist/payments/evm/free-usage-client.d.ts.map +1 -0
- package/dist/payments/evm/free-usage-client.js +61 -0
- package/dist/payments/evm/free-usage-client.js.map +1 -0
- package/dist/payments/evm/signatures.d.ts +70 -0
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +89 -0
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/index.d.ts +10 -6
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +7 -4
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/seller-free-usage-manager.d.ts +44 -0
- package/dist/payments/seller-free-usage-manager.d.ts.map +1 -0
- package/dist/payments/seller-free-usage-manager.js +350 -0
- package/dist/payments/seller-free-usage-manager.js.map +1 -0
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +21 -20
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/types.d.ts +2 -0
- package/dist/payments/types.d.ts.map +1 -1
- package/dist/seller-request-handler.d.ts +2 -0
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +8 -0
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/storage/migrations/channels/004_add_channel_kind.d.ts +3 -0
- package/dist/storage/migrations/channels/004_add_channel_kind.d.ts.map +1 -0
- package/dist/storage/migrations/channels/004_add_channel_kind.js +16 -0
- package/dist/storage/migrations/channels/004_add_channel_kind.js.map +1 -0
- package/dist/storage/migrations/channels/index.d.ts.map +1 -1
- package/dist/storage/migrations/channels/index.js +2 -1
- package/dist/storage/migrations/channels/index.js.map +1 -1
- package/dist/types/protocol.d.ts +47 -0
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +4 -0
- package/dist/types/protocol.js.map +1 -1
- package/dist/verification/samples.js +1 -1
- package/dist/verification/samples.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,14 @@ export const CHANNEL_STATUS = {
|
|
|
9
9
|
TIMEOUT: 'timeout',
|
|
10
10
|
GHOST: 'ghost',
|
|
11
11
|
};
|
|
12
|
+
export const CHANNEL_KIND = {
|
|
13
|
+
PAID: 'paid',
|
|
14
|
+
FREE: 'free',
|
|
15
|
+
};
|
|
16
|
+
export const CHANNEL_ROLE = {
|
|
17
|
+
BUYER: 'buyer',
|
|
18
|
+
SELLER: 'seller',
|
|
19
|
+
};
|
|
12
20
|
export class ChannelStore {
|
|
13
21
|
_db;
|
|
14
22
|
// ── Cached prepared statements (compiled once, reused every call) ──
|
|
@@ -46,19 +54,20 @@ export class ChannelStore {
|
|
|
46
54
|
return {
|
|
47
55
|
upsert: this._db.prepare(`
|
|
48
56
|
INSERT INTO payment_channels (
|
|
49
|
-
session_id, peer_id, role, seller_evm_addr, buyer_evm_addr,
|
|
57
|
+
session_id, peer_id, role, channel_kind, seller_evm_addr, buyer_evm_addr,
|
|
50
58
|
nonce, auth_max, deadline, previous_session_id, previous_consumption,
|
|
51
59
|
tokens_delivered, request_count, reserved_at, settled_at, settled_amount,
|
|
52
60
|
status, latest_buyer_sig, latest_metadata_auth_sig, latest_metadata,
|
|
53
61
|
created_at, updated_at
|
|
54
62
|
) VALUES (
|
|
55
|
-
@sessionId, @peerId, @role, @sellerEvmAddr, @buyerEvmAddr,
|
|
63
|
+
@sessionId, @peerId, @role, @channelKind, @sellerEvmAddr, @buyerEvmAddr,
|
|
56
64
|
@nonce, @authMax, @deadline, @previousSessionId, @previousConsumption,
|
|
57
65
|
@tokensDelivered, @requestCount, @reservedAt, @settledAt, @settledAmount,
|
|
58
66
|
@status, @latestBuyerSig, @latestSpendingAuthSig, @latestMetadata,
|
|
59
67
|
@createdAt, @updatedAt
|
|
60
68
|
)
|
|
61
69
|
ON CONFLICT(session_id) DO UPDATE SET
|
|
70
|
+
channel_kind = @channelKind,
|
|
62
71
|
auth_max = @authMax,
|
|
63
72
|
previous_consumption = @previousConsumption,
|
|
64
73
|
tokens_delivered = @tokensDelivered,
|
|
@@ -72,16 +81,16 @@ export class ChannelStore {
|
|
|
72
81
|
updated_at = @updatedAt
|
|
73
82
|
`),
|
|
74
83
|
getById: this._db.prepare('SELECT * FROM payment_channels WHERE session_id = ?'),
|
|
75
|
-
getActiveByPeer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND status = ? ORDER BY created_at DESC LIMIT 1'),
|
|
76
|
-
getActiveByPeerAndBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ? AND status = ? ORDER BY created_at DESC LIMIT 1'),
|
|
77
|
-
getLatestByPeer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? ORDER BY created_at DESC LIMIT 1'),
|
|
78
|
-
getLatestByPeerAndBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ? ORDER BY created_at DESC LIMIT 1'),
|
|
84
|
+
getActiveByPeer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND channel_kind = ? AND status = ? ORDER BY created_at DESC LIMIT 1'),
|
|
85
|
+
getActiveByPeerAndBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ? AND channel_kind = ? AND status = ? ORDER BY created_at DESC LIMIT 1'),
|
|
86
|
+
getLatestByPeer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND channel_kind = ? ORDER BY created_at DESC LIMIT 1'),
|
|
87
|
+
getLatestByPeerAndBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ? AND channel_kind = ? ORDER BY created_at DESC LIMIT 1'),
|
|
79
88
|
updateStatusWithAmount: this._db.prepare('UPDATE payment_channels SET status = ?, settled_at = ?, settled_amount = ?, updated_at = ? WHERE session_id = ?'),
|
|
80
89
|
updateStatus: this._db.prepare('UPDATE payment_channels SET status = ?, updated_at = ? WHERE session_id = ?'),
|
|
81
90
|
updateTokens: this._db.prepare('UPDATE payment_channels SET tokens_delivered = ?, request_count = ?, updated_at = ? WHERE session_id = ?'),
|
|
82
91
|
getMaxNonce: this._db.prepare('SELECT MAX(nonce) as max_nonce FROM payment_channels WHERE role = ?'),
|
|
83
|
-
listAll: this._db.prepare('SELECT * FROM payment_channels ORDER BY updated_at DESC LIMIT ?'),
|
|
84
|
-
getTimedOut: this._db.prepare('SELECT * FROM payment_channels WHERE status = ? AND updated_at < ? ORDER BY updated_at LIMIT 100'),
|
|
92
|
+
listAll: this._db.prepare('SELECT * FROM payment_channels WHERE channel_kind = ? ORDER BY updated_at DESC LIMIT ?'),
|
|
93
|
+
getTimedOut: this._db.prepare('SELECT * FROM payment_channels WHERE channel_kind = ? AND status = ? AND updated_at < ? ORDER BY updated_at LIMIT 100'),
|
|
85
94
|
insertReceipt: this._db.prepare(`
|
|
86
95
|
INSERT INTO payment_receipts (
|
|
87
96
|
session_id, running_total, request_count, response_hash,
|
|
@@ -93,8 +102,8 @@ export class ChannelStore {
|
|
|
93
102
|
`),
|
|
94
103
|
getReceipts: this._db.prepare('SELECT * FROM payment_receipts WHERE session_id = ? ORDER BY created_at'),
|
|
95
104
|
updateReceiptAck: this._db.prepare('UPDATE payment_receipts SET buyer_ack_sig = ? WHERE session_id = ? AND running_total = ? AND request_count = ?'),
|
|
96
|
-
getActiveChannels: this._db.prepare('SELECT * FROM payment_channels WHERE role = ? AND status = ? ORDER BY created_at DESC'),
|
|
97
|
-
getActiveChannelsByBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE role = ? AND buyer_evm_addr = ? AND status = ? ORDER BY created_at DESC'),
|
|
105
|
+
getActiveChannels: this._db.prepare('SELECT * FROM payment_channels WHERE role = ? AND channel_kind = ? AND status = ? ORDER BY created_at DESC'),
|
|
106
|
+
getActiveChannelsByBuyer: this._db.prepare('SELECT * FROM payment_channels WHERE role = ? AND buyer_evm_addr = ? AND channel_kind = ? AND status = ? ORDER BY created_at DESC'),
|
|
98
107
|
getTotalsByPeerAndBuyer: this._db.prepare(`
|
|
99
108
|
SELECT
|
|
100
109
|
COUNT(*) as total_sessions,
|
|
@@ -105,7 +114,7 @@ export class ChannelStore {
|
|
|
105
114
|
MIN(reserved_at) as first_session_at,
|
|
106
115
|
MAX(updated_at) as last_session_at
|
|
107
116
|
FROM payment_channels
|
|
108
|
-
WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ?
|
|
117
|
+
WHERE peer_id = ? AND role = ? AND buyer_evm_addr = ? AND channel_kind = ?
|
|
109
118
|
`),
|
|
110
119
|
deleteServiceTotals: this._db.prepare('DELETE FROM payment_channel_service_totals WHERE session_id = ?'),
|
|
111
120
|
insertServiceTotal: this._db.prepare(`
|
|
@@ -128,6 +137,7 @@ export class ChannelStore {
|
|
|
128
137
|
sessionId: channel.sessionId,
|
|
129
138
|
peerId: channel.peerId,
|
|
130
139
|
role: channel.role,
|
|
140
|
+
channelKind: channel.channelKind ?? CHANNEL_KIND.PAID,
|
|
131
141
|
sellerEvmAddr: channel.sellerEvmAddr,
|
|
132
142
|
buyerEvmAddr: channel.buyerEvmAddr,
|
|
133
143
|
nonce: channel.nonce,
|
|
@@ -152,20 +162,20 @@ export class ChannelStore {
|
|
|
152
162
|
const row = this._stmts.getById.get(sessionId);
|
|
153
163
|
return row ? rowToChannel(row) : null;
|
|
154
164
|
}
|
|
155
|
-
getActiveChannelByPeer(peerId, role) {
|
|
156
|
-
const row = this._stmts.getActiveByPeer.get(peerId, role, CHANNEL_STATUS.ACTIVE);
|
|
165
|
+
getActiveChannelByPeer(peerId, role, channelKind = CHANNEL_KIND.PAID) {
|
|
166
|
+
const row = this._stmts.getActiveByPeer.get(peerId, role, channelKind, CHANNEL_STATUS.ACTIVE);
|
|
157
167
|
return row ? rowToChannel(row) : null;
|
|
158
168
|
}
|
|
159
|
-
getActiveChannelByPeerAndBuyer(peerId, role, buyerEvmAddr) {
|
|
160
|
-
const row = this._stmts.getActiveByPeerAndBuyer.get(peerId, role, buyerEvmAddr, CHANNEL_STATUS.ACTIVE);
|
|
169
|
+
getActiveChannelByPeerAndBuyer(peerId, role, buyerEvmAddr, channelKind = CHANNEL_KIND.PAID) {
|
|
170
|
+
const row = this._stmts.getActiveByPeerAndBuyer.get(peerId, role, buyerEvmAddr, channelKind, CHANNEL_STATUS.ACTIVE);
|
|
161
171
|
return row ? rowToChannel(row) : null;
|
|
162
172
|
}
|
|
163
|
-
getLatestChannel(peerId, role) {
|
|
164
|
-
const row = this._stmts.getLatestByPeer.get(peerId, role);
|
|
173
|
+
getLatestChannel(peerId, role, channelKind = CHANNEL_KIND.PAID) {
|
|
174
|
+
const row = this._stmts.getLatestByPeer.get(peerId, role, channelKind);
|
|
165
175
|
return row ? rowToChannel(row) : null;
|
|
166
176
|
}
|
|
167
|
-
getLatestChannelByPeerAndBuyer(peerId, role, buyerEvmAddr) {
|
|
168
|
-
const row = this._stmts.getLatestByPeerAndBuyer.get(peerId, role, buyerEvmAddr);
|
|
177
|
+
getLatestChannelByPeerAndBuyer(peerId, role, buyerEvmAddr, channelKind = CHANNEL_KIND.PAID) {
|
|
178
|
+
const row = this._stmts.getLatestByPeerAndBuyer.get(peerId, role, buyerEvmAddr, channelKind);
|
|
169
179
|
return row ? rowToChannel(row) : null;
|
|
170
180
|
}
|
|
171
181
|
updateChannelStatus(sessionId, status, settledAmount) {
|
|
@@ -185,28 +195,28 @@ export class ChannelStore {
|
|
|
185
195
|
return row?.max_nonce ?? 0;
|
|
186
196
|
}
|
|
187
197
|
/** List all channels ordered by most recent first. */
|
|
188
|
-
listAllChannels(limit = 100) {
|
|
189
|
-
const rows = this._stmts.listAll.all(limit);
|
|
198
|
+
listAllChannels(limit = 100, channelKind = CHANNEL_KIND.PAID) {
|
|
199
|
+
const rows = this._stmts.listAll.all(channelKind, limit);
|
|
190
200
|
return rows.map(rowToChannel);
|
|
191
201
|
}
|
|
192
202
|
/** Get all active channels for a given role (buyer or seller). */
|
|
193
|
-
getActiveChannels(role) {
|
|
194
|
-
const rows = this._stmts.getActiveChannels.all(role, CHANNEL_STATUS.ACTIVE);
|
|
203
|
+
getActiveChannels(role, channelKind = CHANNEL_KIND.PAID) {
|
|
204
|
+
const rows = this._stmts.getActiveChannels.all(role, channelKind, CHANNEL_STATUS.ACTIVE);
|
|
195
205
|
return rows.map(rowToChannel);
|
|
196
206
|
}
|
|
197
|
-
getActiveChannelsByBuyer(role, buyerEvmAddr) {
|
|
198
|
-
const rows = this._stmts.getActiveChannelsByBuyer.all(role, buyerEvmAddr, CHANNEL_STATUS.ACTIVE);
|
|
207
|
+
getActiveChannelsByBuyer(role, buyerEvmAddr, channelKind = CHANNEL_KIND.PAID) {
|
|
208
|
+
const rows = this._stmts.getActiveChannelsByBuyer.all(role, buyerEvmAddr, channelKind, CHANNEL_STATUS.ACTIVE);
|
|
199
209
|
return rows.map(rowToChannel);
|
|
200
210
|
}
|
|
201
211
|
/** All channels for a given buyer (any status), ordered by most recent first. */
|
|
202
|
-
getAllChannelsByBuyer(role, buyerEvmAddr) {
|
|
212
|
+
getAllChannelsByBuyer(role, buyerEvmAddr, channelKind = CHANNEL_KIND.PAID) {
|
|
203
213
|
const rows = this._db
|
|
204
|
-
.prepare('SELECT * FROM payment_channels WHERE role = ? AND buyer_evm_addr = ? ORDER BY created_at DESC')
|
|
205
|
-
.all(role, buyerEvmAddr);
|
|
214
|
+
.prepare('SELECT * FROM payment_channels WHERE role = ? AND buyer_evm_addr = ? AND channel_kind = ? ORDER BY created_at DESC')
|
|
215
|
+
.all(role, buyerEvmAddr, channelKind);
|
|
206
216
|
return rows.map(rowToChannel);
|
|
207
217
|
}
|
|
208
218
|
/** Aggregate totals across all channels for a given peer and role. */
|
|
209
|
-
getTotalsByPeer(peerId, role) {
|
|
219
|
+
getTotalsByPeer(peerId, role, channelKind = CHANNEL_KIND.PAID) {
|
|
210
220
|
const row = this._db.prepare(`
|
|
211
221
|
SELECT
|
|
212
222
|
COUNT(*) as total_sessions,
|
|
@@ -217,8 +227,8 @@ export class ChannelStore {
|
|
|
217
227
|
MIN(reserved_at) as first_session_at,
|
|
218
228
|
MAX(updated_at) as last_session_at
|
|
219
229
|
FROM payment_channels
|
|
220
|
-
WHERE peer_id = ? AND role = ?
|
|
221
|
-
`).get(peerId, role);
|
|
230
|
+
WHERE peer_id = ? AND role = ? AND channel_kind = ?
|
|
231
|
+
`).get(peerId, role, channelKind);
|
|
222
232
|
return {
|
|
223
233
|
totalSessions: row.total_sessions,
|
|
224
234
|
totalRequests: row.total_requests,
|
|
@@ -229,8 +239,8 @@ export class ChannelStore {
|
|
|
229
239
|
lastSessionAt: row.last_session_at,
|
|
230
240
|
};
|
|
231
241
|
}
|
|
232
|
-
getTotalsByPeerAndBuyer(peerId, role, buyerEvmAddr) {
|
|
233
|
-
const row = this._stmts.getTotalsByPeerAndBuyer.get(peerId, role, buyerEvmAddr);
|
|
242
|
+
getTotalsByPeerAndBuyer(peerId, role, buyerEvmAddr, channelKind = CHANNEL_KIND.PAID) {
|
|
243
|
+
const row = this._stmts.getTotalsByPeerAndBuyer.get(peerId, role, buyerEvmAddr, channelKind);
|
|
234
244
|
return {
|
|
235
245
|
totalSessions: row.total_sessions,
|
|
236
246
|
totalRequests: row.total_requests,
|
|
@@ -242,9 +252,9 @@ export class ChannelStore {
|
|
|
242
252
|
};
|
|
243
253
|
}
|
|
244
254
|
// ── Timeout queries ───────────────────────────────────────────
|
|
245
|
-
getTimedOutChannels(timeoutSeconds) {
|
|
255
|
+
getTimedOutChannels(timeoutSeconds, channelKind = CHANNEL_KIND.PAID) {
|
|
246
256
|
const cutoff = Date.now() - timeoutSeconds * 1000;
|
|
247
|
-
const rows = this._stmts.getTimedOut.all(CHANNEL_STATUS.ACTIVE, cutoff);
|
|
257
|
+
const rows = this._stmts.getTimedOut.all(channelKind, CHANNEL_STATUS.ACTIVE, cutoff);
|
|
248
258
|
return rows.map(rowToChannel);
|
|
249
259
|
}
|
|
250
260
|
// ── Receipt CRUD ──────────────────────────────────────────────
|
|
@@ -280,10 +290,38 @@ export class ChannelStore {
|
|
|
280
290
|
updatedAt,
|
|
281
291
|
})));
|
|
282
292
|
}
|
|
293
|
+
replaceMetadataServiceTotals(sessionId, services = []) {
|
|
294
|
+
this.replaceServiceTotals(sessionId, services.map((service) => ({
|
|
295
|
+
serviceId: service.serviceId,
|
|
296
|
+
cumulativeAmount: service.cumulativeAmount.toString(),
|
|
297
|
+
cumulativeInputTokens: service.cumulativeInputTokens.toString(),
|
|
298
|
+
cumulativeCachedInputTokens: service.cumulativeCachedInputTokens.toString(),
|
|
299
|
+
cumulativeOutputTokens: service.cumulativeOutputTokens.toString(),
|
|
300
|
+
cumulativeRequestCount: service.cumulativeRequestCount.toString(),
|
|
301
|
+
})));
|
|
302
|
+
}
|
|
283
303
|
getServiceTotals(sessionId) {
|
|
284
304
|
const rows = this._stmts.getServiceTotals.all(sessionId);
|
|
285
305
|
return rows.map(rowToServiceTotal);
|
|
286
306
|
}
|
|
307
|
+
getMetadataServiceTotals(sessionId) {
|
|
308
|
+
return this.getServiceTotals(sessionId).map((total) => ({
|
|
309
|
+
serviceId: total.serviceId,
|
|
310
|
+
cumulativeAmount: BigInt(total.cumulativeAmount),
|
|
311
|
+
cumulativeInputTokens: BigInt(total.cumulativeInputTokens),
|
|
312
|
+
cumulativeCachedInputTokens: BigInt(total.cumulativeCachedInputTokens),
|
|
313
|
+
cumulativeOutputTokens: BigInt(total.cumulativeOutputTokens),
|
|
314
|
+
cumulativeRequestCount: BigInt(total.cumulativeRequestCount),
|
|
315
|
+
}));
|
|
316
|
+
}
|
|
317
|
+
getChannelMetadata(channel) {
|
|
318
|
+
return {
|
|
319
|
+
cumulativeInputTokens: BigInt(channel.tokensDelivered),
|
|
320
|
+
cumulativeOutputTokens: BigInt(channel.previousConsumption),
|
|
321
|
+
cumulativeRequestCount: BigInt(channel.requestCount),
|
|
322
|
+
services: this.getMetadataServiceTotals(channel.sessionId),
|
|
323
|
+
};
|
|
324
|
+
}
|
|
287
325
|
// ── Lifecycle ─────────────────────────────────────────────────
|
|
288
326
|
close() {
|
|
289
327
|
this._db.close();
|
|
@@ -294,6 +332,7 @@ function rowToChannel(row) {
|
|
|
294
332
|
sessionId: row.session_id,
|
|
295
333
|
peerId: row.peer_id,
|
|
296
334
|
role: row.role,
|
|
335
|
+
channelKind: (row.channel_kind ?? CHANNEL_KIND.PAID),
|
|
297
336
|
sellerEvmAddr: row.seller_evm_addr,
|
|
298
337
|
buyerEvmAddr: row.buyer_evm_addr,
|
|
299
338
|
nonce: row.nonce,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-store.js","sourceRoot":"","sources":["../../src/payments/channel-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channel-store.js","sourceRoot":"","sources":["../../src/payments/channel-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ServiceMetadataDelta, type SpendingAuthMetadata } from './evm/signatures.js';
|
|
2
|
+
export declare class RequestServiceTracker {
|
|
3
|
+
private readonly _limit;
|
|
4
|
+
private readonly _services;
|
|
5
|
+
constructor(_limit?: number);
|
|
6
|
+
track(requestId: string, service: string): void;
|
|
7
|
+
get(requestId: string | undefined): string | undefined;
|
|
8
|
+
take(requestId: string | undefined): string | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare class CountedRequestTracker {
|
|
11
|
+
private readonly _limit;
|
|
12
|
+
private readonly _requestIds;
|
|
13
|
+
constructor(_limit?: number);
|
|
14
|
+
has(requestId: string | undefined): boolean;
|
|
15
|
+
mark(requestId: string | undefined): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function advanceUsageMetadata(previous: SpendingAuthMetadata | undefined, service: string | undefined, delta: ServiceMetadataDelta): SpendingAuthMetadata;
|
|
18
|
+
//# sourceMappingURL=channel-usage-accounting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-usage-accounting.d.ts","sourceRoot":"","sources":["../../src/payments/channel-usage-accounting.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAgB7B,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;gBAE1B,MAAM,SAAgC;IAEnE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAKtD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;CAMxD;AAED,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAEpB,MAAM,SAAgC;IAEnE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAI3C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAK1C;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,oBAAoB,GAC1B,oBAAoB,CAStB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { withServiceMetadata, ZERO_METADATA, } from './evm/signatures.js';
|
|
2
|
+
const DEFAULT_REQUEST_TRACKER_LIMIT = 512;
|
|
3
|
+
function trimOldestMapEntry(map, limit) {
|
|
4
|
+
if (map.size < limit)
|
|
5
|
+
return;
|
|
6
|
+
const oldest = map.keys().next().value;
|
|
7
|
+
if (oldest !== undefined)
|
|
8
|
+
map.delete(oldest);
|
|
9
|
+
}
|
|
10
|
+
function trimOldestSetEntry(set, limit) {
|
|
11
|
+
if (set.size < limit)
|
|
12
|
+
return;
|
|
13
|
+
const oldest = set.values().next().value;
|
|
14
|
+
if (oldest !== undefined)
|
|
15
|
+
set.delete(oldest);
|
|
16
|
+
}
|
|
17
|
+
export class RequestServiceTracker {
|
|
18
|
+
_limit;
|
|
19
|
+
_services = new Map();
|
|
20
|
+
constructor(_limit = DEFAULT_REQUEST_TRACKER_LIMIT) {
|
|
21
|
+
this._limit = _limit;
|
|
22
|
+
}
|
|
23
|
+
track(requestId, service) {
|
|
24
|
+
trimOldestMapEntry(this._services, this._limit);
|
|
25
|
+
this._services.set(requestId, service);
|
|
26
|
+
}
|
|
27
|
+
get(requestId) {
|
|
28
|
+
if (!requestId)
|
|
29
|
+
return undefined;
|
|
30
|
+
return this._services.get(requestId);
|
|
31
|
+
}
|
|
32
|
+
take(requestId) {
|
|
33
|
+
if (!requestId)
|
|
34
|
+
return undefined;
|
|
35
|
+
const service = this._services.get(requestId);
|
|
36
|
+
this._services.delete(requestId);
|
|
37
|
+
return service;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class CountedRequestTracker {
|
|
41
|
+
_limit;
|
|
42
|
+
_requestIds = new Set();
|
|
43
|
+
constructor(_limit = DEFAULT_REQUEST_TRACKER_LIMIT) {
|
|
44
|
+
this._limit = _limit;
|
|
45
|
+
}
|
|
46
|
+
has(requestId) {
|
|
47
|
+
return requestId != null && this._requestIds.has(requestId);
|
|
48
|
+
}
|
|
49
|
+
mark(requestId) {
|
|
50
|
+
if (!requestId)
|
|
51
|
+
return;
|
|
52
|
+
trimOldestSetEntry(this._requestIds, this._limit);
|
|
53
|
+
this._requestIds.add(requestId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function advanceUsageMetadata(previous, service, delta) {
|
|
57
|
+
const prev = previous ?? ZERO_METADATA;
|
|
58
|
+
const totals = {
|
|
59
|
+
cumulativeInputTokens: prev.cumulativeInputTokens + delta.inputTokens,
|
|
60
|
+
cumulativeOutputTokens: prev.cumulativeOutputTokens + delta.outputTokens,
|
|
61
|
+
cumulativeRequestCount: prev.cumulativeRequestCount + delta.requests,
|
|
62
|
+
services: prev.services ?? [],
|
|
63
|
+
};
|
|
64
|
+
return withServiceMetadata(totals, service, delta);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=channel-usage-accounting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-usage-accounting.js","sourceRoot":"","sources":["../../src/payments/channel-usage-accounting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface FreeUsageClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
fallbackRpcUrls?: string[];
|
|
6
|
+
contractAddress: string;
|
|
7
|
+
evmChainId?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface FreeUsageAgentStats {
|
|
10
|
+
channelCount: number;
|
|
11
|
+
lastSettledAt: number;
|
|
12
|
+
}
|
|
13
|
+
export interface FreeUsageChannelInfo {
|
|
14
|
+
buyer: string;
|
|
15
|
+
seller: string;
|
|
16
|
+
latestSequence: bigint;
|
|
17
|
+
metadataHash: string;
|
|
18
|
+
deadline: bigint;
|
|
19
|
+
updatedAt: bigint;
|
|
20
|
+
closedAt: bigint;
|
|
21
|
+
status: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class FreeUsageClient extends BaseEvmClient {
|
|
24
|
+
constructor(config: FreeUsageClientConfig);
|
|
25
|
+
open(signer: AbstractSigner, buyer: string, salt: string, deadline: bigint, buyerSig: string): Promise<string>;
|
|
26
|
+
record(signer: AbstractSigner, channelId: string, sequence: bigint, metadata: string, deadline: bigint, buyerSig: string): Promise<string>;
|
|
27
|
+
close(signer: AbstractSigner, channelId: string, sequence: bigint, metadata: string, deadline: bigint, buyerSig: string): Promise<string>;
|
|
28
|
+
getSession(channelId: string): Promise<FreeUsageChannelInfo>;
|
|
29
|
+
computeChannelId(buyer: string, seller: string, salt: string): string;
|
|
30
|
+
getAgentStats(agentId: number): Promise<FreeUsageAgentStats>;
|
|
31
|
+
activeChannelCount(seller: string): Promise<bigint>;
|
|
32
|
+
domainSeparator(): Promise<string>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=free-usage-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-usage-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/free-usage-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAaD,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,MAAM,EAAE,qBAAqB;IAInC,IAAI,CACR,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAIZ,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAIZ,KAAK,CACT,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAIZ,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAelE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS5D,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAIzC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
import { computeFreeUsageChannelId } from './signatures.js';
|
|
4
|
+
const FREE_USAGE_ABI = [
|
|
5
|
+
'function open(address buyer, bytes32 salt, uint256 deadline, bytes buyerSig) external',
|
|
6
|
+
'function record(bytes32 channelId, uint256 sequence, bytes metadata, uint256 deadline, bytes buyerSig) external',
|
|
7
|
+
'function close(bytes32 channelId, uint256 sequence, bytes metadata, uint256 deadline, bytes buyerSig) external',
|
|
8
|
+
'function channels(bytes32 channelId) external view returns (address buyer, address seller, uint256 latestSequence, bytes32 metadataHash, uint256 deadline, uint256 updatedAt, uint256 closedAt, uint8 status)',
|
|
9
|
+
'function computeChannelId(address buyer, address seller, bytes32 salt) external pure returns (bytes32)',
|
|
10
|
+
'function getAgentStats(uint256 agentId) external view returns (uint64 channelCount, uint64 lastSettledAt)',
|
|
11
|
+
'function activeChannelCount(address seller) external view returns (uint256)',
|
|
12
|
+
'function domainSeparator() external view returns (bytes32)',
|
|
13
|
+
];
|
|
14
|
+
export class FreeUsageClient extends BaseEvmClient {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId);
|
|
17
|
+
}
|
|
18
|
+
async open(signer, buyer, salt, deadline, buyerSig) {
|
|
19
|
+
return this._execWrite(signer, FREE_USAGE_ABI, 'open', buyer, salt, deadline, buyerSig);
|
|
20
|
+
}
|
|
21
|
+
async record(signer, channelId, sequence, metadata, deadline, buyerSig) {
|
|
22
|
+
return this._execWrite(signer, FREE_USAGE_ABI, 'record', channelId, sequence, metadata, deadline, buyerSig);
|
|
23
|
+
}
|
|
24
|
+
async close(signer, channelId, sequence, metadata, deadline, buyerSig) {
|
|
25
|
+
return this._execWrite(signer, FREE_USAGE_ABI, 'close', channelId, sequence, metadata, deadline, buyerSig);
|
|
26
|
+
}
|
|
27
|
+
async getSession(channelId) {
|
|
28
|
+
const contract = new Contract(this._contractAddress, FREE_USAGE_ABI, this._provider);
|
|
29
|
+
const result = await contract.getFunction('channels')(channelId);
|
|
30
|
+
return {
|
|
31
|
+
buyer: result[0],
|
|
32
|
+
seller: result[1],
|
|
33
|
+
latestSequence: result[2],
|
|
34
|
+
metadataHash: result[3],
|
|
35
|
+
deadline: result[4],
|
|
36
|
+
updatedAt: result[5],
|
|
37
|
+
closedAt: result[6],
|
|
38
|
+
status: Number(result[7]),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
computeChannelId(buyer, seller, salt) {
|
|
42
|
+
return computeFreeUsageChannelId(buyer, seller, salt);
|
|
43
|
+
}
|
|
44
|
+
async getAgentStats(agentId) {
|
|
45
|
+
const contract = new Contract(this._contractAddress, FREE_USAGE_ABI, this._provider);
|
|
46
|
+
const result = await contract.getFunction('getAgentStats')(agentId);
|
|
47
|
+
return {
|
|
48
|
+
channelCount: Number(result[0]),
|
|
49
|
+
lastSettledAt: Number(result[1]),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
async activeChannelCount(seller) {
|
|
53
|
+
const contract = new Contract(this._contractAddress, FREE_USAGE_ABI, this._provider);
|
|
54
|
+
return contract.getFunction('activeChannelCount')(seller);
|
|
55
|
+
}
|
|
56
|
+
async domainSeparator() {
|
|
57
|
+
const contract = new Contract(this._contractAddress, FREE_USAGE_ABI, this._provider);
|
|
58
|
+
return contract.getFunction('domainSeparator')();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=free-usage-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-usage-client.js","sourceRoot":"","sources":["../../../src/payments/evm/free-usage-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,18 @@ export declare const SET_OPERATOR_TYPES: {
|
|
|
17
17
|
type: string;
|
|
18
18
|
}[];
|
|
19
19
|
};
|
|
20
|
+
export declare const FREE_USAGE_OPEN_TYPES: {
|
|
21
|
+
FreeUsageOpen: {
|
|
22
|
+
name: string;
|
|
23
|
+
type: string;
|
|
24
|
+
}[];
|
|
25
|
+
};
|
|
26
|
+
export declare const FREE_USAGE_AUTH_TYPES: {
|
|
27
|
+
FreeUsageAuth: {
|
|
28
|
+
name: string;
|
|
29
|
+
type: string;
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
20
32
|
export interface SpendingAuthMessage {
|
|
21
33
|
channelId: string;
|
|
22
34
|
cumulativeAmount: bigint;
|
|
@@ -31,6 +43,16 @@ export interface SetOperatorMessage {
|
|
|
31
43
|
operator: string;
|
|
32
44
|
nonce: bigint;
|
|
33
45
|
}
|
|
46
|
+
export interface FreeUsageOpenMessage {
|
|
47
|
+
channelId: string;
|
|
48
|
+
deadline: bigint;
|
|
49
|
+
}
|
|
50
|
+
export interface FreeUsageAuthMessage {
|
|
51
|
+
channelId: string;
|
|
52
|
+
sequence: bigint;
|
|
53
|
+
metadataHash: string;
|
|
54
|
+
deadline: bigint;
|
|
55
|
+
}
|
|
34
56
|
/**
|
|
35
57
|
* SpendingAuth metadata v2.
|
|
36
58
|
*
|
|
@@ -70,17 +92,65 @@ export interface SpendingAuthServiceMetadata {
|
|
|
70
92
|
export declare const METADATA_VERSION = 2n;
|
|
71
93
|
export declare function encodeMetadata(metadata: SpendingAuthMetadata): string;
|
|
72
94
|
export declare function getServiceMetadataId(service: string): string;
|
|
95
|
+
export interface ServiceMetadataDelta {
|
|
96
|
+
amount: bigint;
|
|
97
|
+
inputTokens: bigint;
|
|
98
|
+
cachedInputTokens: bigint;
|
|
99
|
+
outputTokens: bigint;
|
|
100
|
+
requests: bigint;
|
|
101
|
+
}
|
|
102
|
+
export declare function withServiceMetadata<T extends {
|
|
103
|
+
services?: SpendingAuthServiceMetadata[];
|
|
104
|
+
}>(metadata: T, service: string | undefined, delta: ServiceMetadataDelta): T;
|
|
73
105
|
export declare function computeMetadataHash(metadata: SpendingAuthMetadata): string;
|
|
74
106
|
export declare const ZERO_METADATA: SpendingAuthMetadata;
|
|
75
107
|
export declare const ZERO_METADATA_HASH: string;
|
|
108
|
+
/**
|
|
109
|
+
* FreeUsage metadata v1.
|
|
110
|
+
*
|
|
111
|
+
* ABI layout:
|
|
112
|
+
* abi.encode(
|
|
113
|
+
* uint256 version,
|
|
114
|
+
* uint256 cumulativeInputTokens,
|
|
115
|
+
* uint256 cumulativeOutputTokens,
|
|
116
|
+
* uint256 cumulativeRequestCount,
|
|
117
|
+
* ServiceTotal[] services
|
|
118
|
+
* )
|
|
119
|
+
*
|
|
120
|
+
* Uses the same service tuple as paid SpendingAuth metadata so indexers can
|
|
121
|
+
* decode per-service attribution uniformly. cumulativeAmount is always zero
|
|
122
|
+
* for free usage.
|
|
123
|
+
*/
|
|
124
|
+
export interface FreeUsageMetadata {
|
|
125
|
+
cumulativeInputTokens: bigint;
|
|
126
|
+
cumulativeOutputTokens: bigint;
|
|
127
|
+
cumulativeRequestCount: bigint;
|
|
128
|
+
services?: SpendingAuthServiceMetadata[];
|
|
129
|
+
}
|
|
130
|
+
export type FreeUsageServiceMetadata = SpendingAuthServiceMetadata;
|
|
131
|
+
export declare const FREE_USAGE_METADATA_VERSION = 1n;
|
|
132
|
+
export declare function encodeFreeUsageMetadata(metadata: FreeUsageMetadata): string;
|
|
133
|
+
export declare function computeFreeUsageMetadataHash(metadata: FreeUsageMetadata): string;
|
|
134
|
+
export declare const ZERO_FREE_USAGE_METADATA: FreeUsageMetadata;
|
|
135
|
+
export declare const ZERO_FREE_USAGE_METADATA_HASH: string;
|
|
76
136
|
/**
|
|
77
137
|
* Compute the deterministic channelId.
|
|
78
138
|
* Must match: keccak256(abi.encode(buyer, seller, salt))
|
|
79
139
|
*/
|
|
80
140
|
export declare function computeChannelId(buyer: string, seller: string, salt: string): string;
|
|
141
|
+
export declare const FREE_USAGE_CHANNEL_DOMAIN: string;
|
|
142
|
+
/**
|
|
143
|
+
* Compute the deterministic free usage channelId.
|
|
144
|
+
* Domain-separated from AntseedChannels.computeChannelId so a paid and free
|
|
145
|
+
* channel cannot share an ID even if buyer, seller, and salt are identical.
|
|
146
|
+
*/
|
|
147
|
+
export declare function computeFreeUsageChannelId(buyer: string, seller: string, salt: string): string;
|
|
81
148
|
export declare function makeChannelsDomain(chainId: number, contractAddress: string): TypedDataDomain;
|
|
82
149
|
export declare function makeDepositsDomain(chainId: number, contractAddress: string): TypedDataDomain;
|
|
150
|
+
export declare function makeFreeUsageDomain(chainId: number, contractAddress: string): TypedDataDomain;
|
|
83
151
|
export declare function signSpendingAuth(signer: AbstractSigner, domain: TypedDataDomain, msg: SpendingAuthMessage): Promise<string>;
|
|
84
152
|
export declare function signReserveAuth(signer: AbstractSigner, domain: TypedDataDomain, msg: ReserveAuthMessage): Promise<string>;
|
|
85
153
|
export declare function signSetOperator(signer: AbstractSigner, domain: TypedDataDomain, msg: SetOperatorMessage): Promise<string>;
|
|
154
|
+
export declare function signFreeUsageOpen(signer: AbstractSigner, domain: TypedDataDomain, msg: FreeUsageOpenMessage): Promise<string>;
|
|
155
|
+
export declare function signFreeUsageAuth(signer: AbstractSigner, domain: TypedDataDomain, msg: FreeUsageAuthMessage): Promise<string>;
|
|
86
156
|
//# sourceMappingURL=signatures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAA2B,MAAM,QAAQ,CAAC;AAM5F,eAAO,MAAM,mBAAmB;;;;;CAM/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAM9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,2BAA2B,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAKnC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAerE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAE1E;AAED,eAAO,MAAM,aAAa,EAAE,oBAK3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"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"}
|