@toon-protocol/connector 3.40.0 → 3.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/btp/inbound-claim-validator.d.ts +1 -0
  2. package/dist/btp/inbound-claim-validator.d.ts.map +1 -1
  3. package/dist/btp/inbound-claim-validator.js +42 -0
  4. package/dist/btp/inbound-claim-validator.js.map +1 -1
  5. package/dist/core/connector-node.d.ts.map +1 -1
  6. package/dist/core/connector-node.js +8 -1
  7. package/dist/core/connector-node.js.map +1 -1
  8. package/dist/discovery/self-announce-builder.d.ts +1 -0
  9. package/dist/discovery/self-announce-builder.d.ts.map +1 -1
  10. package/dist/discovery/self-announce-builder.js +29 -3
  11. package/dist/discovery/self-announce-builder.js.map +1 -1
  12. package/dist/http/admin-api-inventory.d.ts.map +1 -1
  13. package/dist/http/admin-api-inventory.js +18 -0
  14. package/dist/http/admin-api-inventory.js.map +1 -1
  15. package/dist/http/admin-api.d.ts.map +1 -1
  16. package/dist/http/admin-api.js +5 -0
  17. package/dist/http/admin-api.js.map +1 -1
  18. package/dist/http/admin-server.d.ts.map +1 -1
  19. package/dist/http/admin-server.js +1 -0
  20. package/dist/http/admin-server.js.map +1 -1
  21. package/dist/http/dashboard-page.d.ts +2 -0
  22. package/dist/http/dashboard-page.d.ts.map +1 -0
  23. package/dist/http/dashboard-page.js +313 -0
  24. package/dist/http/dashboard-page.js.map +1 -0
  25. package/dist/settlement/channel-manager.d.ts +4 -1
  26. package/dist/settlement/channel-manager.d.ts.map +1 -1
  27. package/dist/settlement/channel-manager.js +46 -6
  28. package/dist/settlement/channel-manager.js.map +1 -1
  29. package/dist/settlement/provider/solana-payment-channel-provider.d.ts.map +1 -1
  30. package/dist/settlement/provider/solana-payment-channel-provider.js +24 -0
  31. package/dist/settlement/provider/solana-payment-channel-provider.js.map +1 -1
  32. package/package.json +1 -1
