@asgcard/pay 0.1.1
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/CHANGELOG.md +90 -0
- package/LICENSE +21 -0
- package/README.md +393 -0
- package/dist/cjs/adapters/base.js +174 -0
- package/dist/cjs/adapters/base.js.map +1 -0
- package/dist/cjs/adapters/evm.js +263 -0
- package/dist/cjs/adapters/evm.js.map +1 -0
- package/dist/cjs/adapters/index.js +13 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/stellar.js +173 -0
- package/dist/cjs/adapters/stellar.js.map +1 -0
- package/dist/cjs/adapters/stripe.js +338 -0
- package/dist/cjs/adapters/stripe.js.map +1 -0
- package/dist/cjs/adapters/types.js +3 -0
- package/dist/cjs/adapters/types.js.map +1 -0
- package/dist/cjs/client.js +309 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logger.js +7 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/mpp.js +187 -0
- package/dist/cjs/mpp.js.map +1 -0
- package/dist/cjs/policy.js +71 -0
- package/dist/cjs/policy.js.map +1 -0
- package/dist/cjs/stellar.js +87 -0
- package/dist/cjs/stellar.js.map +1 -0
- package/dist/esm/adapters/base.js +170 -0
- package/dist/esm/adapters/base.js.map +1 -0
- package/dist/esm/adapters/evm.js +258 -0
- package/dist/esm/adapters/evm.js.map +1 -0
- package/dist/esm/adapters/index.js +5 -0
- package/dist/esm/adapters/index.js.map +1 -0
- package/dist/esm/adapters/stellar.js +136 -0
- package/dist/esm/adapters/stellar.js.map +1 -0
- package/dist/esm/adapters/stripe.js +334 -0
- package/dist/esm/adapters/stripe.js.map +1 -0
- package/dist/esm/adapters/types.js +2 -0
- package/dist/esm/adapters/types.js.map +1 -0
- package/dist/esm/client.js +302 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logger.js +3 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/mpp.js +175 -0
- package/dist/esm/mpp.js.map +1 -0
- package/dist/esm/policy.js +67 -0
- package/dist/esm/policy.js.map +1 -0
- package/dist/esm/stellar.js +50 -0
- package/dist/esm/stellar.js.map +1 -0
- package/dist/types/adapters/base.d.ts +53 -0
- package/dist/types/adapters/base.d.ts.map +1 -0
- package/dist/types/adapters/evm.d.ts +81 -0
- package/dist/types/adapters/evm.d.ts.map +1 -0
- package/dist/types/adapters/index.d.ts +6 -0
- package/dist/types/adapters/index.d.ts.map +1 -0
- package/dist/types/adapters/stellar.d.ts +67 -0
- package/dist/types/adapters/stellar.d.ts.map +1 -0
- package/dist/types/adapters/stripe.d.ts +206 -0
- package/dist/types/adapters/stripe.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +35 -0
- package/dist/types/adapters/types.d.ts.map +1 -0
- package/dist/types/client.d.ts +89 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logger.d.ts +10 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/mpp.d.ts +153 -0
- package/dist/types/mpp.d.ts.map +1 -0
- package/dist/types/policy.d.ts +40 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/stellar.d.ts +27 -0
- package/dist/types/stellar.d.ts.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @asgcard/pay — Production x402/MPP SDK for AI agent payments
|
|
3
|
+
// https://pay.asgcard.dev
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.BasePaymentAdapter = exports.StellarPaymentAdapter = exports.StripePaymentAdapter = exports.listEvmChains = exports.EvmPaymentAdapter = exports.base64urlDecode = exports.base64urlEncode = exports.extractMppChallenges = exports.detectProtocol = exports.parseMppReceipt = exports.buildAuthorizationHeader = exports.buildMppCredential = exports.decodeChallengeRequest = exports.parseMppChallenges = exports.parseMppChallenge = exports.PolicyEngine = exports.OwsClient = void 0;
|
|
6
|
+
// Core
|
|
7
|
+
var client_1 = require("./client");
|
|
8
|
+
Object.defineProperty(exports, "OwsClient", { enumerable: true, get: function () { return client_1.OwsClient; } });
|
|
9
|
+
var policy_1 = require("./policy");
|
|
10
|
+
Object.defineProperty(exports, "PolicyEngine", { enumerable: true, get: function () { return policy_1.PolicyEngine; } });
|
|
11
|
+
// MPP Protocol utilities
|
|
12
|
+
var mpp_1 = require("./mpp");
|
|
13
|
+
Object.defineProperty(exports, "parseMppChallenge", { enumerable: true, get: function () { return mpp_1.parseMppChallenge; } });
|
|
14
|
+
Object.defineProperty(exports, "parseMppChallenges", { enumerable: true, get: function () { return mpp_1.parseMppChallenges; } });
|
|
15
|
+
Object.defineProperty(exports, "decodeChallengeRequest", { enumerable: true, get: function () { return mpp_1.decodeChallengeRequest; } });
|
|
16
|
+
Object.defineProperty(exports, "buildMppCredential", { enumerable: true, get: function () { return mpp_1.buildMppCredential; } });
|
|
17
|
+
Object.defineProperty(exports, "buildAuthorizationHeader", { enumerable: true, get: function () { return mpp_1.buildAuthorizationHeader; } });
|
|
18
|
+
Object.defineProperty(exports, "parseMppReceipt", { enumerable: true, get: function () { return mpp_1.parseMppReceipt; } });
|
|
19
|
+
Object.defineProperty(exports, "detectProtocol", { enumerable: true, get: function () { return mpp_1.detectProtocol; } });
|
|
20
|
+
Object.defineProperty(exports, "extractMppChallenges", { enumerable: true, get: function () { return mpp_1.extractMppChallenges; } });
|
|
21
|
+
Object.defineProperty(exports, "base64urlEncode", { enumerable: true, get: function () { return mpp_1.base64urlEncode; } });
|
|
22
|
+
Object.defineProperty(exports, "base64urlDecode", { enumerable: true, get: function () { return mpp_1.base64urlDecode; } });
|
|
23
|
+
// Adapters — Universal EVM (recommended for on-chain x402)
|
|
24
|
+
var evm_1 = require("./adapters/evm");
|
|
25
|
+
Object.defineProperty(exports, "EvmPaymentAdapter", { enumerable: true, get: function () { return evm_1.EvmPaymentAdapter; } });
|
|
26
|
+
Object.defineProperty(exports, "listEvmChains", { enumerable: true, get: function () { return evm_1.listEvmChains; } });
|
|
27
|
+
// Adapters — Stripe MPP (fiat + stablecoins via Shared Payment Tokens)
|
|
28
|
+
var stripe_1 = require("./adapters/stripe");
|
|
29
|
+
Object.defineProperty(exports, "StripePaymentAdapter", { enumerable: true, get: function () { return stripe_1.StripePaymentAdapter; } });
|
|
30
|
+
// Adapters — Stellar
|
|
31
|
+
var stellar_1 = require("./adapters/stellar");
|
|
32
|
+
Object.defineProperty(exports, "StellarPaymentAdapter", { enumerable: true, get: function () { return stellar_1.StellarPaymentAdapter; } });
|
|
33
|
+
// Adapters — Base (backward compat, use EvmPaymentAdapter instead)
|
|
34
|
+
var base_1 = require("./adapters/base");
|
|
35
|
+
Object.defineProperty(exports, "BasePaymentAdapter", { enumerable: true, get: function () { return base_1.BasePaymentAdapter; } });
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,0BAA0B;;;AAE1B,OAAO;AACP,mCAAuD;AAA9C,mGAAA,SAAS,OAAA;AAClB,mCAAsD;AAA7C,sGAAA,YAAY,OAAA;AAGrB,yBAAyB;AACzB,6BAWe;AAVb,wGAAA,iBAAiB,OAAA;AACjB,yGAAA,kBAAkB,OAAA;AAClB,6GAAA,sBAAsB,OAAA;AACtB,yGAAA,kBAAkB,OAAA;AAClB,+GAAA,wBAAwB,OAAA;AACxB,sGAAA,eAAe,OAAA;AACf,qGAAA,cAAc,OAAA;AACd,2GAAA,oBAAoB,OAAA;AACpB,sGAAA,eAAe,OAAA;AACf,sGAAA,eAAe,OAAA;AAajB,2DAA2D;AAC3D,sCAAkE;AAAzD,wGAAA,iBAAiB,OAAA;AAAE,oGAAA,aAAa,OAAA;AAGzC,uEAAuE;AACvE,4CAAyD;AAAhD,8GAAA,oBAAoB,OAAA;AAG7B,qBAAqB;AACrB,8CAA2D;AAAlD,gHAAA,qBAAqB,OAAA;AAG9B,mEAAmE;AACnE,wCAAqD;AAA5C,0GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noopLogger = void 0;
|
|
4
|
+
/** No-op logger — used when no logger is provided. */
|
|
5
|
+
const noopLogger = () => { };
|
|
6
|
+
exports.noopLogger = noopLogger;
|
|
7
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";;;AAQA,sDAAsD;AAC/C,MAAM,UAAU,GAAW,GAAG,EAAE,GAAE,CAAC,CAAC;AAA9B,QAAA,UAAU,cAAoB"}
|
package/dist/cjs/mpp.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MPP — Machine Payments Protocol utilities.
|
|
4
|
+
*
|
|
5
|
+
* Handles parsing/building of MPP-standard headers:
|
|
6
|
+
* - WWW-Authenticate: Payment (Challenge)
|
|
7
|
+
* - Authorization: Payment (Credential)
|
|
8
|
+
* - Payment-Receipt (Receipt)
|
|
9
|
+
*
|
|
10
|
+
* @see https://mpp.dev/protocol/challenges
|
|
11
|
+
* @see https://mpp.dev/protocol/credentials
|
|
12
|
+
* @see https://mpp.dev/protocol/receipts
|
|
13
|
+
* @see https://paymentauth.org — IETF specification
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.base64urlEncode = base64urlEncode;
|
|
17
|
+
exports.base64urlDecode = base64urlDecode;
|
|
18
|
+
exports.parseMppChallenge = parseMppChallenge;
|
|
19
|
+
exports.parseMppChallenges = parseMppChallenges;
|
|
20
|
+
exports.decodeChallengeRequest = decodeChallengeRequest;
|
|
21
|
+
exports.buildMppCredential = buildMppCredential;
|
|
22
|
+
exports.buildAuthorizationHeader = buildAuthorizationHeader;
|
|
23
|
+
exports.parseMppReceipt = parseMppReceipt;
|
|
24
|
+
exports.detectProtocol = detectProtocol;
|
|
25
|
+
exports.extractMppChallenges = extractMppChallenges;
|
|
26
|
+
// ─── Base64url helpers ──────────────────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* Encode string to base64url (RFC 4648 §5).
|
|
29
|
+
* No padding, URL-safe alphabet.
|
|
30
|
+
*/
|
|
31
|
+
function base64urlEncode(str) {
|
|
32
|
+
const b64 = Buffer.from(str, 'utf-8').toString('base64');
|
|
33
|
+
return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Decode base64url string.
|
|
37
|
+
*/
|
|
38
|
+
function base64urlDecode(str) {
|
|
39
|
+
// Restore standard base64
|
|
40
|
+
let b64 = str.replace(/-/g, '+').replace(/_/g, '/');
|
|
41
|
+
// Add padding
|
|
42
|
+
while (b64.length % 4 !== 0)
|
|
43
|
+
b64 += '=';
|
|
44
|
+
return Buffer.from(b64, 'base64').toString('utf-8');
|
|
45
|
+
}
|
|
46
|
+
// ─── Challenge parsing ──────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Parse a `WWW-Authenticate: Payment` header value into an MppChallenge.
|
|
49
|
+
*
|
|
50
|
+
* Format:
|
|
51
|
+
* ```
|
|
52
|
+
* Payment id="abc", realm="mpp.dev", method="stripe", intent="charge",
|
|
53
|
+
* expires="2025-01-15T12:05:00Z", request="eyJhbW91bnQ..."
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @param header — Raw header value (with or without "Payment " prefix)
|
|
57
|
+
* @returns Parsed challenge object
|
|
58
|
+
* @throws Error if required fields are missing
|
|
59
|
+
*/
|
|
60
|
+
function parseMppChallenge(header) {
|
|
61
|
+
// Strip "Payment " prefix if present
|
|
62
|
+
let raw = header.trim();
|
|
63
|
+
if (raw.startsWith('Payment ')) {
|
|
64
|
+
raw = raw.slice(8);
|
|
65
|
+
}
|
|
66
|
+
// Parse RFC 7235 auth-param format: key="value", key="value"
|
|
67
|
+
const params = parseAuthParams(raw);
|
|
68
|
+
// Validate required fields
|
|
69
|
+
const required = ['id', 'realm', 'method', 'intent', 'request'];
|
|
70
|
+
for (const key of required) {
|
|
71
|
+
if (!params[key]) {
|
|
72
|
+
throw new Error(`MPP Challenge missing required field: ${key}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
id: params.id,
|
|
77
|
+
realm: params.realm,
|
|
78
|
+
method: params.method,
|
|
79
|
+
intent: params.intent,
|
|
80
|
+
request: params.request,
|
|
81
|
+
expires: params.expires,
|
|
82
|
+
description: params.description,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse multiple `WWW-Authenticate: Payment` headers.
|
|
87
|
+
* Servers can offer multiple payment options.
|
|
88
|
+
*/
|
|
89
|
+
function parseMppChallenges(headers) {
|
|
90
|
+
return headers.map(parseMppChallenge);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decode the `request` field of a Challenge into a structured object.
|
|
94
|
+
*/
|
|
95
|
+
function decodeChallengeRequest(challenge) {
|
|
96
|
+
const json = base64urlDecode(challenge.request);
|
|
97
|
+
return JSON.parse(json);
|
|
98
|
+
}
|
|
99
|
+
// ─── Credential building ────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Build an MPP Credential for the `Authorization: Payment` header.
|
|
102
|
+
*
|
|
103
|
+
* @param challenge — The challenge being responded to
|
|
104
|
+
* @param source — DID or identifier of the payer
|
|
105
|
+
* @param payload — Method-specific proof (SPT for Stripe, tx for Tempo)
|
|
106
|
+
* @returns Base64url-encoded credential string
|
|
107
|
+
*/
|
|
108
|
+
function buildMppCredential(challenge, source, payload) {
|
|
109
|
+
const credential = {
|
|
110
|
+
challenge,
|
|
111
|
+
source,
|
|
112
|
+
payload,
|
|
113
|
+
};
|
|
114
|
+
return base64urlEncode(JSON.stringify(credential));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Build the full `Authorization` header value.
|
|
118
|
+
*/
|
|
119
|
+
function buildAuthorizationHeader(challenge, source, payload) {
|
|
120
|
+
return `Payment ${buildMppCredential(challenge, source, payload)}`;
|
|
121
|
+
}
|
|
122
|
+
// ─── Receipt parsing ────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Parse a `Payment-Receipt` header.
|
|
125
|
+
*/
|
|
126
|
+
function parseMppReceipt(header) {
|
|
127
|
+
try {
|
|
128
|
+
const json = base64urlDecode(header.trim());
|
|
129
|
+
return JSON.parse(json);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return { raw: header };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// ─── Protocol detection ─────────────────────────────────────────────
|
|
136
|
+
/**
|
|
137
|
+
* Detect whether a 402 response uses MPP or x402 protocol.
|
|
138
|
+
*
|
|
139
|
+
* MPP: has `WWW-Authenticate: Payment` header
|
|
140
|
+
* x402: has JSON body with `x402Version` and `accepts[]`
|
|
141
|
+
*/
|
|
142
|
+
function detectProtocol(headers, body) {
|
|
143
|
+
// Check for MPP: WWW-Authenticate header with Payment scheme
|
|
144
|
+
const wwwAuth = headers['www-authenticate'] || headers['WWW-Authenticate'];
|
|
145
|
+
if (wwwAuth) {
|
|
146
|
+
const values = Array.isArray(wwwAuth) ? wwwAuth : [wwwAuth];
|
|
147
|
+
if (values.some((v) => v.trim().startsWith('Payment '))) {
|
|
148
|
+
return 'mpp';
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Check for x402: JSON body with x402Version
|
|
152
|
+
if (body && typeof body === 'object' && ('x402Version' in body || 'accepts' in body)) {
|
|
153
|
+
return 'x402';
|
|
154
|
+
}
|
|
155
|
+
return 'unknown';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Extract all MPP challenges from response headers.
|
|
159
|
+
* Handles both single and multiple WWW-Authenticate headers.
|
|
160
|
+
*/
|
|
161
|
+
function extractMppChallenges(headers) {
|
|
162
|
+
const wwwAuth = headers['www-authenticate'] || headers['WWW-Authenticate'];
|
|
163
|
+
if (!wwwAuth)
|
|
164
|
+
return [];
|
|
165
|
+
const values = Array.isArray(wwwAuth) ? wwwAuth : [wwwAuth];
|
|
166
|
+
return values
|
|
167
|
+
.filter((v) => v.trim().startsWith('Payment '))
|
|
168
|
+
.map(parseMppChallenge);
|
|
169
|
+
}
|
|
170
|
+
// ─── Internal helpers ───────────────────────────────────────────────
|
|
171
|
+
/**
|
|
172
|
+
* Parse RFC 7235 auth-param format.
|
|
173
|
+
* `key="value", key="value"`
|
|
174
|
+
*/
|
|
175
|
+
function parseAuthParams(raw) {
|
|
176
|
+
const params = {};
|
|
177
|
+
// Match key="value" pairs, handling escaped quotes
|
|
178
|
+
const regex = /(\w+)="((?:[^"\\]|\\.)*)"/g;
|
|
179
|
+
let match;
|
|
180
|
+
while ((match = regex.exec(raw)) !== null) {
|
|
181
|
+
const [, key, value] = match;
|
|
182
|
+
// Unescape backslash-escaped characters
|
|
183
|
+
params[key] = value.replace(/\\(.)/g, '$1');
|
|
184
|
+
}
|
|
185
|
+
return params;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=mpp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mpp.js","sourceRoot":"","sources":["../../src/mpp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PolicyEngine — On-device budget controller for autonomous AI agents.
|
|
4
|
+
*
|
|
5
|
+
* Enforces per-transaction caps, monthly rolling budgets, and optional
|
|
6
|
+
* destination whitelists so that an agent can never overspend without
|
|
7
|
+
* explicit human approval.
|
|
8
|
+
*
|
|
9
|
+
* Fail-closed: if any check fails, the payment is rejected.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PolicyEngine = void 0;
|
|
13
|
+
const logger_1 = require("./logger");
|
|
14
|
+
class PolicyEngine {
|
|
15
|
+
policy;
|
|
16
|
+
currentMonthSpent = 0;
|
|
17
|
+
log;
|
|
18
|
+
constructor(policy, logger) {
|
|
19
|
+
this.policy = policy;
|
|
20
|
+
this.log = logger ?? logger_1.noopLogger;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns `true` if the proposed spend passes every policy gate.
|
|
24
|
+
* Fail-closed: any unrecognised state returns `false`.
|
|
25
|
+
*/
|
|
26
|
+
checkPolicy(amountUsd, destination) {
|
|
27
|
+
if (amountUsd <= 0) {
|
|
28
|
+
this.log(`[Policy] 🚫 Invalid amount: $${amountUsd}`);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (amountUsd > this.policy.maxAmountPerTransaction) {
|
|
32
|
+
this.log(`[Policy] 🚫 $${amountUsd} exceeds per-tx limit of $${this.policy.maxAmountPerTransaction}`);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (this.currentMonthSpent + amountUsd > this.policy.monthlyBudget) {
|
|
36
|
+
this.log(`[Policy] 🚫 $${amountUsd} would exceed monthly budget of $${this.policy.monthlyBudget} (spent: $${this.currentMonthSpent})`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (this.policy.allowedDestinations &&
|
|
40
|
+
this.policy.allowedDestinations.length > 0 &&
|
|
41
|
+
destination &&
|
|
42
|
+
!this.policy.allowedDestinations.includes(destination)) {
|
|
43
|
+
this.log(`[Policy] 🚫 Destination ${destination} not in whitelist`);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
/** Record a successful spend against the rolling budget. */
|
|
49
|
+
recordSpend(amountUsd) {
|
|
50
|
+
this.currentMonthSpent += amountUsd;
|
|
51
|
+
this.log(`[Policy] 📊 Spent $${amountUsd} — total: $${this.currentMonthSpent}/$${this.policy.monthlyBudget}`);
|
|
52
|
+
}
|
|
53
|
+
/** Get total USD spent in the current period. */
|
|
54
|
+
getSpent() {
|
|
55
|
+
return this.currentMonthSpent;
|
|
56
|
+
}
|
|
57
|
+
/** Get remaining USD budget. */
|
|
58
|
+
getRemainingBudget() {
|
|
59
|
+
return Math.max(0, this.policy.monthlyBudget - this.currentMonthSpent);
|
|
60
|
+
}
|
|
61
|
+
/** Reset the spend counter (e.g. on month rollover or for testing). */
|
|
62
|
+
resetBudget() {
|
|
63
|
+
this.currentMonthSpent = 0;
|
|
64
|
+
}
|
|
65
|
+
/** Get a snapshot of the current policy configuration. */
|
|
66
|
+
getPolicy() {
|
|
67
|
+
return { ...this.policy };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.PolicyEngine = PolicyEngine;
|
|
71
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,qCAA8C;AAW9C,MAAa,YAAY;IAKb;IAJF,iBAAiB,GAAG,CAAC,CAAC;IACtB,GAAG,CAAS;IAEpB,YACU,MAAoB,EAC5B,MAAe;QADP,WAAM,GAAN,MAAM,CAAc;QAG5B,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,mBAAU,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,SAAiB,EAAE,WAAoB;QACxD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,CACN,gBAAgB,SAAS,6BAA6B,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAC5F,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACnE,IAAI,CAAC,GAAG,CACN,gBAAgB,SAAS,oCAAoC,IAAI,CAAC,MAAM,CAAC,aAAa,aAAa,IAAI,CAAC,iBAAiB,GAAG,CAC7H,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAC/B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAC1C,WAAW;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,EACtD,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,2BAA2B,WAAW,mBAAmB,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IACrD,WAAW,CAAC,SAAiB;QAClC,IAAI,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACpC,IAAI,CAAC,GAAG,CACN,sBAAsB,SAAS,cAAc,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,iDAAiD;IAC1C,QAAQ;QACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,gCAAgC;IACzB,kBAAkB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAED,uEAAuE;IAChE,WAAW;QAChB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,0DAA0D;IACnD,SAAS;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AA3ED,oCA2EC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.StellarPaymentAdapter = void 0;
|
|
37
|
+
const StellarSdk = __importStar(require("@stellar/stellar-sdk"));
|
|
38
|
+
/**
|
|
39
|
+
* StellarPaymentAdapter — Executes on-chain Stellar payments.
|
|
40
|
+
*
|
|
41
|
+
* In the production ASG Pay stack the adapter targets USDC on Stellar
|
|
42
|
+
* mainnet (see https://pay.asgcard.dev). For hackathon purposes it
|
|
43
|
+
* defaults to Stellar Testnet with native XLM.
|
|
44
|
+
*/
|
|
45
|
+
class StellarPaymentAdapter {
|
|
46
|
+
keypair;
|
|
47
|
+
server;
|
|
48
|
+
networkPassphrase;
|
|
49
|
+
constructor(options) {
|
|
50
|
+
this.keypair = StellarSdk.Keypair.fromSecret(options.secretKey);
|
|
51
|
+
this.networkPassphrase =
|
|
52
|
+
options.networkPassphrase || StellarSdk.Networks.TESTNET;
|
|
53
|
+
this.server = new StellarSdk.Horizon.Server(options.horizonUrl || 'https://horizon-testnet.stellar.org');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Send `amount` (in stroops) of native XLM to `destination`.
|
|
57
|
+
* Returns the transaction hash on success, or `null` on failure.
|
|
58
|
+
*/
|
|
59
|
+
async pay(destination, amount, network) {
|
|
60
|
+
try {
|
|
61
|
+
console.log(`[Stellar] 🚀 Building payment → ${destination} (${amount} stroops, ${network})`);
|
|
62
|
+
const sourceAccount = await this.server.loadAccount(this.keypair.publicKey());
|
|
63
|
+
const tx = new StellarSdk.TransactionBuilder(sourceAccount, {
|
|
64
|
+
fee: StellarSdk.BASE_FEE,
|
|
65
|
+
networkPassphrase: this.networkPassphrase,
|
|
66
|
+
})
|
|
67
|
+
.addOperation(StellarSdk.Operation.payment({
|
|
68
|
+
destination,
|
|
69
|
+
asset: StellarSdk.Asset.native(),
|
|
70
|
+
amount: (parseInt(amount) / 10_000_000).toFixed(7),
|
|
71
|
+
}))
|
|
72
|
+
.setTimeout(30)
|
|
73
|
+
.build();
|
|
74
|
+
tx.sign(this.keypair);
|
|
75
|
+
console.log('[Stellar] 📡 Submitting transaction…');
|
|
76
|
+
const response = await this.server.submitTransaction(tx);
|
|
77
|
+
console.log(`[Stellar] ✅ Confirmed — hash: ${response.hash}`);
|
|
78
|
+
return response.hash;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('[Stellar] ❌ Transaction failed:', error?.response?.data || error.message);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.StellarPaymentAdapter = StellarPaymentAdapter;
|
|
87
|
+
//# sourceMappingURL=stellar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stellar.js","sourceRoot":"","sources":["../../src/stellar.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAWnD;;;;;;GAMG;AACH,MAAa,qBAAqB;IACxB,OAAO,CAAqB;IAC5B,MAAM,CAA4B;IAClC,iBAAiB,CAAS;IAElC,YAAY,OAAqC;QAC/C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB;YACpB,OAAO,CAAC,iBAAiB,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CACzC,OAAO,CAAC,UAAU,IAAI,qCAAqC,CAC5D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,GAAG,CACd,WAAmB,EACnB,MAAc,EACd,OAAe;QAEf,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CACT,mCAAmC,WAAW,KAAK,MAAM,aAAa,OAAO,GAAG,CACjF,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CACjD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CACzB,CAAC;YAEF,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE;gBAC1D,GAAG,EAAE,UAAU,CAAC,QAAQ;gBACxB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC;iBACC,YAAY,CACX,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC3B,WAAW;gBACX,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;gBAChC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aACnD,CAAC,CACH;iBACA,UAAU,CAAC,EAAE,CAAC;iBACd,KAAK,EAAE,CAAC;YAEX,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,iCAAiC,EACjC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CACvC,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA7DD,sDA6DC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createWalletClient, createPublicClient, http, formatEther, formatUnits, } from 'viem';
|
|
2
|
+
import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
|
|
3
|
+
import { baseSepolia, base } from 'viem/chains';
|
|
4
|
+
import { noopLogger } from '../logger';
|
|
5
|
+
/** ERC-20 transfer ABI — minimal, only what we need. */
|
|
6
|
+
const ERC20_TRANSFER_ABI = [
|
|
7
|
+
{
|
|
8
|
+
name: 'transfer',
|
|
9
|
+
type: 'function',
|
|
10
|
+
stateMutability: 'nonpayable',
|
|
11
|
+
inputs: [
|
|
12
|
+
{ name: 'to', type: 'address' },
|
|
13
|
+
{ name: 'amount', type: 'uint256' },
|
|
14
|
+
],
|
|
15
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'balanceOf',
|
|
19
|
+
type: 'function',
|
|
20
|
+
stateMutability: 'view',
|
|
21
|
+
inputs: [{ name: 'account', type: 'address' }],
|
|
22
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
/** Known USDC contract addresses on Base networks. */
|
|
26
|
+
const USDC_ADDRESSES = {
|
|
27
|
+
// Base Mainnet
|
|
28
|
+
8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
29
|
+
// Base Sepolia (Circle testnet USDC)
|
|
30
|
+
84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* BasePaymentAdapter — On-chain settlement on Base (Coinbase L2).
|
|
34
|
+
*
|
|
35
|
+
* Supports both native ETH transfers and USDC (ERC-20) transfers.
|
|
36
|
+
* Uses viem for lightweight, type-safe EVM interactions.
|
|
37
|
+
*
|
|
38
|
+
* Networks:
|
|
39
|
+
* - Base Mainnet (eip155:8453) — production
|
|
40
|
+
* - Base Sepolia (eip155:84532) — testnet
|
|
41
|
+
*
|
|
42
|
+
* @see https://base.org
|
|
43
|
+
* @see https://x402.org
|
|
44
|
+
*/
|
|
45
|
+
export class BasePaymentAdapter {
|
|
46
|
+
chainName = 'Base';
|
|
47
|
+
caip2Id;
|
|
48
|
+
wallet;
|
|
49
|
+
publicClient;
|
|
50
|
+
account;
|
|
51
|
+
chain;
|
|
52
|
+
asset;
|
|
53
|
+
log;
|
|
54
|
+
constructor(options = {}) {
|
|
55
|
+
const key = options.privateKey ?? generatePrivateKey();
|
|
56
|
+
this.account = privateKeyToAccount(key);
|
|
57
|
+
this.chain = options.network === 'mainnet' ? base : baseSepolia;
|
|
58
|
+
this.caip2Id = `eip155:${this.chain.id}`;
|
|
59
|
+
this.asset = options.asset ?? 'ETH';
|
|
60
|
+
this.log = options.logger ?? noopLogger;
|
|
61
|
+
const transport = options.rpcUrl ? http(options.rpcUrl) : http();
|
|
62
|
+
this.wallet = createWalletClient({
|
|
63
|
+
account: this.account,
|
|
64
|
+
chain: this.chain,
|
|
65
|
+
transport,
|
|
66
|
+
});
|
|
67
|
+
this.publicClient = createPublicClient({
|
|
68
|
+
chain: this.chain,
|
|
69
|
+
transport,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getAddress() {
|
|
73
|
+
return this.account.address;
|
|
74
|
+
}
|
|
75
|
+
/** Get native ETH balance (formatted). */
|
|
76
|
+
async getBalance() {
|
|
77
|
+
const balance = await this.publicClient.getBalance({
|
|
78
|
+
address: this.account.address,
|
|
79
|
+
});
|
|
80
|
+
return formatEther(balance);
|
|
81
|
+
}
|
|
82
|
+
/** Get USDC balance (formatted, 6 decimals). */
|
|
83
|
+
async getUsdcBalance() {
|
|
84
|
+
const usdcAddress = USDC_ADDRESSES[this.chain.id];
|
|
85
|
+
if (!usdcAddress) {
|
|
86
|
+
return '0.00';
|
|
87
|
+
}
|
|
88
|
+
const balance = await this.publicClient.readContract({
|
|
89
|
+
address: usdcAddress,
|
|
90
|
+
abi: ERC20_TRANSFER_ABI,
|
|
91
|
+
functionName: 'balanceOf',
|
|
92
|
+
args: [this.account.address],
|
|
93
|
+
});
|
|
94
|
+
return formatUnits(balance, 6);
|
|
95
|
+
}
|
|
96
|
+
async pay(destination, amount, network) {
|
|
97
|
+
if (this.asset === 'USDC') {
|
|
98
|
+
return this.payUsdc(destination, amount);
|
|
99
|
+
}
|
|
100
|
+
return this.payEth(destination, amount);
|
|
101
|
+
}
|
|
102
|
+
/** Execute a native ETH transfer. */
|
|
103
|
+
async payEth(destination, amount) {
|
|
104
|
+
try {
|
|
105
|
+
const amountWei = BigInt(amount);
|
|
106
|
+
const ethAmount = formatEther(amountWei);
|
|
107
|
+
this.log(`[Base/ETH] 🚀 ${ethAmount} ETH → ${destination.slice(0, 8)}…${destination.slice(-6)}`);
|
|
108
|
+
// Check balance
|
|
109
|
+
const balance = await this.publicClient.getBalance({
|
|
110
|
+
address: this.account.address,
|
|
111
|
+
});
|
|
112
|
+
if (balance < amountWei) {
|
|
113
|
+
this.log(`[Base/ETH] ❌ Insufficient: ${formatEther(balance)} < ${ethAmount} ETH`);
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const hash = await this.wallet.sendTransaction({
|
|
117
|
+
account: this.account,
|
|
118
|
+
to: destination,
|
|
119
|
+
value: amountWei,
|
|
120
|
+
chain: this.chain,
|
|
121
|
+
});
|
|
122
|
+
this.log(`[Base/ETH] ✅ ${hash}`);
|
|
123
|
+
return hash;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
this.log(`[Base/ETH] ❌ ${error.message}`);
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Execute a USDC ERC-20 transfer. */
|
|
131
|
+
async payUsdc(destination, amount) {
|
|
132
|
+
try {
|
|
133
|
+
const usdcAddress = USDC_ADDRESSES[this.chain.id];
|
|
134
|
+
if (!usdcAddress) {
|
|
135
|
+
this.log(`[Base/USDC] ❌ No USDC contract for chain ${this.chain.id}`);
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
const amountAtomic = BigInt(amount);
|
|
139
|
+
const usdcFormatted = formatUnits(amountAtomic, 6);
|
|
140
|
+
this.log(`[Base/USDC] 🚀 ${usdcFormatted} USDC → ${destination.slice(0, 8)}…${destination.slice(-6)}`);
|
|
141
|
+
// Check USDC balance
|
|
142
|
+
const balance = await this.publicClient.readContract({
|
|
143
|
+
address: usdcAddress,
|
|
144
|
+
abi: ERC20_TRANSFER_ABI,
|
|
145
|
+
functionName: 'balanceOf',
|
|
146
|
+
args: [this.account.address],
|
|
147
|
+
});
|
|
148
|
+
if (balance < amountAtomic) {
|
|
149
|
+
this.log(`[Base/USDC] ❌ Insufficient: ${formatUnits(balance, 6)} < ${usdcFormatted} USDC`);
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
// Execute ERC-20 transfer
|
|
153
|
+
const hash = await this.wallet.writeContract({
|
|
154
|
+
address: usdcAddress,
|
|
155
|
+
abi: ERC20_TRANSFER_ABI,
|
|
156
|
+
functionName: 'transfer',
|
|
157
|
+
args: [destination, amountAtomic],
|
|
158
|
+
chain: this.chain,
|
|
159
|
+
account: this.account,
|
|
160
|
+
});
|
|
161
|
+
this.log(`[Base/USDC] ✅ ${hash}`);
|
|
162
|
+
return hash;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.log(`[Base/USDC] ❌ ${error.message}`);
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/adapters/base.ts"],"names":[],"mappings":"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"}
|