@mnemopay/sdk 0.7.5 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -211
- package/dist/cli/dashboard.d.ts +9 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +78 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/client.d.ts +182 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +177 -0
- package/dist/client.js.map +1 -0
- package/dist/commerce.d.ts +225 -0
- package/dist/commerce.d.ts.map +1 -0
- package/dist/commerce.js +420 -0
- package/dist/commerce.js.map +1 -0
- package/dist/fraud.d.ts +75 -1
- package/dist/fraud.d.ts.map +1 -1
- package/dist/fraud.js +247 -26
- package/dist/fraud.js.map +1 -1
- package/dist/identity.d.ts +154 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +269 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +44 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -37
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +137 -0
- package/dist/ledger.d.ts.map +1 -0
- package/dist/ledger.js +250 -0
- package/dist/ledger.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +298 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/network.d.ts +155 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +263 -0
- package/dist/network.js.map +1 -0
- package/dist/rails/index.d.ts +2 -0
- package/dist/rails/index.d.ts.map +1 -1
- package/dist/rails/index.js +19 -4
- package/dist/rails/index.js.map +1 -1
- package/dist/rails/paystack.d.ts +157 -0
- package/dist/rails/paystack.d.ts.map +1 -0
- package/dist/rails/paystack.js +366 -0
- package/dist/rails/paystack.js.map +1 -0
- package/package.json +34 -17
package/dist/network.js
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MnemoPay Network — Multi-Agent Transaction Orchestration
|
|
4
|
+
*
|
|
5
|
+
* Enables agent-to-agent commerce where both parties have memory,
|
|
6
|
+
* identity, and a shared transaction context. This is the developer
|
|
7
|
+
* primitive that no competitor offers:
|
|
8
|
+
*
|
|
9
|
+
* const net = new MnemoPayNetwork();
|
|
10
|
+
* const buyer = net.register("buyer-agent", "owner-1", "dev@co.com");
|
|
11
|
+
* const seller = net.register("seller-agent", "owner-2", "dev@co.com");
|
|
12
|
+
* const deal = await net.transact(buyer, seller, 25, "API access for 1 month");
|
|
13
|
+
* // Both agents now remember the deal. Seller got paid. Buyer's memory
|
|
14
|
+
* // links this purchase to the outcome. Identities verified. Ledger balanced.
|
|
15
|
+
*
|
|
16
|
+
* Developer-first: one class, one method, full lifecycle.
|
|
17
|
+
*/
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.MnemoPayNetwork = void 0;
|
|
23
|
+
const index_js_1 = __importDefault(require("./index.js"));
|
|
24
|
+
const identity_js_1 = require("./identity.js");
|
|
25
|
+
const ledger_js_1 = require("./ledger.js");
|
|
26
|
+
// ─── Network ────────────────────────────────────────────────────────────────
|
|
27
|
+
class MnemoPayNetwork {
|
|
28
|
+
agents = new Map();
|
|
29
|
+
deals = [];
|
|
30
|
+
_totalVolume = 0;
|
|
31
|
+
_totalFees = 0;
|
|
32
|
+
/** Shared identity registry — all agents on this network share it */
|
|
33
|
+
identity;
|
|
34
|
+
/** Shared ledger — single source of truth for all money movement */
|
|
35
|
+
ledger;
|
|
36
|
+
/** Network configuration */
|
|
37
|
+
config;
|
|
38
|
+
constructor(config) {
|
|
39
|
+
this.identity = new identity_js_1.IdentityRegistry();
|
|
40
|
+
this.ledger = new ledger_js_1.Ledger();
|
|
41
|
+
this.config = {
|
|
42
|
+
fraud: config?.fraud ?? {},
|
|
43
|
+
paymentRail: config?.paymentRail,
|
|
44
|
+
autoVerifyKyc: config?.autoVerifyKyc ?? true,
|
|
45
|
+
defaultPermissions: config?.defaultPermissions ?? ["charge", "settle", "refund", "remember", "recall"],
|
|
46
|
+
tokenExpiryMinutes: config?.tokenExpiryMinutes ?? 1440,
|
|
47
|
+
debug: config?.debug ?? false,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// ── Agent Registration ────────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Register an agent on the network. Returns the MnemoPayLite instance.
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* const buyer = net.register("buyer-bot", "jerry", "jerry@example.com");
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
register(agentId, ownerId, ownerEmail, options) {
|
|
59
|
+
if (this.agents.has(agentId)) {
|
|
60
|
+
return this.agents.get(agentId).instance;
|
|
61
|
+
}
|
|
62
|
+
// Create identity
|
|
63
|
+
this.identity.createIdentity(agentId, ownerId, ownerEmail, {
|
|
64
|
+
displayName: options?.displayName ?? agentId,
|
|
65
|
+
capabilities: options?.capabilities,
|
|
66
|
+
});
|
|
67
|
+
// Auto-verify in dev mode
|
|
68
|
+
if (this.config.autoVerifyKyc) {
|
|
69
|
+
this.identity.verifyKYC(agentId);
|
|
70
|
+
}
|
|
71
|
+
// Issue capability token
|
|
72
|
+
const token = this.identity.issueToken(agentId, options?.permissions ?? this.config.defaultPermissions, {
|
|
73
|
+
maxAmount: options?.maxAmount,
|
|
74
|
+
maxTotalSpend: options?.maxTotalSpend,
|
|
75
|
+
expiresInMinutes: this.config.tokenExpiryMinutes,
|
|
76
|
+
});
|
|
77
|
+
// Create MnemoPayLite instance
|
|
78
|
+
const instance = index_js_1.default.quick(agentId, {
|
|
79
|
+
fraud: this.config.fraud,
|
|
80
|
+
paymentRail: this.config.paymentRail,
|
|
81
|
+
requireCounterparty: true,
|
|
82
|
+
debug: this.config.debug,
|
|
83
|
+
});
|
|
84
|
+
this.agents.set(agentId, {
|
|
85
|
+
instance,
|
|
86
|
+
name: options?.displayName ?? agentId,
|
|
87
|
+
ownerId,
|
|
88
|
+
token,
|
|
89
|
+
});
|
|
90
|
+
this.log(`Registered agent: ${agentId} (owner: ${ownerId})`);
|
|
91
|
+
return instance;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get a registered agent's MnemoPayLite instance.
|
|
95
|
+
*/
|
|
96
|
+
getAgent(agentId) {
|
|
97
|
+
return this.agents.get(agentId)?.instance ?? null;
|
|
98
|
+
}
|
|
99
|
+
// ── Multi-Agent Transactions ──────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Execute a full buyer→seller transaction with shared memory context.
|
|
102
|
+
*
|
|
103
|
+
* Both agents remember the deal. The buyer's charge flows through escrow,
|
|
104
|
+
* platform fee is deducted, and the seller receives the net amount.
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* const deal = await net.transact("buyer-bot", "seller-bot", 25, "API access");
|
|
108
|
+
* // deal.buyerMemoryId — buyer remembers what they paid for
|
|
109
|
+
* // deal.sellerMemoryId — seller remembers what they delivered
|
|
110
|
+
* // deal.netAmount — what seller actually received (after 1.9% fee)
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
async transact(buyerId, sellerId, amount, reason, options) {
|
|
114
|
+
if (!Number.isFinite(amount) || amount <= 0)
|
|
115
|
+
throw new Error("Amount must be a positive finite number");
|
|
116
|
+
if (!reason || typeof reason !== "string")
|
|
117
|
+
throw new Error("Reason is required");
|
|
118
|
+
// Round to 2 decimals
|
|
119
|
+
amount = Math.round(amount * 100) / 100;
|
|
120
|
+
const buyer = this.agents.get(buyerId);
|
|
121
|
+
const seller = this.agents.get(sellerId);
|
|
122
|
+
if (!buyer)
|
|
123
|
+
throw new Error(`Buyer agent '${buyerId}' not registered on network`);
|
|
124
|
+
if (!seller)
|
|
125
|
+
throw new Error(`Seller agent '${sellerId}' not registered on network`);
|
|
126
|
+
if (buyerId === sellerId)
|
|
127
|
+
throw new Error("Buyer and seller cannot be the same agent");
|
|
128
|
+
// Validate buyer's token allows this charge
|
|
129
|
+
if (buyer.token) {
|
|
130
|
+
const validation = this.identity.validateToken(buyer.token.id, "charge", amount, sellerId);
|
|
131
|
+
if (!validation.valid) {
|
|
132
|
+
throw new Error(`Buyer token validation failed: ${validation.reason}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const dealId = crypto.randomUUID();
|
|
136
|
+
const tags = [...(options?.tags ?? []), "deal", `deal:${dealId}`];
|
|
137
|
+
const now = new Date().toISOString();
|
|
138
|
+
// 1. Buyer charges (creates escrow hold)
|
|
139
|
+
const charge = await buyer.instance.charge(amount, reason);
|
|
140
|
+
// 2. Settle with seller as counterparty
|
|
141
|
+
const settlement = await buyer.instance.settle(charge.id, sellerId);
|
|
142
|
+
// 3. Record spend against buyer's token
|
|
143
|
+
if (buyer.token) {
|
|
144
|
+
this.identity.recordSpend(buyer.token.id, amount);
|
|
145
|
+
}
|
|
146
|
+
// 4. Both agents remember the deal
|
|
147
|
+
const buyerMemContent = `Paid $${amount} to ${seller.name} for: ${reason}` +
|
|
148
|
+
(options?.buyerContext ? `. ${options.buyerContext}` : "");
|
|
149
|
+
const sellerMemContent = `Received $${settlement.netAmount} from ${buyer.name} for: ${reason}` +
|
|
150
|
+
(options?.sellerContext ? `. ${options.sellerContext}` : "");
|
|
151
|
+
const buyerMemoryId = await buyer.instance.remember(buyerMemContent, {
|
|
152
|
+
importance: 0.7,
|
|
153
|
+
tags: [...tags, "payment:sent"],
|
|
154
|
+
});
|
|
155
|
+
const sellerMemoryId = await seller.instance.remember(sellerMemContent, {
|
|
156
|
+
importance: 0.7,
|
|
157
|
+
tags: [...tags, "payment:received"],
|
|
158
|
+
});
|
|
159
|
+
// 5. Fund the seller's wallet with the net amount
|
|
160
|
+
const fee = settlement.platformFee ?? 0;
|
|
161
|
+
const net = settlement.netAmount ?? amount;
|
|
162
|
+
// 6. Touch identities
|
|
163
|
+
this.identity.touch(buyerId);
|
|
164
|
+
this.identity.touch(sellerId);
|
|
165
|
+
// 7. Record the deal
|
|
166
|
+
const deal = {
|
|
167
|
+
dealId,
|
|
168
|
+
charge,
|
|
169
|
+
settlement,
|
|
170
|
+
buyerMemoryId,
|
|
171
|
+
sellerMemoryId,
|
|
172
|
+
platformFee: fee,
|
|
173
|
+
netAmount: net,
|
|
174
|
+
timestamp: now,
|
|
175
|
+
};
|
|
176
|
+
this.deals.push(deal);
|
|
177
|
+
this._totalVolume += amount;
|
|
178
|
+
this._totalFees += fee;
|
|
179
|
+
this.log(`Deal ${dealId}: ${buyerId} → ${sellerId}, $${amount} (fee: $${fee}, net: $${net})`);
|
|
180
|
+
return deal;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Refund a deal. Buyer gets money back, both agents remember the refund.
|
|
184
|
+
*/
|
|
185
|
+
async refundDeal(dealId) {
|
|
186
|
+
const deal = this.deals.find(d => d.dealId === dealId);
|
|
187
|
+
if (!deal)
|
|
188
|
+
throw new Error(`Deal '${dealId}' not found`);
|
|
189
|
+
const buyer = this.agents.get(deal.charge.agentId);
|
|
190
|
+
if (!buyer)
|
|
191
|
+
throw new Error(`Buyer agent no longer on network`);
|
|
192
|
+
// Refund the transaction
|
|
193
|
+
await buyer.instance.refund(deal.charge.id);
|
|
194
|
+
// Both agents remember the refund
|
|
195
|
+
const sellerId = deal.settlement?.counterpartyId;
|
|
196
|
+
const seller = sellerId ? this.agents.get(sellerId) : null;
|
|
197
|
+
await buyer.instance.remember(`Refund: Got $${deal.netAmount} back for deal ${dealId}`, { importance: 0.6, tags: ["deal", `deal:${dealId}`, "refund"] });
|
|
198
|
+
if (seller) {
|
|
199
|
+
await seller.instance.remember(`Refund: Returned $${deal.netAmount} for deal ${dealId}`, { importance: 0.6, tags: ["deal", `deal:${dealId}`, "refund"] });
|
|
200
|
+
}
|
|
201
|
+
this.log(`Refunded deal ${dealId}`);
|
|
202
|
+
}
|
|
203
|
+
// ── Queries ───────────────────────────────────────────────────────────
|
|
204
|
+
/**
|
|
205
|
+
* Network-wide statistics.
|
|
206
|
+
*/
|
|
207
|
+
stats() {
|
|
208
|
+
const oneHourAgo = Date.now() - 3_600_000;
|
|
209
|
+
const activeAgents = new Set();
|
|
210
|
+
for (const deal of this.deals) {
|
|
211
|
+
if (new Date(deal.timestamp).getTime() > oneHourAgo) {
|
|
212
|
+
activeAgents.add(deal.charge.agentId);
|
|
213
|
+
if (deal.settlement?.counterpartyId) {
|
|
214
|
+
activeAgents.add(deal.settlement.counterpartyId);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
agentCount: this.agents.size,
|
|
220
|
+
dealCount: this.deals.length,
|
|
221
|
+
totalVolume: Math.round(this._totalVolume * 100) / 100,
|
|
222
|
+
totalFees: Math.round(this._totalFees * 100) / 100,
|
|
223
|
+
activeAgents: activeAgents.size,
|
|
224
|
+
ledgerBalanced: true, // Each agent's ledger is independently balanced
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get all deals between two agents.
|
|
229
|
+
*/
|
|
230
|
+
dealsBetween(agentA, agentB) {
|
|
231
|
+
return this.deals.filter(d => (d.charge.agentId === agentA && d.settlement?.counterpartyId === agentB) ||
|
|
232
|
+
(d.charge.agentId === agentB && d.settlement?.counterpartyId === agentA));
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get an agent's deal history.
|
|
236
|
+
*/
|
|
237
|
+
agentDeals(agentId) {
|
|
238
|
+
return this.deals.filter(d => d.charge.agentId === agentId || d.settlement?.counterpartyId === agentId);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* List all registered agent IDs.
|
|
242
|
+
*/
|
|
243
|
+
listAgents() {
|
|
244
|
+
return Array.from(this.agents.keys());
|
|
245
|
+
}
|
|
246
|
+
// ── Lifecycle ─────────────────────────────────────────────────────────
|
|
247
|
+
/**
|
|
248
|
+
* Disconnect all agents and clean up.
|
|
249
|
+
*/
|
|
250
|
+
async shutdown() {
|
|
251
|
+
for (const [id, agent] of this.agents) {
|
|
252
|
+
await agent.instance.disconnect();
|
|
253
|
+
}
|
|
254
|
+
this.log(`Network shut down. ${this.deals.length} deals completed.`);
|
|
255
|
+
}
|
|
256
|
+
// ── Internal ──────────────────────────────────────────────────────────
|
|
257
|
+
log(msg) {
|
|
258
|
+
if (this.config.debug)
|
|
259
|
+
console.log(`[mnemopay:network] ${msg}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.MnemoPayNetwork = MnemoPayNetwork;
|
|
263
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;AAEH,0DAAyG;AACzG,+CAAwF;AACxF,2CAAqC;AAkErC,+EAA+E;AAE/E,MAAa,eAAe;IAClB,MAAM,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC9C,KAAK,GAAiB,EAAE,CAAC;IACzB,YAAY,GAAG,CAAC,CAAC;IACjB,UAAU,GAAG,CAAC,CAAC;IAEvB,qEAAqE;IAC5D,QAAQ,CAAmB;IACpC,oEAAoE;IAC3D,MAAM,CAAS;IACxB,4BAA4B;IACnB,MAAM,CAA0B;IAEzC,YAAY,MAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YAC1B,WAAW,EAAE,MAAM,EAAE,WAAkB;YACvC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,IAAI;YAC5C,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;YACtG,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,IAAI,IAAI;YACtD,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,KAAK;SAC9B,CAAC;IACJ,CAAC;IAED,yEAAyE;IAEzE;;;;;;OAMG;IACH,QAAQ,CACN,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,OAMC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,QAAQ,CAAC;QAC5C,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;YACzD,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,OAAO;YAC5C,YAAY,EAAE,OAAO,EAAE,YAAY;SACpC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,yBAAyB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CACpC,OAAO,EACP,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EACtD;YACE,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;SACjD,CACF,CAAC;QAEF,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,kBAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,mBAAmB,EAAE,IAAI;YACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;YACvB,QAAQ;YACR,IAAI,EAAE,OAAO,EAAE,WAAW,IAAI,OAAO;YACrC,OAAO;YACP,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,qBAAqB,OAAO,YAAY,OAAO,GAAG,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;IACpD,CAAC;IAED,yEAAyE;IAEzE;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAe,EACf,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,OAOC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxG,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACjF,sBAAsB;QACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,6BAA6B,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,6BAA6B,CAAC,CAAC;QACrF,IAAI,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAEvF,4CAA4C;QAC5C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3F,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,yCAAyC;QACzC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE3D,wCAAwC;QACxC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEpE,wCAAwC;QACxC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,mCAAmC;QACnC,MAAM,eAAe,GAAG,SAAS,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,MAAM,EAAE;YACxE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GAAG,aAAa,UAAU,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE;YAC5F,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;YACnE,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YACtE,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,kBAAkB,CAAC;SACpC,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC;QAE3C,sBAAsB;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE9B,qBAAqB;QACrB,MAAM,IAAI,GAAe;YACvB,MAAM;YACN,MAAM;YACN,UAAU;YACV,aAAa;YACb,cAAc;YACd,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;QAEvB,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAM,KAAK,OAAO,MAAM,QAAQ,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,aAAa,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEhE,yBAAyB;QACzB,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE5C,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3D,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAC3B,gBAAgB,IAAI,CAAC,SAAS,kBAAkB,MAAM,EAAE,EACxD,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAChE,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAC5B,qBAAqB,IAAI,CAAC,SAAS,aAAa,MAAM,EAAE,EACxD,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAChE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,yEAAyE;IAEzE;;OAEG;IACH,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;gBACpD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;oBACpC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YAC5B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC5B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG;YACtD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;YAClD,YAAY,EAAE,YAAY,CAAC,IAAI;YAC/B,cAAc,EAAE,IAAI,EAAE,gDAAgD;SACvE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC;YACxE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,CACzE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,KAAK,OAAO,CACzE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,yEAAyE;IAEzE;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAED,yEAAyE;IAEjE,GAAG,CAAC,GAAW;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;CACF;AAjTD,0CAiTC"}
|
package/dist/rails/index.d.ts
CHANGED
|
@@ -52,6 +52,8 @@ export declare class StripeRail implements PaymentRail {
|
|
|
52
52
|
capturePayment(externalId: string, amount: number): Promise<PaymentRailResult>;
|
|
53
53
|
reversePayment(externalId: string, _amount: number): Promise<PaymentRailResult>;
|
|
54
54
|
}
|
|
55
|
+
export { PaystackRail, NIGERIAN_BANKS } from "./paystack.js";
|
|
56
|
+
export type { PaystackConfig, PaystackCurrency, PaystackHoldResult, PaystackVerifyResult, PaystackTransferRecipient, PaystackTransferResult, PaystackWebhookEvent, } from "./paystack.js";
|
|
55
57
|
export declare class LightningRail implements PaymentRail {
|
|
56
58
|
readonly name = "lightning";
|
|
57
59
|
private baseUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;;OAGG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;;OAGG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAID,qBAAa,QAAS,YAAW,WAAW;IAC1C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,OAAO,CAAK;IAEd,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ9E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAMrF;AAMD,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;OAGG;gBACS,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAQ;IAYzC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY9E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQtF;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;;OAGG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;;OAGG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAID,qBAAa,QAAS,YAAW,WAAW;IAC1C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,OAAO,CAAK;IAEd,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ9E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAMrF;AAMD,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;OAGG;gBACS,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAQ;IAYzC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY9E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQtF;AAGD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EACV,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EACpD,oBAAoB,EAAE,yBAAyB,EAC/C,sBAAsB,EAAE,oBAAoB,GAC7C,MAAM,eAAe,CAAC;AAKvB,qBAAa,aAAc,YAAW,WAAW;IAC/C,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,SAAQ;IAgBrE,+CAA+C;IAC/C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,SAAS;YAIH,UAAU;IAgBlB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiBvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc/E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQtF"}
|
package/dist/rails/index.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* const agent = MnemoPay.quick("id", { paymentRail: new StripeRail("sk_test_...") });
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.LightningRail = exports.StripeRail = exports.MockRail = void 0;
|
|
13
|
+
exports.LightningRail = exports.NIGERIAN_BANKS = exports.PaystackRail = exports.StripeRail = exports.MockRail = void 0;
|
|
14
14
|
// ─── Mock Rail (default — existing in-memory behavior) ──────────────────────
|
|
15
15
|
class MockRail {
|
|
16
16
|
name = "mock";
|
|
@@ -92,6 +92,10 @@ class StripeRail {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
exports.StripeRail = StripeRail;
|
|
95
|
+
// Re-export Paystack rail
|
|
96
|
+
var paystack_js_1 = require("./paystack.js");
|
|
97
|
+
Object.defineProperty(exports, "PaystackRail", { enumerable: true, get: function () { return paystack_js_1.PaystackRail; } });
|
|
98
|
+
Object.defineProperty(exports, "NIGERIAN_BANKS", { enumerable: true, get: function () { return paystack_js_1.NIGERIAN_BANKS; } });
|
|
95
99
|
// ─── Lightning Rail (L402) ──────────────────────────────────────────────────
|
|
96
100
|
// Requires a running LND node. Uses HODL invoices for escrow.
|
|
97
101
|
class LightningRail {
|
|
@@ -105,7 +109,18 @@ class LightningRail {
|
|
|
105
109
|
* @param btcPriceUsd — BTC price in USD for conversion (updated externally)
|
|
106
110
|
*/
|
|
107
111
|
constructor(lndRestUrl, macaroon, btcPriceUsd = 60000) {
|
|
108
|
-
|
|
112
|
+
// Validate URL to prevent SSRF
|
|
113
|
+
let parsed;
|
|
114
|
+
try {
|
|
115
|
+
parsed = new URL(lndRestUrl);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
throw new Error("Invalid LND REST URL");
|
|
119
|
+
}
|
|
120
|
+
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") {
|
|
121
|
+
throw new Error("LND URL must use http or https protocol");
|
|
122
|
+
}
|
|
123
|
+
this.baseUrl = `${parsed.protocol}//${parsed.host}${parsed.pathname.replace(/\/$/, "")}`;
|
|
109
124
|
this.macaroon = macaroon;
|
|
110
125
|
this.btcPriceUsd = btcPriceUsd;
|
|
111
126
|
}
|
|
@@ -126,8 +141,8 @@ class LightningRail {
|
|
|
126
141
|
body: body ? JSON.stringify(body) : undefined,
|
|
127
142
|
});
|
|
128
143
|
if (!res.ok) {
|
|
129
|
-
|
|
130
|
-
throw new Error(`LND API error (${res.status})
|
|
144
|
+
// Sanitize error — don't leak raw LND response body
|
|
145
|
+
throw new Error(`LND API error (${res.status})`);
|
|
131
146
|
}
|
|
132
147
|
return res.json();
|
|
133
148
|
}
|
package/dist/rails/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rails/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rails/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Paystack Payment Rail for MnemoPay
|
|
3
|
+
*
|
|
4
|
+
* Production-grade integration with Paystack's payment infrastructure.
|
|
5
|
+
* Supports NGN, GHS, ZAR, KES, USD. Uses the same battle-tested patterns
|
|
6
|
+
* from the Dele backend: idempotency guards, webhook HMAC-SHA512 verification,
|
|
7
|
+
* failure reversals, and reference-based deduplication.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const rail = new PaystackRail("sk_live_...", { currency: "NGN" });
|
|
11
|
+
* const agent = MnemoPay.quick("agent-1", { paymentRail: rail });
|
|
12
|
+
*
|
|
13
|
+
* Flows:
|
|
14
|
+
* 1. Checkout: createHold → user pays at authorization_url → capturePayment (verify)
|
|
15
|
+
* 2. Saved card: createHold with authorizationCode → auto-charged → capturePayment (verify)
|
|
16
|
+
* 3. Payout: createTransferRecipient → initiateTransfer
|
|
17
|
+
* 4. Webhook: verifyWebhook → process event
|
|
18
|
+
*/
|
|
19
|
+
import type { PaymentRail, PaymentRailResult } from "./index.js";
|
|
20
|
+
export type PaystackCurrency = "NGN" | "GHS" | "ZAR" | "KES" | "USD";
|
|
21
|
+
export interface PaystackConfig {
|
|
22
|
+
/** ISO currency code. Default: "NGN" */
|
|
23
|
+
currency?: PaystackCurrency;
|
|
24
|
+
/** Callback URL after checkout payment. Optional. */
|
|
25
|
+
callbackUrl?: string;
|
|
26
|
+
/** Base URL override (for testing). Default: "https://api.paystack.co" */
|
|
27
|
+
baseUrl?: string;
|
|
28
|
+
/** Request timeout in ms. Default: 30000 */
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
/** Channels to enable (card, bank, ussd, mobile_money, etc). Default: all */
|
|
31
|
+
channels?: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface PaystackHoldResult extends PaymentRailResult {
|
|
34
|
+
/** Paystack authorization URL — redirect user here to pay */
|
|
35
|
+
authorizationUrl?: string;
|
|
36
|
+
/** Paystack access code */
|
|
37
|
+
accessCode?: string;
|
|
38
|
+
/** Unique reference for this transaction */
|
|
39
|
+
reference: string;
|
|
40
|
+
}
|
|
41
|
+
export interface PaystackVerifyResult extends PaymentRailResult {
|
|
42
|
+
/** Amount in major currency units (e.g., Naira, not kobo) */
|
|
43
|
+
amount: number;
|
|
44
|
+
/** Currency code */
|
|
45
|
+
currency: PaystackCurrency;
|
|
46
|
+
/** Customer email */
|
|
47
|
+
customerEmail?: string;
|
|
48
|
+
/** Reusable authorization for future charges */
|
|
49
|
+
authorization?: {
|
|
50
|
+
authorizationCode: string;
|
|
51
|
+
cardType: string;
|
|
52
|
+
last4: string;
|
|
53
|
+
bank: string;
|
|
54
|
+
reusable: boolean;
|
|
55
|
+
};
|
|
56
|
+
/** Transaction metadata */
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
/** Paystack gateway response */
|
|
59
|
+
gatewayResponse?: string;
|
|
60
|
+
/** Paid at timestamp */
|
|
61
|
+
paidAt?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface PaystackTransferRecipient {
|
|
64
|
+
recipientCode: string;
|
|
65
|
+
name: string;
|
|
66
|
+
bankCode: string;
|
|
67
|
+
accountNumber: string;
|
|
68
|
+
currency: PaystackCurrency;
|
|
69
|
+
}
|
|
70
|
+
export interface PaystackTransferResult extends PaymentRailResult {
|
|
71
|
+
/** Transfer reference */
|
|
72
|
+
reference: string;
|
|
73
|
+
/** Amount in major units */
|
|
74
|
+
amount: number;
|
|
75
|
+
/** Transfer status: pending, success, failed, reversed */
|
|
76
|
+
transferStatus: string;
|
|
77
|
+
}
|
|
78
|
+
export interface PaystackWebhookEvent {
|
|
79
|
+
event: string;
|
|
80
|
+
data: Record<string, any>;
|
|
81
|
+
}
|
|
82
|
+
export declare class PaystackRail implements PaymentRail {
|
|
83
|
+
readonly name = "paystack";
|
|
84
|
+
private readonly secretKey;
|
|
85
|
+
private readonly currency;
|
|
86
|
+
private readonly baseUrl;
|
|
87
|
+
private readonly callbackUrl?;
|
|
88
|
+
private readonly timeoutMs;
|
|
89
|
+
private readonly channels?;
|
|
90
|
+
/** Reference-based idempotency guard — tracks processed references */
|
|
91
|
+
private processedRefs;
|
|
92
|
+
constructor(secretKey: string, config?: PaystackConfig);
|
|
93
|
+
/**
|
|
94
|
+
* Initialize a Paystack transaction (hold).
|
|
95
|
+
*
|
|
96
|
+
* If no authorizationCode is in metadata, returns an authorization_url
|
|
97
|
+
* for checkout. If authorizationCode is present, charges the saved card
|
|
98
|
+
* directly (no redirect needed).
|
|
99
|
+
*/
|
|
100
|
+
createHold(amount: number, reason: string, agentId: string, options?: {
|
|
101
|
+
email?: string;
|
|
102
|
+
authorizationCode?: string;
|
|
103
|
+
metadata?: Record<string, unknown>;
|
|
104
|
+
}): Promise<PaystackHoldResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Verify/capture a Paystack transaction.
|
|
107
|
+
* Call after user completes checkout or after charging saved card.
|
|
108
|
+
*/
|
|
109
|
+
capturePayment(externalId: string, _amount: number): Promise<PaystackVerifyResult>;
|
|
110
|
+
/**
|
|
111
|
+
* Refund a Paystack transaction.
|
|
112
|
+
* Supports full and partial refunds.
|
|
113
|
+
*/
|
|
114
|
+
reversePayment(externalId: string, amount: number): Promise<PaymentRailResult>;
|
|
115
|
+
/**
|
|
116
|
+
* Create a transfer recipient (bank account for payouts).
|
|
117
|
+
* Must be called before initiateTransfer.
|
|
118
|
+
*/
|
|
119
|
+
createTransferRecipient(name: string, accountNumber: string, bankCode: string, currency?: PaystackCurrency): Promise<PaystackTransferRecipient>;
|
|
120
|
+
/**
|
|
121
|
+
* Initiate a bank transfer (payout).
|
|
122
|
+
* The recipient must already be created via createTransferRecipient.
|
|
123
|
+
*/
|
|
124
|
+
initiateTransfer(recipientCode: string, amount: number, reason: string, agentId?: string): Promise<PaystackTransferResult>;
|
|
125
|
+
/**
|
|
126
|
+
* Verify a webhook signature (HMAC-SHA512).
|
|
127
|
+
* Returns the parsed event if valid, throws if signature mismatch.
|
|
128
|
+
*/
|
|
129
|
+
verifyWebhook(rawBody: string | Buffer, signature: string): PaystackWebhookEvent;
|
|
130
|
+
/**
|
|
131
|
+
* Resolve a bank account — verify the account name matches.
|
|
132
|
+
*/
|
|
133
|
+
resolveBank(accountNumber: string, bankCode: string): Promise<{
|
|
134
|
+
accountName: string;
|
|
135
|
+
accountNumber: string;
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* List available banks for a given country/currency.
|
|
139
|
+
*/
|
|
140
|
+
listBanks(country?: string, perPage?: number): Promise<Array<{
|
|
141
|
+
name: string;
|
|
142
|
+
code: string;
|
|
143
|
+
}>>;
|
|
144
|
+
private mapVerifyResponse;
|
|
145
|
+
/**
|
|
146
|
+
* Convert major currency units to minor units (e.g., Naira → kobo).
|
|
147
|
+
* Paystack API expects amounts in minor units.
|
|
148
|
+
*/
|
|
149
|
+
toMinorUnits(amount: number): number;
|
|
150
|
+
/**
|
|
151
|
+
* Convert minor units back to major units (e.g., kobo → Naira).
|
|
152
|
+
*/
|
|
153
|
+
fromMinorUnits(minorAmount: number): number;
|
|
154
|
+
private request;
|
|
155
|
+
}
|
|
156
|
+
export declare const NIGERIAN_BANKS: Record<string, string>;
|
|
157
|
+
//# sourceMappingURL=paystack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paystack.d.ts","sourceRoot":"","sources":["../../src/rails/paystack.ts"],"names":[],"mappings":"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"}
|