@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/LICENSE +21 -0
  3. package/README.md +393 -0
  4. package/dist/cjs/adapters/base.js +174 -0
  5. package/dist/cjs/adapters/base.js.map +1 -0
  6. package/dist/cjs/adapters/evm.js +263 -0
  7. package/dist/cjs/adapters/evm.js.map +1 -0
  8. package/dist/cjs/adapters/index.js +13 -0
  9. package/dist/cjs/adapters/index.js.map +1 -0
  10. package/dist/cjs/adapters/stellar.js +173 -0
  11. package/dist/cjs/adapters/stellar.js.map +1 -0
  12. package/dist/cjs/adapters/stripe.js +338 -0
  13. package/dist/cjs/adapters/stripe.js.map +1 -0
  14. package/dist/cjs/adapters/types.js +3 -0
  15. package/dist/cjs/adapters/types.js.map +1 -0
  16. package/dist/cjs/client.js +309 -0
  17. package/dist/cjs/client.js.map +1 -0
  18. package/dist/cjs/index.js +36 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/logger.js +7 -0
  21. package/dist/cjs/logger.js.map +1 -0
  22. package/dist/cjs/mpp.js +187 -0
  23. package/dist/cjs/mpp.js.map +1 -0
  24. package/dist/cjs/policy.js +71 -0
  25. package/dist/cjs/policy.js.map +1 -0
  26. package/dist/cjs/stellar.js +87 -0
  27. package/dist/cjs/stellar.js.map +1 -0
  28. package/dist/esm/adapters/base.js +170 -0
  29. package/dist/esm/adapters/base.js.map +1 -0
  30. package/dist/esm/adapters/evm.js +258 -0
  31. package/dist/esm/adapters/evm.js.map +1 -0
  32. package/dist/esm/adapters/index.js +5 -0
  33. package/dist/esm/adapters/index.js.map +1 -0
  34. package/dist/esm/adapters/stellar.js +136 -0
  35. package/dist/esm/adapters/stellar.js.map +1 -0
  36. package/dist/esm/adapters/stripe.js +334 -0
  37. package/dist/esm/adapters/stripe.js.map +1 -0
  38. package/dist/esm/adapters/types.js +2 -0
  39. package/dist/esm/adapters/types.js.map +1 -0
  40. package/dist/esm/client.js +302 -0
  41. package/dist/esm/client.js.map +1 -0
  42. package/dist/esm/index.js +16 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/logger.js +3 -0
  45. package/dist/esm/logger.js.map +1 -0
  46. package/dist/esm/mpp.js +175 -0
  47. package/dist/esm/mpp.js.map +1 -0
  48. package/dist/esm/policy.js +67 -0
  49. package/dist/esm/policy.js.map +1 -0
  50. package/dist/esm/stellar.js +50 -0
  51. package/dist/esm/stellar.js.map +1 -0
  52. package/dist/types/adapters/base.d.ts +53 -0
  53. package/dist/types/adapters/base.d.ts.map +1 -0
  54. package/dist/types/adapters/evm.d.ts +81 -0
  55. package/dist/types/adapters/evm.d.ts.map +1 -0
  56. package/dist/types/adapters/index.d.ts +6 -0
  57. package/dist/types/adapters/index.d.ts.map +1 -0
  58. package/dist/types/adapters/stellar.d.ts +67 -0
  59. package/dist/types/adapters/stellar.d.ts.map +1 -0
  60. package/dist/types/adapters/stripe.d.ts +206 -0
  61. package/dist/types/adapters/stripe.d.ts.map +1 -0
  62. package/dist/types/adapters/types.d.ts +35 -0
  63. package/dist/types/adapters/types.d.ts.map +1 -0
  64. package/dist/types/client.d.ts +89 -0
  65. package/dist/types/client.d.ts.map +1 -0
  66. package/dist/types/index.d.ts +15 -0
  67. package/dist/types/index.d.ts.map +1 -0
  68. package/dist/types/logger.d.ts +10 -0
  69. package/dist/types/logger.d.ts.map +1 -0
  70. package/dist/types/mpp.d.ts +153 -0
  71. package/dist/types/mpp.d.ts.map +1 -0
  72. package/dist/types/policy.d.ts +40 -0
  73. package/dist/types/policy.d.ts.map +1 -0
  74. package/dist/types/stellar.d.ts +27 -0
  75. package/dist/types/stellar.d.ts.map +1 -0
  76. 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"}
@@ -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":";AAAA;;;;;;;;;;;;GAYG;;AAgGH,0CAGC;AAKD,0CAMC;AAiBD,8CA2BC;AAMD,gDAEC;AAKD,wDAGC;AAYD,gDAWC;AAKD,4DAMC;AAOD,0CAOC;AAUD,wCAmBC;AAMD,oDAUC;AA7KD,uEAAuE;AAEvE;;;GAGG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,0BAA0B;IAC1B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpD,cAAc;IACd,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,uEAAuE;AAEvE;;;;;;;;;;;;GAYG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,qCAAqC;IACrC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEpC,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;IACzE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAG;QACd,KAAK,EAAE,MAAM,CAAC,KAAM;QACpB,MAAM,EAAE,MAAM,CAAC,MAAoB;QACnC,MAAM,EAAE,MAAM,CAAC,MAAoB;QACnC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAiB;IAClD,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,SAAuB;IAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;AAC9C,CAAC;AAED,uEAAuE;AAEvE;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,SAAuB,EACvB,MAAc,EACd,OAAiC;IAEjC,MAAM,UAAU,GAAkB;QAChC,SAAS;QACT,MAAM;QACN,OAAO;KACR,CAAC;IACF,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CACtC,SAAuB,EACvB,MAAc,EACd,OAAiC;IAEjC,OAAO,WAAW,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,uEAAuE;AAEvE;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,OAAsD,EACtD,IAAc;IAEd,6DAA6D;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,aAAa,IAAK,IAAY,IAAI,SAAS,IAAK,IAAY,CAAC,EAAE,CAAC;QACvG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,OAAsD;IAEtD,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC9C,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5B,CAAC;AAED,uEAAuE;AAEvE;;;GAGG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,mDAAmD;IACnD,MAAM,KAAK,GAAG,4BAA4B,CAAC;IAC3C,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;QAC7B,wCAAwC;QACxC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -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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"}