@@ -82,6 +82,7 @@ class AdminServer {
82
82
  port,
83
83
  host,
84
84
  endpoints: [
85
+ 'GET /admin/dashboard',
85
86
  'GET /admin/peers',
86
87
  'POST /admin/peers',
87
88
  'DELETE /admin/peers/:peerId',
@@ -1 +1 @@
1
- {"version":3,"file":"admin-server.js","sourceRoot":"","sources":["../../src/http/admin-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-server.js","sourceRoot":"","sources":["../../src/http/admin-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const DASHBOARD_HTML = "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n<title>TOON connector \u2014 operator dashboard</title>\n<style>\n :root {\n --bg:#0d1117; --panel:#161b22; --border:#30363d; --fg:#e6edf3; --muted:#8b949e;\n --accent:#2f81f7; --ok:#3fb950; --warn:#d29922; --bad:#f85149; --grid:#21262d;\n }\n @media (prefers-color-scheme: light) {\n :root { --bg:#f6f8fa; --panel:#fff; --border:#d0d7de; --fg:#1f2328; --muted:#59636e;\n --accent:#0969da; --ok:#1a7f37; --warn:#9a6700; --bad:#cf222e; --grid:#eaeef2; }\n }\n * { box-sizing:border-box; }\n body { margin:0; background:var(--bg); color:var(--fg);\n font:14px/1.5 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif; }\n header { display:flex; align-items:center; gap:12px; padding:14px 20px;\n border-bottom:1px solid var(--border); flex-wrap:wrap; }\n header h1 { font-size:15px; margin:0; font-weight:600; letter-spacing:.2px; }\n .pill { font-size:12px; padding:2px 9px; border-radius:999px; border:1px solid var(--border);\n color:var(--muted); display:inline-flex; align-items:center; gap:6px; }\n .dot { width:8px; height:8px; border-radius:50%; background:var(--muted); }\n .dot.ok{background:var(--ok);} .dot.bad{background:var(--bad);} .dot.warn{background:var(--warn);}\n .spacer { flex:1; }\n main { padding:20px; display:grid; gap:16px;\n grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); max-width:1200px; }\n .card { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:16px; }\n .card h2 { font-size:12px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted);\n margin:0 0 12px; font-weight:600; }\n .big { font-size:30px; font-weight:650; font-variant-numeric:tabular-nums; }\n .sub { color:var(--muted); font-size:12px; margin-top:2px; }\n .row { display:flex; justify-content:space-between; gap:10px; padding:4px 0;\n font-variant-numeric:tabular-nums; }\n .row .k { color:var(--muted); }\n .grid2 { grid-column:1/-1; }\n table { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }\n th,td { text-align:left; padding:7px 8px; border-bottom:1px solid var(--grid); font-size:13px; }\n th { color:var(--muted); font-weight:500; font-size:11px; text-transform:uppercase; letter-spacing:.4px; }\n td.n, th.n { text-align:right; }\n .muted { color:var(--muted); }\n .est { font-size:11px; color:var(--warn); }\n svg { width:100%; height:56px; display:block; }\n .banner { margin:16px 20px 0; padding:12px 14px; border:1px solid var(--warn); border-radius:8px;\n background:rgba(210,153,34,.08); color:var(--fg); font-size:13px; display:none; }\n .banner.show { display:block; }\n .banner input { margin-left:8px; padding:5px 8px; background:var(--bg); color:var(--fg);\n border:1px solid var(--border); border-radius:6px; }\n .banner button { margin-left:8px; padding:5px 12px; background:var(--accent); color:#fff;\n border:0; border-radius:6px; cursor:pointer; }\n footer { padding:14px 20px; color:var(--muted); font-size:12px; border-top:1px solid var(--border);\n margin-top:8px; }\n code { background:var(--grid); padding:1px 5px; border-radius:4px; }\n</style>\n</head>\n<body>\n<header>\n <h1>TOON connector \u2014 operator dashboard</h1>\n <span class=\"pill\" id=\"node\"><span class=\"dot\" id=\"nodeDot\"></span><span id=\"nodeId\">g.proxy</span></span>\n <span class=\"pill\" id=\"uptime\">uptime \u2014</span>\n <div class=\"spacer\"></div>\n <span class=\"pill\" id=\"status\"><span class=\"dot\" id=\"statusDot\"></span><span id=\"statusText\">connecting\u2026</span></span>\n</header>\n\n<div class=\"banner\" id=\"auth\">\n This admin API needs a key.\n <input id=\"apiKey\" type=\"password\" placeholder=\"X-Api-Key\" autocomplete=\"off\" />\n <button id=\"applyKey\">Connect</button>\n</div>\n\n<main>\n <div class=\"card\">\n <h2>Throughput</h2>\n <div class=\"big\" id=\"fwdRate\">0<span style=\"font-size:14px;\" class=\"muted\"> /s</span></div>\n <div class=\"sub\">packets forwarded &middot; <span id=\"rejRate\">0</span>/s rejected</div>\n <svg id=\"spark\" viewBox=\"0 0 100 56\" preserveAspectRatio=\"none\" aria-hidden=\"true\"></svg>\n <div class=\"sub\">session-local (since page load)</div>\n </div>\n\n <div class=\"card\">\n <h2>Totals</h2>\n <div class=\"row\"><span class=\"k\">Forwarded</span><span id=\"tFwd\">0</span></div>\n <div class=\"row\"><span class=\"k\">Locally delivered</span><span id=\"tLocal\">0</span></div>\n <div class=\"row\"><span class=\"k\">Rejected</span><span id=\"tRej\">0</span></div>\n <div class=\"row\"><span class=\"k\">Reject rate</span><span id=\"rejPct\">0%</span></div>\n <div class=\"row\"><span class=\"k\">Bytes sent</span><span id=\"tBytes\">0</span></div>\n <div class=\"sub\">per-reason reject breakdown: Prometheus <code>/metrics</code></div>\n </div>\n\n <div class=\"card\">\n <h2>Peers</h2>\n <div class=\"big\" id=\"peerCount\">0</div>\n <div class=\"sub\"><span id=\"peerConn\">0</span> connected</div>\n <div class=\"row\" style=\"margin-top:10px;\"><span class=\"k\">Discovered</span><span id=\"disc\">\u2014</span></div>\n <div class=\"row\"><span class=\"k\">Funded</span><span id=\"funded\">\u2014</span></div>\n </div>\n\n <div class=\"card\">\n <h2>Earnings <span class=\"est\">estimated</span></h2>\n <div id=\"fees\"><div class=\"muted\">no fees yet</div></div>\n <div class=\"sub\">connector fee = inbound volume &times; fee&nbsp;% (approximate; no fee ledger yet)</div>\n </div>\n\n <div class=\"card grid2\">\n <h2>Per-peer activity</h2>\n <table>\n <thead><tr><th>Peer</th><th>State</th><th class=\"n\">Fwd</th><th class=\"n\">Rej</th>\n <th class=\"n\">Bytes</th><th>Last packet</th></tr></thead>\n <tbody id=\"peerRows\"><tr><td colspan=\"6\" class=\"muted\">waiting for data\u2026</td></tr></tbody>\n </table>\n </div>\n\n <div class=\"card grid2\">\n <h2>Recent claims</h2>\n <table>\n <thead><tr><th>When</th><th>Peer</th><th>Dir</th><th class=\"n\">Amount</th><th>Asset</th></tr></thead>\n <tbody id=\"claimRows\"><tr><td colspan=\"5\" class=\"muted\">none yet</td></tr></tbody>\n </table>\n </div>\n</main>\n\n<footer>\n Served by the connector admin API &middot; metrics poll 1&nbsp;Hz, earnings 0.2&nbsp;Hz &middot;\n fees are estimated and today/month/year deltas are not yet computed.\n</footer>\n\n<script>\n(function () {\n var KEYSTORE = 'toon_admin_key';\n var apiKey = null;\n try { apiKey = localStorage.getItem(KEYSTORE); } catch (e) {}\n\n var spark = []; // session-local forwarded/s samples\n var SPARK_MAX = 60;\n var prev = null; // previous metrics snapshot for rate calc\n\n function el(id) { return document.getElementById(id); }\n function setPill(dotId, textId, cls, text) {\n var d = el(dotId); d.className = 'dot ' + cls;\n if (textId) el(textId).textContent = text;\n }\n function fmt(n) {\n n = Number(n) || 0;\n if (n >= 1e9) return (n / 1e9).toFixed(2) + 'G';\n if (n >= 1e6) return (n / 1e6).toFixed(2) + 'M';\n if (n >= 1e3) return (n / 1e3).toFixed(1) + 'k';\n return String(Math.round(n));\n }\n function fmtAmount(raw, scale) {\n // raw is an integer string in base units; scale is decimal places.\n var s = String(raw || '0');\n if (!scale) return s;\n var neg = s.charAt(0) === '-'; if (neg) s = s.slice(1);\n while (s.length <= scale) s = '0' + s;\n var whole = s.slice(0, s.length - scale);\n var frac = s.slice(s.length - scale).replace(/0+$/, '');\n return (neg ? '-' : '') + whole + (frac ? '.' + frac : '');\n }\n function ago(iso) {\n if (!iso) return '\u2014';\n var t = Date.parse(iso); if (isNaN(t)) return '\u2014';\n var s = Math.max(0, Math.round((Date.now() - t) / 1000));\n if (s < 60) return s + 's ago';\n if (s < 3600) return Math.round(s / 60) + 'm ago';\n return Math.round(s / 3600) + 'h ago';\n }\n function uptimeStr(sec) {\n sec = Math.max(0, Math.floor(sec || 0));\n var d = Math.floor(sec / 86400); sec -= d * 86400;\n var h = Math.floor(sec / 3600); sec -= h * 3600;\n var m = Math.floor(sec / 60);\n if (d) return 'uptime ' + d + 'd ' + h + 'h';\n if (h) return 'uptime ' + h + 'h ' + m + 'm';\n return 'uptime ' + m + 'm';\n }\n\n function apiFetch(path) {\n var opts = { headers: {}, cache: 'no-store' };\n if (apiKey) opts.headers['X-Api-Key'] = apiKey;\n return fetch(path, opts).then(function (r) {\n if (r.status === 401) { showAuth(true); var e = new Error('unauthorized'); e.code = 401; throw e; }\n if (r.status === 403) { var e2 = new Error('forbidden'); e2.code = 403; throw e2; }\n if (!r.ok) throw new Error('http ' + r.status);\n return r.json();\n });\n }\n\n function showAuth(show) { el('auth').className = show ? 'banner show' : 'banner'; }\n el('applyKey').addEventListener('click', function () {\n apiKey = el('apiKey').value || null;\n try { if (apiKey) localStorage.setItem(KEYSTORE, apiKey); } catch (e) {}\n showAuth(false); tick();\n });\n\n function drawSpark() {\n var svg = el('spark');\n if (!spark.length) { svg.innerHTML = ''; return; }\n var max = Math.max.apply(null, spark); if (max <= 0) max = 1;\n var n = spark.length, step = 100 / Math.max(1, SPARK_MAX - 1);\n var pts = spark.map(function (v, i) {\n var x = i * step, y = 56 - (v / max) * 52 - 2;\n return x.toFixed(1) + ',' + y.toFixed(1);\n }).join(' ');\n svg.innerHTML =\n '<polyline points=\"' + pts + '\" fill=\"none\" stroke=\"var(--accent)\" stroke-width=\"1.6\" ' +\n 'vector-effect=\"non-scaling-stroke\" stroke-linejoin=\"round\" />';\n }\n\n function renderMetrics(m) {\n var a = m.aggregate || {};\n el('tFwd').textContent = fmt(a.packetsForwarded);\n el('tLocal').textContent = fmt(a.packetsLocallyDelivered);\n el('tRej').textContent = fmt(a.packetsRejected);\n el('tBytes').textContent = fmt(a.bytesSent) + 'B';\n var tot = (a.packetsForwarded || 0) + (a.packetsRejected || 0);\n el('rejPct').textContent = tot ? ((a.packetsRejected / tot) * 100).toFixed(1) + '%' : '0%';\n el('uptime').textContent = uptimeStr(m.uptimeSeconds);\n\n var peers = m.peers || [];\n el('peerCount').textContent = String(peers.length);\n el('peerConn').textContent = String(peers.filter(function (p) { return p.connected; }).length);\n\n // rate from delta since previous poll\n if (prev) {\n var dt = (Date.parse(m.timestamp) - Date.parse(prev.timestamp)) / 1000;\n if (dt > 0) {\n var fwd = Math.max(0, (a.packetsForwarded - (prev.aggregate.packetsForwarded || 0)) / dt);\n var rej = Math.max(0, (a.packetsRejected - (prev.aggregate.packetsRejected || 0)) / dt);\n el('fwdRate').innerHTML = fwd.toFixed(fwd < 10 ? 1 : 0) +\n '<span style=\"font-size:14px;\" class=\"muted\"> /s</span>';\n el('rejRate').textContent = rej.toFixed(rej < 10 ? 1 : 0);\n spark.push(fwd); if (spark.length > SPARK_MAX) spark.shift();\n drawSpark();\n }\n }\n prev = m;\n\n var rows = peers.map(function (p) {\n var cls = p.connected ? 'ok' : 'bad';\n return '<tr><td>' + escapeHtml(p.peerId) + '</td>' +\n '<td><span class=\"dot ' + cls + '\" style=\"display:inline-block;margin-right:6px;\"></span>' +\n (p.connected ? 'up' : 'down') + '</td>' +\n '<td class=\"n\">' + fmt(p.packetsForwarded) + '</td>' +\n '<td class=\"n\">' + fmt(p.packetsRejected) + '</td>' +\n '<td class=\"n\">' + fmt(p.bytesSent) + '</td>' +\n '<td class=\"muted\">' + ago(p.lastPacketAt) + '</td></tr>';\n });\n el('peerRows').innerHTML = rows.length ? rows.join('') :\n '<tr><td colspan=\"6\" class=\"muted\">no peers</td></tr>';\n }\n\n function renderEarnings(e) {\n var fees = e.connectorFees || [];\n el('fees').innerHTML = fees.length ? fees.map(function (f) {\n return '<div class=\"row\"><span class=\"k\">' + escapeHtml(f.assetCode) + '</span><span>' +\n fmtAmount(f.total, f.assetScale) + '</span></div>';\n }).join('') : '<div class=\"muted\">no fees yet</div>';\n\n var claims = e.recentClaims || [];\n el('claimRows').innerHTML = claims.length ? claims.slice(0, 20).map(function (c) {\n return '<tr><td class=\"muted\">' + ago(c.at) + '</td><td>' + escapeHtml(c.peerId) + '</td>' +\n '<td>' + c.direction + '</td>' +\n '<td class=\"n\">' + fmtAmount(c.amount, c.assetScale) + '</td>' +\n '<td>' + escapeHtml(c.assetCode) + '</td></tr>';\n }).join('') : '<tr><td colspan=\"5\" class=\"muted\">none yet</td></tr>';\n }\n\n function escapeHtml(s) {\n return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n });\n }\n\n var earnEvery = 5, sinceEarn = 99, sinceDisc = 99;\n\n function tick() {\n apiFetch('./metrics.json').then(function (m) {\n setPill('statusDot', 'statusText', 'ok', 'live');\n setPill('nodeDot', null, 'ok');\n renderMetrics(m);\n }).catch(function (err) {\n if (err.code === 401) { setPill('statusDot', 'statusText', 'warn', 'auth required'); return; }\n setPill('statusDot', 'statusText', 'bad', 'unreachable');\n setPill('nodeDot', null, 'bad');\n });\n\n if (++sinceEarn >= earnEvery) {\n sinceEarn = 0;\n apiFetch('./earnings.json').then(renderEarnings).catch(function () {});\n }\n if (++sinceDisc >= earnEvery) {\n sinceDisc = 0;\n apiFetch('./discovered-nodes').then(function (d) {\n var nodes = (d && d.nodes) || d || [];\n var total = Array.isArray(nodes) ? nodes.length : (d.count || 0);\n var fundedN = Array.isArray(nodes) ? nodes.filter(function (n) { return n.funded; }).length : (d.funded || 0);\n el('disc').textContent = String(total);\n el('funded').textContent = String(fundedN);\n }).catch(function () {});\n }\n }\n\n tick();\n setInterval(tick, 1000);\n})();\n</script>\n</body>\n</html>";
2
+ //# sourceMappingURL=dashboard-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-page.d.ts","sourceRoot":"","sources":["../../src/http/dashboard-page.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,cAAc,oicAoTnB,CAAC"}
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DASHBOARD_HTML = void 0;
4
+ exports.DASHBOARD_HTML = `<!doctype html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
9
+ <title>TOON connector — operator dashboard</title>
10
+ <style>
11
+ :root {
12
+ --bg:#0d1117; --panel:#161b22; --border:#30363d; --fg:#e6edf3; --muted:#8b949e;
13
+ --accent:#2f81f7; --ok:#3fb950; --warn:#d29922; --bad:#f85149; --grid:#21262d;
14
+ }
15
+ @media (prefers-color-scheme: light) {
16
+ :root { --bg:#f6f8fa; --panel:#fff; --border:#d0d7de; --fg:#1f2328; --muted:#59636e;
17
+ --accent:#0969da; --ok:#1a7f37; --warn:#9a6700; --bad:#cf222e; --grid:#eaeef2; }
18
+ }
19
+ * { box-sizing:border-box; }
20
+ body { margin:0; background:var(--bg); color:var(--fg);
21
+ font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }
22
+ header { display:flex; align-items:center; gap:12px; padding:14px 20px;
23
+ border-bottom:1px solid var(--border); flex-wrap:wrap; }
24
+ header h1 { font-size:15px; margin:0; font-weight:600; letter-spacing:.2px; }
25
+ .pill { font-size:12px; padding:2px 9px; border-radius:999px; border:1px solid var(--border);
26
+ color:var(--muted); display:inline-flex; align-items:center; gap:6px; }
27
+ .dot { width:8px; height:8px; border-radius:50%; background:var(--muted); }
28
+ .dot.ok{background:var(--ok);} .dot.bad{background:var(--bad);} .dot.warn{background:var(--warn);}
29
+ .spacer { flex:1; }
30
+ main { padding:20px; display:grid; gap:16px;
31
+ grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); max-width:1200px; }
32
+ .card { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:16px; }
33
+ .card h2 { font-size:12px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted);
34
+ margin:0 0 12px; font-weight:600; }
35
+ .big { font-size:30px; font-weight:650; font-variant-numeric:tabular-nums; }
36
+ .sub { color:var(--muted); font-size:12px; margin-top:2px; }
37
+ .row { display:flex; justify-content:space-between; gap:10px; padding:4px 0;
38
+ font-variant-numeric:tabular-nums; }
39
+ .row .k { color:var(--muted); }
40
+ .grid2 { grid-column:1/-1; }
41
+ table { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
42
+ th,td { text-align:left; padding:7px 8px; border-bottom:1px solid var(--grid); font-size:13px; }
43
+ th { color:var(--muted); font-weight:500; font-size:11px; text-transform:uppercase; letter-spacing:.4px; }
44
+ td.n, th.n { text-align:right; }
45
+ .muted { color:var(--muted); }
46
+ .est { font-size:11px; color:var(--warn); }
47
+ svg { width:100%; height:56px; display:block; }
48
+ .banner { margin:16px 20px 0; padding:12px 14px; border:1px solid var(--warn); border-radius:8px;
49
+ background:rgba(210,153,34,.08); color:var(--fg); font-size:13px; display:none; }
50
+ .banner.show { display:block; }
51
+ .banner input { margin-left:8px; padding:5px 8px; background:var(--bg); color:var(--fg);
52
+ border:1px solid var(--border); border-radius:6px; }
53
+ .banner button { margin-left:8px; padding:5px 12px; background:var(--accent); color:#fff;
54
+ border:0; border-radius:6px; cursor:pointer; }
55
+ footer { padding:14px 20px; color:var(--muted); font-size:12px; border-top:1px solid var(--border);
56
+ margin-top:8px; }
57
+ code { background:var(--grid); padding:1px 5px; border-radius:4px; }
58
+ </style>
59
+ </head>
60
+ <body>
61
+ <header>
62
+ <h1>TOON connector — operator dashboard</h1>
63
+ <span class="pill" id="node"><span class="dot" id="nodeDot"></span><span id="nodeId">g.proxy</span></span>
64
+ <span class="pill" id="uptime">uptime —</span>
65
+ <div class="spacer"></div>
66
+ <span class="pill" id="status"><span class="dot" id="statusDot"></span><span id="statusText">connecting…</span></span>
67
+ </header>
68
+
69
+ <div class="banner" id="auth">
70
+ This admin API needs a key.
71
+ <input id="apiKey" type="password" placeholder="X-Api-Key" autocomplete="off" />
72
+ <button id="applyKey">Connect</button>
73
+ </div>
74
+
75
+ <main>
76
+ <div class="card">
77
+ <h2>Throughput</h2>
78
+ <div class="big" id="fwdRate">0<span style="font-size:14px;" class="muted"> /s</span></div>
79
+ <div class="sub">packets forwarded &middot; <span id="rejRate">0</span>/s rejected</div>
80
+ <svg id="spark" viewBox="0 0 100 56" preserveAspectRatio="none" aria-hidden="true"></svg>
81
+ <div class="sub">session-local (since page load)</div>
82
+ </div>
83
+
84
+ <div class="card">
85
+ <h2>Totals</h2>
86
+ <div class="row"><span class="k">Forwarded</span><span id="tFwd">0</span></div>
87
+ <div class="row"><span class="k">Locally delivered</span><span id="tLocal">0</span></div>
88
+ <div class="row"><span class="k">Rejected</span><span id="tRej">0</span></div>
89
+ <div class="row"><span class="k">Reject rate</span><span id="rejPct">0%</span></div>
90
+ <div class="row"><span class="k">Bytes sent</span><span id="tBytes">0</span></div>
91
+ <div class="sub">per-reason reject breakdown: Prometheus <code>/metrics</code></div>
92
+ </div>
93
+
94
+ <div class="card">
95
+ <h2>Peers</h2>
96
+ <div class="big" id="peerCount">0</div>
97
+ <div class="sub"><span id="peerConn">0</span> connected</div>
98
+ <div class="row" style="margin-top:10px;"><span class="k">Discovered</span><span id="disc">—</span></div>
99
+ <div class="row"><span class="k">Funded</span><span id="funded">—</span></div>
100
+ </div>
101
+
102
+ <div class="card">
103
+ <h2>Earnings <span class="est">estimated</span></h2>
104
+ <div id="fees"><div class="muted">no fees yet</div></div>
105
+ <div class="sub">connector fee = inbound volume &times; fee&nbsp;% (approximate; no fee ledger yet)</div>
106
+ </div>
107
+
108
+ <div class="card grid2">
109
+ <h2>Per-peer activity</h2>
110
+ <table>
111
+ <thead><tr><th>Peer</th><th>State</th><th class="n">Fwd</th><th class="n">Rej</th>
112
+ <th class="n">Bytes</th><th>Last packet</th></tr></thead>
113
+ <tbody id="peerRows"><tr><td colspan="6" class="muted">waiting for data…</td></tr></tbody>
114
+ </table>
115
+ </div>
116
+
117
+ <div class="card grid2">
118
+ <h2>Recent claims</h2>
119
+ <table>
120
+ <thead><tr><th>When</th><th>Peer</th><th>Dir</th><th class="n">Amount</th><th>Asset</th></tr></thead>
121
+ <tbody id="claimRows"><tr><td colspan="5" class="muted">none yet</td></tr></tbody>
122
+ </table>
123
+ </div>
124
+ </main>
125
+
126
+ <footer>
127
+ Served by the connector admin API &middot; metrics poll 1&nbsp;Hz, earnings 0.2&nbsp;Hz &middot;
128
+ fees are estimated and today/month/year deltas are not yet computed.
129
+ </footer>
130
+
131
+ <script>
132
+ (function () {
133
+ var KEYSTORE = 'toon_admin_key';
134
+ var apiKey = null;
135
+ try { apiKey = localStorage.getItem(KEYSTORE); } catch (e) {}
136
+
137
+ var spark = []; // session-local forwarded/s samples
138
+ var SPARK_MAX = 60;
139
+ var prev = null; // previous metrics snapshot for rate calc
140
+
141
+ function el(id) { return document.getElementById(id); }
142
+ function setPill(dotId, textId, cls, text) {
143
+ var d = el(dotId); d.className = 'dot ' + cls;
144
+ if (textId) el(textId).textContent = text;
145
+ }
146
+ function fmt(n) {
147
+ n = Number(n) || 0;
148
+ if (n >= 1e9) return (n / 1e9).toFixed(2) + 'G';
149
+ if (n >= 1e6) return (n / 1e6).toFixed(2) + 'M';
150
+ if (n >= 1e3) return (n / 1e3).toFixed(1) + 'k';
151
+ return String(Math.round(n));
152
+ }
153
+ function fmtAmount(raw, scale) {
154
+ // raw is an integer string in base units; scale is decimal places.
155
+ var s = String(raw || '0');
156
+ if (!scale) return s;
157
+ var neg = s.charAt(0) === '-'; if (neg) s = s.slice(1);
158
+ while (s.length <= scale) s = '0' + s;
159
+ var whole = s.slice(0, s.length - scale);
160
+ var frac = s.slice(s.length - scale).replace(/0+$/, '');
161
+ return (neg ? '-' : '') + whole + (frac ? '.' + frac : '');
162
+ }
163
+ function ago(iso) {
164
+ if (!iso) return '—';
165
+ var t = Date.parse(iso); if (isNaN(t)) return '—';
166
+ var s = Math.max(0, Math.round((Date.now() - t) / 1000));
167
+ if (s < 60) return s + 's ago';
168
+ if (s < 3600) return Math.round(s / 60) + 'm ago';
169
+ return Math.round(s / 3600) + 'h ago';
170
+ }
171
+ function uptimeStr(sec) {
172
+ sec = Math.max(0, Math.floor(sec || 0));
173
+ var d = Math.floor(sec / 86400); sec -= d * 86400;
174
+ var h = Math.floor(sec / 3600); sec -= h * 3600;
175
+ var m = Math.floor(sec / 60);
176
+ if (d) return 'uptime ' + d + 'd ' + h + 'h';
177
+ if (h) return 'uptime ' + h + 'h ' + m + 'm';
178
+ return 'uptime ' + m + 'm';
179
+ }
180
+
181
+ function apiFetch(path) {
182
+ var opts = { headers: {}, cache: 'no-store' };
183
+ if (apiKey) opts.headers['X-Api-Key'] = apiKey;
184
+ return fetch(path, opts).then(function (r) {
185
+ if (r.status === 401) { showAuth(true); var e = new Error('unauthorized'); e.code = 401; throw e; }
186
+ if (r.status === 403) { var e2 = new Error('forbidden'); e2.code = 403; throw e2; }
187
+ if (!r.ok) throw new Error('http ' + r.status);
188
+ return r.json();
189
+ });
190
+ }
191
+
192
+ function showAuth(show) { el('auth').className = show ? 'banner show' : 'banner'; }
193
+ el('applyKey').addEventListener('click', function () {
194
+ apiKey = el('apiKey').value || null;
195
+ try { if (apiKey) localStorage.setItem(KEYSTORE, apiKey); } catch (e) {}
196
+ showAuth(false); tick();
197
+ });
198
+
199
+ function drawSpark() {
200
+ var svg = el('spark');
201
+ if (!spark.length) { svg.innerHTML = ''; return; }
202
+ var max = Math.max.apply(null, spark); if (max <= 0) max = 1;
203
+ var n = spark.length, step = 100 / Math.max(1, SPARK_MAX - 1);
204
+ var pts = spark.map(function (v, i) {
205
+ var x = i * step, y = 56 - (v / max) * 52 - 2;
206
+ return x.toFixed(1) + ',' + y.toFixed(1);
207
+ }).join(' ');
208
+ svg.innerHTML =
209
+ '<polyline points="' + pts + '" fill="none" stroke="var(--accent)" stroke-width="1.6" ' +
210
+ 'vector-effect="non-scaling-stroke" stroke-linejoin="round" />';
211
+ }
212
+
213
+ function renderMetrics(m) {
214
+ var a = m.aggregate || {};
215
+ el('tFwd').textContent = fmt(a.packetsForwarded);
216
+ el('tLocal').textContent = fmt(a.packetsLocallyDelivered);
217
+ el('tRej').textContent = fmt(a.packetsRejected);
218
+ el('tBytes').textContent = fmt(a.bytesSent) + 'B';
219
+ var tot = (a.packetsForwarded || 0) + (a.packetsRejected || 0);
220
+ el('rejPct').textContent = tot ? ((a.packetsRejected / tot) * 100).toFixed(1) + '%' : '0%';
221
+ el('uptime').textContent = uptimeStr(m.uptimeSeconds);
222
+
223
+ var peers = m.peers || [];
224
+ el('peerCount').textContent = String(peers.length);
225
+ el('peerConn').textContent = String(peers.filter(function (p) { return p.connected; }).length);
226
+
227
+ // rate from delta since previous poll
228
+ if (prev) {
229
+ var dt = (Date.parse(m.timestamp) - Date.parse(prev.timestamp)) / 1000;
230
+ if (dt > 0) {
231
+ var fwd = Math.max(0, (a.packetsForwarded - (prev.aggregate.packetsForwarded || 0)) / dt);
232
+ var rej = Math.max(0, (a.packetsRejected - (prev.aggregate.packetsRejected || 0)) / dt);
233
+ el('fwdRate').innerHTML = fwd.toFixed(fwd < 10 ? 1 : 0) +
234
+ '<span style="font-size:14px;" class="muted"> /s</span>';
235
+ el('rejRate').textContent = rej.toFixed(rej < 10 ? 1 : 0);
236
+ spark.push(fwd); if (spark.length > SPARK_MAX) spark.shift();
237
+ drawSpark();
238
+ }
239
+ }
240
+ prev = m;
241
+
242
+ var rows = peers.map(function (p) {
243
+ var cls = p.connected ? 'ok' : 'bad';
244
+ return '<tr><td>' + escapeHtml(p.peerId) + '</td>' +
245
+ '<td><span class="dot ' + cls + '" style="display:inline-block;margin-right:6px;"></span>' +
246
+ (p.connected ? 'up' : 'down') + '</td>' +
247
+ '<td class="n">' + fmt(p.packetsForwarded) + '</td>' +
248
+ '<td class="n">' + fmt(p.packetsRejected) + '</td>' +
249
+ '<td class="n">' + fmt(p.bytesSent) + '</td>' +
250
+ '<td class="muted">' + ago(p.lastPacketAt) + '</td></tr>';
251
+ });
252
+ el('peerRows').innerHTML = rows.length ? rows.join('') :
253
+ '<tr><td colspan="6" class="muted">no peers</td></tr>';
254
+ }
255
+
256
+ function renderEarnings(e) {
257
+ var fees = e.connectorFees || [];
258
+ el('fees').innerHTML = fees.length ? fees.map(function (f) {
259
+ return '<div class="row"><span class="k">' + escapeHtml(f.assetCode) + '</span><span>' +
260
+ fmtAmount(f.total, f.assetScale) + '</span></div>';
261
+ }).join('') : '<div class="muted">no fees yet</div>';
262
+
263
+ var claims = e.recentClaims || [];
264
+ el('claimRows').innerHTML = claims.length ? claims.slice(0, 20).map(function (c) {
265
+ return '<tr><td class="muted">' + ago(c.at) + '</td><td>' + escapeHtml(c.peerId) + '</td>' +
266
+ '<td>' + c.direction + '</td>' +
267
+ '<td class="n">' + fmtAmount(c.amount, c.assetScale) + '</td>' +
268
+ '<td>' + escapeHtml(c.assetCode) + '</td></tr>';
269
+ }).join('') : '<tr><td colspan="5" class="muted">none yet</td></tr>';
270
+ }
271
+
272
+ function escapeHtml(s) {
273
+ return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) {
274
+ return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c];
275
+ });
276
+ }
277
+
278
+ var earnEvery = 5, sinceEarn = 99, sinceDisc = 99;
279
+
280
+ function tick() {
281
+ apiFetch('./metrics.json').then(function (m) {
282
+ setPill('statusDot', 'statusText', 'ok', 'live');
283
+ setPill('nodeDot', null, 'ok');
284
+ renderMetrics(m);
285
+ }).catch(function (err) {
286
+ if (err.code === 401) { setPill('statusDot', 'statusText', 'warn', 'auth required'); return; }
287
+ setPill('statusDot', 'statusText', 'bad', 'unreachable');
288
+ setPill('nodeDot', null, 'bad');
289
+ });
290
+
291
+ if (++sinceEarn >= earnEvery) {
292
+ sinceEarn = 0;
293
+ apiFetch('./earnings.json').then(renderEarnings).catch(function () {});
294
+ }
295
+ if (++sinceDisc >= earnEvery) {
296
+ sinceDisc = 0;
297
+ apiFetch('./discovered-nodes').then(function (d) {
298
+ var nodes = (d && d.nodes) || d || [];
299
+ var total = Array.isArray(nodes) ? nodes.length : (d.count || 0);
300
+ var fundedN = Array.isArray(nodes) ? nodes.filter(function (n) { return n.funded; }).length : (d.funded || 0);
301
+ el('disc').textContent = String(total);
302
+ el('funded').textContent = String(fundedN);
303
+ }).catch(function () {});
304
+ }
305
+ }
306
+
307
+ tick();
308
+ setInterval(tick, 1000);
309
+ })();
310
+ </script>
311
+ </body>
312
+ </html>`;
313
+ //# sourceMappingURL=dashboard-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-page.js","sourceRoot":"","sources":["../../src/http/dashboard-page.ts"],"names":[],"mappings":";;;AAwBa,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoTtB,CAAC"}
@@ -3,6 +3,7 @@ import type { Logger } from 'pino';
3
3
  import { PaymentChannelSDK } from './payment-channel-sdk';
4
4
  import { SettlementExecutor } from './settlement-executor';
5
5
  import type { AdminChannelStatus } from './types';
6
+ import type { ChainProviderRegistry } from './provider/chain-provider-registry';
6
7
  export interface ChannelManagerConfig {
7
8
  nodeId: string;
8
9
  defaultSettlementTimeout: number;
@@ -39,8 +40,10 @@ export declare class ChannelManager extends EventEmitter {
39
40
  private readonly logger;
40
41
  private readonly channelMetadata;
41
42
  private readonly peerChannelIndex;
43
+ private readonly chainProviderRegistry?;
44
+ private readonly peerIdToChainMap?;
42
45
  private idleCheckTimer?;
43
- constructor(config: ChannelManagerConfig, paymentChannelSDK: PaymentChannelSDK, settlementExecutor: SettlementExecutor, logger: Logger);
46
+ constructor(config: ChannelManagerConfig, paymentChannelSDK: PaymentChannelSDK, settlementExecutor: SettlementExecutor, logger: Logger, chainProviderRegistry?: ChainProviderRegistry, peerIdToChainMap?: Map<string, string>);
44
47
  start(): void;
45
48
  stop(): void;
46
49
  ensureChannelExists(peerId: string, tokenId: string, options?: ChannelOpenOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"channel-manager.d.ts","sourceRoot":"","sources":["../../src/settlement/channel-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-manager.d.ts","sourceRoot":"","sources":["../../src/settlement/channel-manager.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,16 @@ class ChannelManager extends events_1.EventEmitter {
9
9
  logger;
10
10
  channelMetadata;
11
11
  peerChannelIndex;
12
+ chainProviderRegistry;
13
+ peerIdToChainMap;
12
14
  idleCheckTimer;
13
- constructor(config, paymentChannelSDK, settlementExecutor, logger) {
15
+ constructor(config, paymentChannelSDK, settlementExecutor, logger, chainProviderRegistry, peerIdToChainMap) {
14
16
  super();
15
17
  this.config = config;
16
18
  this.paymentChannelSDK = paymentChannelSDK;
17
19
  this.settlementExecutor = settlementExecutor;
20
+ this.chainProviderRegistry = chainProviderRegistry;
21
+ this.peerIdToChainMap = peerIdToChainMap;
18
22
  this.channelMetadata = new Map();
19
23
  this.peerChannelIndex = new Map();
20
24
  this.idleCheckTimer = undefined;
@@ -133,15 +137,13 @@ class ChannelManager extends events_1.EventEmitter {
133
137
  this.logger.debug({ channelId }, 'Channel activity marked');
134
138
  }
135
139
  async openChannelForPeer(peerId, tokenId, options) {
136
- const tokenAddress = this.config.tokenAddressMap.get(tokenId);
137
- if (!tokenAddress) {
138
- throw new Error(`Token address not found for tokenId: ${tokenId}`);
139
- }
140
+ const chain = options?.chain ?? this.peerIdToChainMap?.get(peerId);
141
+ const isEvmChain = !chain || chain.startsWith('evm');
140
142
  const peerAddress = options?.peerAddress || this.config.peerIdToAddressMap.get(peerId);
141
143
  if (!peerAddress) {
142
144
  throw new Error(`Peer address not found for peerId: ${peerId}`);
143
145
  }
144
- this.logger.info({ peerId, peerAddress, source: options?.peerAddress ? 'options' : 'config' }, 'Resolved peer address for channel opening');
146
+ this.logger.info({ peerId, peerAddress, chain, source: options?.peerAddress ? 'options' : 'config' }, 'Resolved peer address for channel opening');
145
147
  const settlementTimeout = options?.settlementTimeout ?? this.config.defaultSettlementTimeout;
146
148
  let initialDeposit;
147
149
  if (options?.initialDeposit !== undefined) {
@@ -151,6 +153,44 @@ class ChannelManager extends events_1.EventEmitter {
151
153
  const defaultInitialDeposit = BigInt(1000000);
152
154
  initialDeposit = defaultInitialDeposit * BigInt(this.config.initialDepositMultiplier);
153
155
  }
156
+ if (chain && !isEvmChain && this.chainProviderRegistry) {
157
+ const provider = this.chainProviderRegistry.getProviderForPeer({ peerId, chain });
158
+ if (!provider) {
159
+ throw new Error(`No provider registered for chain ${chain} (peer ${peerId})`);
160
+ }
161
+ const tokenAddressForMeta = this.config.tokenAddressMap.get(tokenId) ?? tokenId;
162
+ const { channelId, txHash } = await provider.openChannel(peerAddress, settlementTimeout);
163
+ this.logger.info({ channelId, txHash, chain, provider: provider.chainId }, 'Channel opened via chain provider (awaiting deposit)');
164
+ try {
165
+ const depositResult = await provider.deposit(channelId, initialDeposit.toString());
166
+ this.logger.info({ channelId, txHash: depositResult.txHash, chain }, 'Channel deposit confirmed via chain provider');
167
+ }
168
+ catch (error) {
169
+ this.logger.error({ channelId, chain, initialDeposit: initialDeposit.toString(), error }, 'Channel opened on-chain but deposit failed — channel NOT registered as funded/available');
170
+ throw error;
171
+ }
172
+ const metadata = {
173
+ channelId,
174
+ peerId,
175
+ tokenId,
176
+ tokenAddress: tokenAddressForMeta,
177
+ chain,
178
+ createdAt: new Date(),
179
+ lastActivityAt: new Date(),
180
+ status: 'open',
181
+ };
182
+ this.channelMetadata.set(channelId, metadata);
183
+ if (!this.peerChannelIndex.has(peerId)) {
184
+ this.peerChannelIndex.set(peerId, new Map());
185
+ }
186
+ this.peerChannelIndex.get(peerId).set(tokenId, channelId);
187
+ this.logger.info({ channelId, peerId, tokenId, chain, initialDeposit: initialDeposit.toString() }, 'Channel opened (chain provider)');
188
+ return channelId;
189
+ }
190
+ const tokenAddress = this.config.tokenAddressMap.get(tokenId);
191
+ if (!tokenAddress) {
192
+ throw new Error(`Token address not found for tokenId: ${tokenId}`);
193
+ }
154
194
  const { channelId, txHash } = await this.paymentChannelSDK.openChannel(peerAddress, tokenAddress, settlementTimeout, initialDeposit);
155
195
  this.logger.info('Channel opened with transaction', { channelId, txHash });
156
196
  const metadata = {
@@ -1 +1 @@
1
- {"version":3,"file":"channel-manager.js","sourceRoot":"","sources":["../../src/settlement/channel-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-manager.js","sourceRoot":"","sources":["../../src/settlement/channel-manager.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAyDtC,MAAa,cAAe,SAAQ,qBAAY;IAC7B,MAAM,CAAuB;IAC7B,iBAAiB,CAAoB;IACrC,kBAAkB,CAAqB;IACvC,MAAM,CAAS;IACf,eAAe,CAA+B;IAC9C,gBAAgB,CAAmC;IAInD,qBAAqB,CAAyB;IAC9C,gBAAgB,CAAuB;IAChD,cAAc,CAAkB;IAExC,YACE,MAA4B,EAC5B,iBAAoC,EACpC,kBAAsC,EACtC,MAAc,EACd,qBAA6C,EAC7C,gBAAsC;QAEtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAGhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAG3E,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,SAAS,EAAyB,EAAE,EAAE;YAGtF,KAAK,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAKD,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAC9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CACrC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EACpD,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAKD,IAAI;QACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAKD,KAAK,CAAC,mBAAmB,CACvB,MAAc,EACd,OAAe,EACf,OAA4B;QAG5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAElE,IAAI,SAAS,EAAE,CAAC;YAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACtF,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAGD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAC/F,OAAO,YAAY,CAAC;IACtB,CAAC;IAKD,iBAAiB,CAAC,MAAc,EAAE,OAAe;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACrD,CAAC;IAKD,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACrD,CAAC;IAeD,kBAAkB,CAAC,MAAc;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,uBAAuB,CAAC,MAQvB;QAEC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAC/B,yDAAyD,CAC1D,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAID,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,OAAO,GAAW,MAAM,CAAC,YAAY,CAAC;QAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;oBAChE,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBAEN,IAAI,OAAO,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;oBACpC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAGD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE5F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACtD,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAoB;YAChC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO;YACP,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,cAAc,EAAE,IAAI,IAAI,EAAE;YAC1B,MAAM,EAAE,MAAM;SACf,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK;SACN,EACD,6BAA6B,CAC9B,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAKD,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAKD,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,yCAAyC,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAC9D,CAAC;IAMO,KAAK,CAAC,kBAAkB,CAC9B,MAAc,EACd,OAAe,EACf,OAA4B;QAK5B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAKrD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EACnF,2CAA2C,CAC5C,CAAC;QAGF,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;QAC7F,IAAI,cAAsB,CAAC;QAC3B,IAAI,OAAO,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC1C,CAAC;aAAM,CAAC;YAIN,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9C,cAAc,GAAG,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACxF,CAAC;QAOD,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,UAAU,MAAM,GAAG,CAAC,CAAC;YAChF,CAAC;YAGD,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;YAMhF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EACxD,sDAAsD,CACvD,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAClD,8CAA8C,CAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EACtE,yFAAyF,CAC1F,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,QAAQ,GAAoB;gBAChC,SAAS;gBACT,MAAM;gBACN,OAAO;gBACP,YAAY,EAAE,mBAAmB;gBACjC,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,cAAc,EAAE,IAAI,IAAI,EAAE;gBAC1B,MAAM,EAAE,MAAM;aACf,CAAC;YAEF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,EAChF,iCAAiC,CAClC,CAAC;YAEF,OAAO,SAAS,CAAC;QACnB,CAAC;QAKD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QAGD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACpE,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,cAAc,CACf,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAG3E,MAAM,QAAQ,GAAoB;YAChC,SAAS;YACT,MAAM;YACN,OAAO;YACP,YAAY;YACZ,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,cAAc,EAAE,IAAI,IAAI,EAAE;YAC1B,MAAM,EAAE,MAAM;SACf,CAAC;QAGF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAG9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,EACzE,gBAAgB,CACjB,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAMO,KAAK,CAAC,iBAAiB;QAC7B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAErD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAGD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC1D,uBAAuB,CACxB,CAAC;YAGF,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAMO,aAAa,CAAC,QAAyB;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACpE,OAAO,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAChE,CAAC;IAMO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,0CAA0C,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAGD,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC;YAEH,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAG5E,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAE9E,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;gBACE,SAAS;gBACT,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB;aACxD,EACD,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACnE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAMO,uBAAuB,CAAC,SAAiB,EAAE,iBAAyB;QAC1E,MAAM,aAAa,GAAG,iBAAiB,GAAG,IAAI,CAAC;QAC/C,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,EAAE,aAAa,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,yCAAyC,CAAC,CAAC;IAChG,CAAC;IAMO,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,mCAAmC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EACtC,+CAA+C,CAChD,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC7E,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;YAE3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,wCAAwC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,iDAAiD,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;CACF;AA3fD,wCA2fC"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana-payment-channel-provider.d.ts","sourceRoot":"","sources":["../../../src/settlement/provider/solana-payment-channel-provider.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAGzB,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAsB,MAAM,+BAA+B,CAAC;AAiD5F,qBAAa,4BAA6B,YAAW,sBAAsB;IAkBvE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IArB1B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAY;IAG9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAaN,IAAI,EAAE,uBAAuB,EAC9C,OAAO,EAAE,MAAM,EACE,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM;IA4B5B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+BvF,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC7D,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,kBAAkB,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;IAoCd,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBlD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsCnD,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC7D,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDtE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBvE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,yBAAyB;IA2DhG,gBAAgB,IAAI;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB;YAqBa,UAAU;IAYxB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,gBAAgB;CAwBzB;AAmBD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAqBtB"}
1
+ {"version":3,"file":"solana-payment-channel-provider.d.ts","sourceRoot":"","sources":["../../../src/settlement/provider/solana-payment-channel-provider.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAGzB,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAsB,MAAM,+BAA+B,CAAC;AAiD5F,qBAAa,4BAA6B,YAAW,sBAAsB;IAkBvE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IArB1B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAY;IAG9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAaN,IAAI,EAAE,uBAAuB,EAC9C,OAAO,EAAE,MAAM,EACE,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM;IA4B5B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgFvF,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC7D,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,kBAAkB,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;IAoCd,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBlD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsCnD,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC7D,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDtE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBvE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,yBAAyB;IA2DhG,gBAAgB,IAAI;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB;YAqBa,UAAU;IAYxB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,gBAAgB;CAwBzB;AAmBD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAqBtB"}
@@ -44,11 +44,35 @@ class SolanaPaymentChannelProvider {
44
44
  }
45
45
  async openChannel(participant, settlementTimeout) {
46
46
  this._logger.info({ event: 'open_channel', participant, settlementTimeout, chainId: this.chainId }, 'Opening Solana payment channel');
47
+ const { pda } = solana_payment_channel_sdk_1.SolanaPaymentChannelSDK.deriveChannelPDA(this._signer.address, participant, this._tokenMint, this._programId);
48
+ try {
49
+ await this._sdk.getChannelState(pda);
50
+ this._logger.info({
51
+ event: 'open_channel_adopt_existing',
52
+ channelId: pda,
53
+ participant,
54
+ chainId: this.chainId,
55
+ }, 'Solana channel already exists for this pair — adopting (skip initialize)');
56
+ return { channelId: pda, txHash: '' };
57
+ }
58
+ catch (lookupErr) {
59
+ const msg = lookupErr instanceof Error ? lookupErr.message : String(lookupErr);
60
+ if (!msg.includes('not found')) {
61
+ throw this._wrapError(lookupErr, 'openChannel', 'lookup');
62
+ }
63
+ }
47
64
  try {
48
65
  const result = await this._sdk.openChannel(this._signer, this._signer.address, participant, this._tokenMint, BigInt(settlementTimeout));
49
66
  return { channelId: result.channelPDA, txHash: result.txSignature };
50
67
  }
51
68
  catch (err) {
69
+ try {
70
+ await this._sdk.getChannelState(pda);
71
+ this._logger.info({ event: 'open_channel_adopt_after_race', channelId: pda, chainId: this.chainId }, 'Initialize failed but channel now exists — adopting');
72
+ return { channelId: pda, txHash: '' };
73
+ }
74
+ catch {
75
+ }
52
76
  throw this._wrapError(err, 'openChannel', 'new');
53
77
  }
54
78
  }