@antseed/payments 0.1.2 → 0.1.4

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 (105) hide show
  1. package/LICENSE +674 -0
  2. package/dist/crypto-context.d.ts +2 -1
  3. package/dist/crypto-context.js +3 -13
  4. package/dist/crypto-context.js.map +1 -1
  5. package/dist/routes.d.ts +1 -0
  6. package/dist/routes.js +132 -20
  7. package/dist/routes.js.map +1 -1
  8. package/dist/server.js +10 -3
  9. package/dist/server.js.map +1 -1
  10. package/dist/web/assets/add-BIV5AyuA.js +15 -0
  11. package/dist/web/assets/all-wallets-EBePThCL.js +6 -0
  12. package/dist/web/assets/app-store-BjklFqDr.js +17 -0
  13. package/dist/web/assets/apple-D1VE8Smb.js +18 -0
  14. package/dist/web/assets/arrow-bottom-ZsiT1L1y.js +8 -0
  15. package/dist/web/assets/arrow-bottom-circle-DKvUi0Ci.js +11 -0
  16. package/dist/web/assets/arrow-left-DqPtSsbQ.js +8 -0
  17. package/dist/web/assets/arrow-right-C-L7Eq7n.js +8 -0
  18. package/dist/web/assets/arrow-top-BsmnE_gW.js +8 -0
  19. package/dist/web/assets/bank-BJyS5lzc.js +14 -0
  20. package/dist/web/assets/basic-GN_iqL6N.js +2128 -0
  21. package/dist/web/assets/browser-CzG38Il3.js +14 -0
  22. package/dist/web/assets/card-BLn7fSRd.js +14 -0
  23. package/dist/web/assets/{ccip-CM_YDd5S.js → ccip-DzXGS3YO.js} +1 -1
  24. package/dist/web/assets/checkmark-LJnZOJkW.js +11 -0
  25. package/dist/web/assets/checkmark-bold-DdCvfZpZ.js +8 -0
  26. package/dist/web/assets/chevron-bottom-fPQSj-LV.js +8 -0
  27. package/dist/web/assets/chevron-left-DxQSFiW8.js +8 -0
  28. package/dist/web/assets/chevron-right-COD1o4NQ.js +8 -0
  29. package/dist/web/assets/chevron-top-B6E8u1u1.js +8 -0
  30. package/dist/web/assets/chrome-store-BVadPKvh.js +61 -0
  31. package/dist/web/assets/clock-CxMPGV40.js +8 -0
  32. package/dist/web/assets/close-BoT-UoFd.js +8 -0
  33. package/dist/web/assets/coinPlaceholder-DTR4YLbx.js +8 -0
  34. package/dist/web/assets/compass-u6DewpdB.js +8 -0
  35. package/dist/web/assets/copy-guqFsruM.js +15 -0
  36. package/dist/web/assets/core-Do4oAjfk.js +908 -0
  37. package/dist/web/assets/cursor-Cyzj71eZ.js +3 -0
  38. package/dist/web/assets/cursor-transparent-b6KJIq15.js +12 -0
  39. package/dist/web/assets/desktop-OTJfzaeI.js +9 -0
  40. package/dist/web/assets/disconnect-DJjKJNIm.js +8 -0
  41. package/dist/web/assets/discord-BfWJZWec.js +17 -0
  42. package/dist/web/assets/etherscan-BRcaU-hR.js +6 -0
  43. package/dist/web/assets/events-DQ172AOg.js +1 -0
  44. package/dist/web/assets/exclamation-triangle-TqYv9OE3.js +4 -0
  45. package/dist/web/assets/extension-Bcq1-Vc9.js +8 -0
  46. package/dist/web/assets/external-link-Dl8906oz.js +8 -0
  47. package/dist/web/assets/facebook-BEGagL0C.js +26 -0
  48. package/dist/web/assets/farcaster-COGce0XN.js +12 -0
  49. package/dist/web/assets/filters-DHDAVWM_.js +8 -0
  50. package/dist/web/assets/github-CHkFHIOw.js +18 -0
  51. package/dist/web/assets/google-BVPM91iU.js +18 -0
  52. package/dist/web/assets/help-circle-JqiWjFOK.js +12 -0
  53. package/dist/web/assets/id-CsrkQOLZ.js +12 -0
  54. package/dist/web/assets/image-DVcW7iXO.js +4 -0
  55. package/dist/web/assets/index-5w7d6cAM.js +1730 -0
  56. package/dist/web/assets/index-9qmOgJOU.js +16 -0
  57. package/dist/web/assets/index-BF417SGJ.js +1 -0
  58. package/dist/web/assets/index-DuvDGHB2.js +47 -0
  59. package/dist/web/assets/index-DzJb2L5K.js +395 -0
  60. package/dist/web/assets/index-kzlEvkEN.js +1 -0
  61. package/dist/web/assets/index.es-CpQtULc3.js +39 -0
  62. package/dist/web/assets/info-BInhAzlq.js +3 -0
  63. package/dist/web/assets/info-circle-BQVRr1po.js +12 -0
  64. package/dist/web/assets/lightbulb-BxxYBMhT.js +3 -0
  65. package/dist/web/assets/mail-D_0lmFKl.js +8 -0
  66. package/dist/web/assets/{metamask-sdk-mx1KHMGY.js → metamask-sdk-DWKTYpSR.js} +15 -15
  67. package/dist/web/assets/mobile-DWLQto9I.js +9 -0
  68. package/dist/web/assets/more-KNa1lBim.js +11 -0
  69. package/dist/web/assets/network-placeholder-BootwA5c.js +14 -0
  70. package/dist/web/assets/nftPlaceholder-DDZ5L7H6.js +8 -0
  71. package/dist/web/assets/off-D0UPLkkK.js +8 -0
  72. package/dist/web/assets/play-store-B_CaXXPp.js +32 -0
  73. package/dist/web/assets/plus-BcvR0JCg.js +13 -0
  74. package/dist/web/assets/qr-code-Txj5hQxm.js +6 -0
  75. package/dist/web/assets/recycle-horizontal-_rXVIasi.js +9 -0
  76. package/dist/web/assets/refresh-CHoOsJ33.js +8 -0
  77. package/dist/web/assets/reown-logo-BHSUfB2F.js +12 -0
  78. package/dist/web/assets/search-BSbqjN1T.js +8 -0
  79. package/dist/web/assets/secp256k1-KHQhI22D.js +1 -0
  80. package/dist/web/assets/secp256k1-bI3F5j6R.js +1 -0
  81. package/dist/web/assets/send-CD2UnMQE.js +15 -0
  82. package/dist/web/assets/swapHorizontal-D8K8GaAT.js +8 -0
  83. package/dist/web/assets/swapHorizontalBold-CQkuydSS.js +8 -0
  84. package/dist/web/assets/swapHorizontalMedium-Di6AKYYk.js +16 -0
  85. package/dist/web/assets/swapHorizontalRoundedBold-Cs0NEdw6.js +8 -0
  86. package/dist/web/assets/swapVertical-BnACgsHa.js +8 -0
  87. package/dist/web/assets/telegram-CItM_Dok.js +16 -0
  88. package/dist/web/assets/three-dots-CWyCBR2N.js +5 -0
  89. package/dist/web/assets/twitch-DlpdSRKl.js +18 -0
  90. package/dist/web/assets/twitterIcon-BIJMMIxn.js +6 -0
  91. package/dist/web/assets/verify-VRzbSjrR.js +8 -0
  92. package/dist/web/assets/verify-filled-CQITc0RR.js +8 -0
  93. package/dist/web/assets/w3m-modal-BUECoo-v.js +642 -0
  94. package/dist/web/assets/wallet-DzucEhgC.js +8 -0
  95. package/dist/web/assets/wallet-placeholder-DDE-TuyH.js +14 -0
  96. package/dist/web/assets/walletconnect-Bz-1NlJ1.js +30 -0
  97. package/dist/web/assets/warning-circle-BkUEJMvU.js +12 -0
  98. package/dist/web/assets/x-iLiJ5bOe.js +12 -0
  99. package/dist/web/index.html +1 -1
  100. package/package.json +20 -21
  101. package/dist/web/assets/connectors-BIqtKyuJ.js +0 -1
  102. package/dist/web/assets/connectors-BkiAkXrA.js +0 -1
  103. package/dist/web/assets/connectors-DAWtxdNk.js +0 -1
  104. package/dist/web/assets/connectors-mXb62Iam.js +0 -1
  105. package/dist/web/assets/index-DMM40kDk.js +0 -1727
@@ -7,7 +7,8 @@ export interface CryptoContext {
7
7
  }
8
8
  export interface PaymentCryptoConfig {
9
9
  rpcUrl: string;
10
- escrowContractAddress: string;
10
+ depositsContractAddress: string;
11
+ channelsContractAddress: string;
11
12
  usdcContractAddress: string;
12
13
  }
13
14
  /**
@@ -1,4 +1,4 @@
1
- import { loadOrCreateIdentity, identityToEvmWallet, identityToEvmAddress } from '@antseed/node';
1
+ import { loadOrCreateIdentity, identityFromPrivateKeyHex } from '@antseed/node';
2
2
  /**
3
3
  * Load crypto context from either ANTSEED_IDENTITY_HEX env var
4
4
  * or from the data directory's identity file.
@@ -6,23 +6,13 @@ import { loadOrCreateIdentity, identityToEvmWallet, identityToEvmAddress } from
6
6
  export async function loadCryptoContext(options) {
7
7
  let identity;
8
8
  if (options.identityHex) {
9
- // Desktop passes the decrypted identity hex via env var
10
- const { hexToBytes, bytesToHex } = await import('@antseed/node');
11
- const ed = await import('@noble/ed25519');
12
- const { sha512 } = await import('@noble/hashes/sha512');
13
- ed.etc.sha512Sync = (...m) => sha512(ed.etc.concatBytes(...m));
14
- const privateKey = hexToBytes(options.identityHex);
15
- const publicKey = ed.getPublicKey(privateKey);
16
- const peerId = bytesToHex(publicKey);
17
- identity = { peerId, privateKey, publicKey };
9
+ identity = identityFromPrivateKeyHex(options.identityHex);
18
10
  }
19
11
  else {
20
12
  const { homedir } = await import('node:os');
21
13
  const dataDir = options.dataDir || `${homedir()}/.antseed`;
22
14
  identity = await loadOrCreateIdentity(dataDir);
23
15
  }
24
- const wallet = identityToEvmWallet(identity);
25
- const evmAddress = identityToEvmAddress(identity);
26
- return { identity, wallet, evmAddress };
16
+ return { identity, wallet: identity.wallet, evmAddress: identity.wallet.address };
27
17
  }
28
18
  //# sourceMappingURL=crypto-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-context.js","sourceRoot":"","sources":["../src/crypto-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAgBhG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAGvC;IACC,IAAI,QAAkB,CAAC;IAEvB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,wDAAwD;QACxD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxD,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAuB,CAAC;QAC3D,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,OAAO,EAAE,WAAW,CAAC;QAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"crypto-context.js","sourceRoot":"","sources":["../src/crypto-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAiBhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAGvC;IACC,IAAI,QAAkB,CAAC;IAEvB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,OAAO,EAAE,WAAW,CAAC;QAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACpF,CAAC"}
package/dist/routes.d.ts CHANGED
@@ -5,6 +5,7 @@ interface RouteContext {
5
5
  cryptoCtx: CryptoContext | null;
6
6
  cryptoConfig: PaymentCryptoConfig;
7
7
  chainConfig: ChainConfig;
8
+ proxyPort: number;
8
9
  }
9
10
  export declare function registerRoutes(fastify: FastifyInstance, ctx: RouteContext): void;
10
11
  export {};
package/dist/routes.js CHANGED
@@ -1,21 +1,31 @@
1
- import { BaseEscrowClient, formatUsdc, parseUsdc } from '@antseed/node';
1
+ import { ChannelsClient, DepositsClient, formatUsdc, parseUsdc, signSetOperator, makeDepositsDomain } from '@antseed/node';
2
2
  // Use shared utilities from @antseed/node
3
3
  const formatUsdc6 = formatUsdc;
4
4
  const parseUsdc6 = parseUsdc;
5
5
  function createClient(config) {
6
- return new BaseEscrowClient({
6
+ return new DepositsClient({
7
7
  rpcUrl: config.rpcUrl,
8
- contractAddress: config.escrowContractAddress,
8
+ contractAddress: config.depositsContractAddress,
9
9
  usdcAddress: config.usdcContractAddress,
10
10
  });
11
11
  }
12
12
  export function registerRoutes(fastify, ctx) {
13
- // Shared escrow client — reused across requests (stateless, only holds RPC URL + ABI)
14
- let escrowClient = null;
13
+ // Shared deposits client — reused across requests (stateless, only holds RPC URL + ABI)
14
+ let depositsClient = null;
15
15
  function getClient() {
16
- if (!escrowClient)
17
- escrowClient = createClient(ctx.cryptoConfig);
18
- return escrowClient;
16
+ if (!depositsClient)
17
+ depositsClient = createClient(ctx.cryptoConfig);
18
+ return depositsClient;
19
+ }
20
+ let channelsClient = null;
21
+ function getChannelsClient() {
22
+ if (!channelsClient) {
23
+ channelsClient = new ChannelsClient({
24
+ rpcUrl: ctx.cryptoConfig.rpcUrl,
25
+ contractAddress: ctx.cryptoConfig.channelsContractAddress,
26
+ });
27
+ }
28
+ return channelsClient;
19
29
  }
20
30
  fastify.get('/api/balance', async (_request, reply) => {
21
31
  if (!ctx.cryptoCtx) {
@@ -32,7 +42,6 @@ export function registerRoutes(fastify, ctx) {
32
42
  available: formatUsdc6(balance.available),
33
43
  reserved: formatUsdc6(balance.reserved),
34
44
  total: formatUsdc6(balance.available + balance.reserved),
35
- pendingWithdrawal: formatUsdc6(balance.pendingWithdrawal),
36
45
  creditLimit: formatUsdc6(creditLimit),
37
46
  };
38
47
  }
@@ -45,7 +54,8 @@ export function registerRoutes(fastify, ctx) {
45
54
  chainId: ctx.chainConfig.chainId,
46
55
  evmChainId: ctx.chainConfig.evmChainId,
47
56
  rpcUrl: ctx.cryptoConfig.rpcUrl,
48
- escrowContractAddress: ctx.cryptoConfig.escrowContractAddress,
57
+ depositsContractAddress: ctx.cryptoConfig.depositsContractAddress,
58
+ channelsContractAddress: ctx.cryptoConfig.channelsContractAddress,
49
59
  usdcContractAddress: ctx.cryptoConfig.usdcContractAddress,
50
60
  evmAddress: ctx.cryptoCtx?.evmAddress ?? null,
51
61
  };
@@ -54,7 +64,7 @@ export function registerRoutes(fastify, ctx) {
54
64
  // TODO: Read deposit/withdrawal events from on-chain logs
55
65
  return { transactions: [] };
56
66
  });
57
- fastify.post('/api/withdraw/request', async (request, reply) => {
67
+ fastify.post('/api/withdraw', async (request, reply) => {
58
68
  if (!ctx.cryptoCtx) {
59
69
  return reply.status(503).send({ ok: false, error: 'Identity not configured — run antseed init' });
60
70
  }
@@ -66,34 +76,136 @@ export function registerRoutes(fastify, ctx) {
66
76
  try {
67
77
  const baseUnits = parseUsdc6(amount);
68
78
  const client = getClient();
69
- const txHash = await client.requestWithdrawal(ctx.cryptoCtx.wallet, baseUnits);
79
+ const txHash = await client.withdraw(ctx.cryptoCtx.wallet, ctx.cryptoCtx.evmAddress, baseUnits);
70
80
  return { ok: true, txHash };
71
81
  }
72
82
  catch (err) {
73
83
  return reply.status(500).send({ ok: false, error: err instanceof Error ? err.message : String(err) });
74
84
  }
75
85
  });
76
- fastify.post('/api/withdraw/execute', async (_request, reply) => {
86
+ fastify.get('/api/channels', async (_request, _reply) => {
87
+ if (!ctx.cryptoCtx) {
88
+ return { channels: [], history: [] };
89
+ }
90
+ // Fetch channels from the buyer proxy's local ChannelStore via its
91
+ // control-plane endpoint (source of truth for the list). Avoids
92
+ // eth_getLogs scans which are capped on public RPCs. Then enrich each
93
+ // channel with a point-read against channels(bytes32) to get the
94
+ // authoritative on-chain status + closeRequestedAt, and split into
95
+ // active vs history based on on-chain state.
96
+ try {
97
+ const url = `http://127.0.0.1:${ctx.proxyPort}/_antseed/channels?all=1`;
98
+ const resp = await fetch(url);
99
+ if (!resp.ok) {
100
+ fastify.log.warn(`[/api/channels] buyer proxy returned ${resp.status}`);
101
+ return { channels: [], history: [] };
102
+ }
103
+ const body = await resp.json();
104
+ // Initialize the channels client outside the enrichment loop and catch
105
+ // init failures independently — a bad RPC URL must not discard the
106
+ // channel list we already have from the buyer proxy.
107
+ let cc = null;
108
+ try {
109
+ cc = getChannelsClient();
110
+ }
111
+ catch (err) {
112
+ fastify.log.warn(`[/api/channels] channels client init failed: ${err instanceof Error ? err.message : String(err)}`);
113
+ }
114
+ const rawChannels = body.channels ?? [];
115
+ // Cap concurrent eth_call fan-out. Public RPCs rate-limit concurrent
116
+ // reads — the default wagmi primary (publicnode) was picked for 3/3
117
+ // reliability at 3 concurrent eth_calls; more than that and responses
118
+ // start coming back stale, which would resurrect the exact bug this
119
+ // PR fixes (status=1 / closeRequestedAt=0 placeholders).
120
+ const ON_CHAIN_READ_CONCURRENCY = 3;
121
+ const enriched = new Array(rawChannels.length);
122
+ let cursor = 0;
123
+ async function worker() {
124
+ while (true) {
125
+ const i = cursor++;
126
+ if (i >= rawChannels.length)
127
+ return;
128
+ const c = rawChannels[i];
129
+ let closeRequestedAt = 0;
130
+ let onchainStatus = 0; // 0=None, 1=Active, 2=Settled, 3=TimedOut
131
+ let onchainSettled = null;
132
+ if (cc) {
133
+ try {
134
+ const onchain = await cc.getSession(c.channelId);
135
+ closeRequestedAt = Number(onchain.closeRequestedAt);
136
+ onchainStatus = onchain.status;
137
+ onchainSettled = onchain.settled;
138
+ }
139
+ catch (err) {
140
+ fastify.log.warn(`[/api/channels] on-chain read failed for ${c.channelId.slice(0, 10)}: ${err instanceof Error ? err.message : String(err)}`);
141
+ }
142
+ }
143
+ enriched[i] = {
144
+ channelId: c.channelId,
145
+ seller: c.seller,
146
+ deposit: formatUsdc6(BigInt(c.reserveMax)),
147
+ settled: formatUsdc6(onchainSettled ?? BigInt(c.cumulativeSigned)),
148
+ deadline: c.deadline,
149
+ closeRequestedAt,
150
+ status: onchainStatus,
151
+ };
152
+ }
153
+ }
154
+ const workers = Array.from({ length: Math.min(ON_CHAIN_READ_CONCURRENCY, rawChannels.length) }, () => worker());
155
+ await Promise.all(workers);
156
+ // Active = on-chain status Active (1). Everything else is history
157
+ // (Settled=2, TimedOut=3, None=0 means the channel no longer exists
158
+ // on-chain — e.g., withdrawn and cleared).
159
+ const channels = enriched.filter((c) => c.status === 1);
160
+ const history = enriched.filter((c) => c.status !== 1);
161
+ return { channels, history };
162
+ }
163
+ catch (err) {
164
+ fastify.log.warn(`[/api/channels] buyer proxy unreachable: ${err instanceof Error ? err.message : String(err)}`);
165
+ return { channels: [], history: [] };
166
+ }
167
+ });
168
+ fastify.get('/api/operator', async (_request, reply) => {
77
169
  if (!ctx.cryptoCtx) {
78
170
  return reply.status(503).send({ ok: false, error: 'Identity not configured — run antseed init' });
79
171
  }
80
172
  try {
81
173
  const client = getClient();
82
- const txHash = await client.executeWithdrawal(ctx.cryptoCtx.wallet);
83
- return { ok: true, txHash };
174
+ if (!client) {
175
+ return { operator: '0x0000000000000000000000000000000000000000', nonce: 0 };
176
+ }
177
+ const buyerAddress = ctx.cryptoCtx.evmAddress;
178
+ const [operator, nonce] = await Promise.all([
179
+ client.getOperator(buyerAddress),
180
+ client.getOperatorNonce(buyerAddress),
181
+ ]);
182
+ return { operator, nonce: Number(nonce) };
84
183
  }
85
184
  catch (err) {
86
185
  return reply.status(500).send({ ok: false, error: err instanceof Error ? err.message : String(err) });
87
186
  }
88
187
  });
89
- fastify.post('/api/withdraw/cancel', async (_request, reply) => {
188
+ fastify.post('/api/operator/sign', async (request, reply) => {
90
189
  if (!ctx.cryptoCtx) {
91
- return reply.status(503).send({ ok: false, error: 'Identity not configured — run antseed init' });
190
+ return reply.status(503).send({ ok: false, error: 'Identity not configured' });
191
+ }
192
+ const body = request.body;
193
+ const operator = body?.operator?.trim();
194
+ if (!operator || !/^0x[0-9a-fA-F]{40}$/.test(operator)) {
195
+ return reply.status(400).send({ ok: false, error: 'Invalid operator address' });
92
196
  }
93
197
  try {
94
- const client = getClient();
95
- const txHash = await client.cancelWithdrawal(ctx.cryptoCtx.wallet);
96
- return { ok: true, txHash };
198
+ const dc = getClient();
199
+ if (!dc) {
200
+ return reply.status(503).send({ ok: false, error: 'Deposits contract not configured' });
201
+ }
202
+ const nonce = await dc.getOperatorNonce(ctx.cryptoCtx.evmAddress);
203
+ const domain = makeDepositsDomain(ctx.chainConfig.evmChainId, ctx.cryptoConfig.depositsContractAddress);
204
+ const signature = await signSetOperator(ctx.cryptoCtx.wallet, domain, {
205
+ operator,
206
+ nonce,
207
+ });
208
+ return { ok: true, signature, nonce: Number(nonce), buyer: ctx.cryptoCtx.evmAddress };
97
209
  }
98
210
  catch (err) {
99
211
  return reply.status(500).send({ ok: false, error: err instanceof Error ? err.message : String(err) });
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -56,6 +56,7 @@ export async function createServer(options) {
56
56
  }
57
57
  // Resolve chain config: protocol defaults + user overrides from config.json
58
58
  let userOverrides = {};
59
+ let proxyPort = 8377;
59
60
  try {
60
61
  const cfgPath = options.dataDir
61
62
  ? path.join(options.dataDir, 'config.json')
@@ -64,6 +65,10 @@ export async function createServer(options) {
64
65
  const config = JSON.parse(raw);
65
66
  const payments = (config.payments ?? {});
66
67
  userOverrides = (payments.crypto ?? {});
68
+ const buyer = (config.buyer ?? {});
69
+ if (typeof buyer.proxyPort === 'number') {
70
+ proxyPort = buyer.proxyPort;
71
+ }
67
72
  }
68
73
  catch {
69
74
  // No config file — use protocol defaults
@@ -71,15 +76,17 @@ export async function createServer(options) {
71
76
  const chainConfig = resolveChainConfig({
72
77
  chainId: userOverrides.chainId,
73
78
  rpcUrl: userOverrides.rpcUrl,
74
- escrowContractAddress: userOverrides.escrowContractAddress,
79
+ depositsContractAddress: userOverrides.depositsContractAddress,
80
+ channelsContractAddress: userOverrides.channelsContractAddress,
75
81
  usdcContractAddress: userOverrides.usdcContractAddress,
76
82
  });
77
83
  const cryptoConfig = {
78
84
  rpcUrl: chainConfig.rpcUrl,
79
- escrowContractAddress: chainConfig.escrowContractAddress,
85
+ depositsContractAddress: chainConfig.depositsContractAddress,
86
+ channelsContractAddress: chainConfig.channelsContractAddress,
80
87
  usdcContractAddress: chainConfig.usdcContractAddress,
81
88
  };
82
- registerRoutes(fastify, { cryptoCtx, cryptoConfig, chainConfig });
89
+ registerRoutes(fastify, { cryptoCtx, cryptoConfig, chainConfig, proxyPort });
83
90
  // SPA fallback — only if static files are available
84
91
  if (staticRegistered) {
85
92
  fastify.setNotFoundHandler((request, reply) => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const e=o`<svg
2
+ width="14"
3
+ height="14"
4
+ viewBox="0 0 14 14"
5
+ fill="none"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <path
9
+ fill="currentColor"
10
+ fill-rule="evenodd"
11
+ clip-rule="evenodd"
12
+ d="M7.0023 0.875C7.48571 0.875 7.8776 1.26675 7.8776 1.75V6.125H12.2541C12.7375 6.125 13.1294 6.51675 13.1294 7C13.1294 7.48325 12.7375 7.875 12.2541 7.875H7.8776V12.25C7.8776 12.7332 7.48571 13.125 7.0023 13.125C6.51889 13.125 6.12701 12.7332 6.12701 12.25V7.875H1.75054C1.26713 7.875 0.875244 7.48325 0.875244 7C0.875244 6.51675 1.26713 6.125 1.75054 6.125H6.12701V1.75C6.12701 1.26675 6.51889 0.875 7.0023 0.875Z"
13
+ fill="#667dff"
14
+ /></svg
15
+ >`;export{e as addSvg};
@@ -0,0 +1,6 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const r=o`<svg fill="none" viewBox="0 0 24 24">
2
+ <path
3
+ style="fill: var(--wui-color-accent-100);"
4
+ d="M10.2 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM10.2 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0Z"
5
+ />
6
+ </svg>`;export{r as allWalletsSvg};
@@ -0,0 +1,17 @@
1
+ import{w as t}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const e=t`
2
+ <svg width="36" height="36">
3
+ <path
4
+ d="M28.724 0H7.271A7.269 7.269 0 0 0 0 7.272v21.46A7.268 7.268 0 0 0 7.271 36H28.73A7.272 7.272 0 0 0 36 28.728V7.272A7.275 7.275 0 0 0 28.724 0Z"
5
+ fill="url(#a)"
6
+ />
7
+ <path
8
+ d="m17.845 8.271.729-1.26a1.64 1.64 0 1 1 2.843 1.638l-7.023 12.159h5.08c1.646 0 2.569 1.935 1.853 3.276H6.434a1.632 1.632 0 0 1-1.638-1.638c0-.909.73-1.638 1.638-1.638h4.176l5.345-9.265-1.67-2.898a1.642 1.642 0 0 1 2.844-1.638l.716 1.264Zm-6.317 17.5-1.575 2.732a1.64 1.64 0 1 1-2.844-1.638l1.17-2.025c1.323-.41 2.398-.095 3.249.931Zm13.56-4.954h4.262c.909 0 1.638.729 1.638 1.638 0 .909-.73 1.638-1.638 1.638h-2.367l1.597 2.772c.45.788.185 1.782-.602 2.241a1.642 1.642 0 0 1-2.241-.603c-2.69-4.666-4.711-8.159-6.052-10.485-1.372-2.367-.391-4.743.576-5.549 1.075 1.846 2.682 4.631 4.828 8.348Z"
9
+ fill="#fff"
10
+ />
11
+ <defs>
12
+ <linearGradient id="a" x1="18" y1="0" x2="18" y2="36" gradientUnits="userSpaceOnUse">
13
+ <stop stop-color="#18BFFB" />
14
+ <stop offset="1" stop-color="#2072F3" />
15
+ </linearGradient>
16
+ </defs>
17
+ </svg>`;export{e as appStoreSvg};
@@ -0,0 +1,18 @@
1
+ import{w as i}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const c=i`<svg fill="none" viewBox="0 0 40 40">
2
+ <g clip-path="url(#a)">
3
+ <g clip-path="url(#b)">
4
+ <circle cx="20" cy="19.89" r="20" fill="#000" />
5
+ <g clip-path="url(#c)">
6
+ <path
7
+ fill="#fff"
8
+ d="M28.77 23.3c-.69 1.99-2.75 5.52-4.87 5.56-1.4.03-1.86-.84-3.46-.84-1.61 0-2.12.81-3.45.86-2.25.1-5.72-5.1-5.72-9.62 0-4.15 2.9-6.2 5.42-6.25 1.36-.02 2.64.92 3.47.92.83 0 2.38-1.13 4.02-.97.68.03 2.6.28 3.84 2.08-3.27 2.14-2.76 6.61.75 8.25ZM24.2 7.88c-2.47.1-4.49 2.69-4.2 4.84 2.28.17 4.47-2.39 4.2-4.84Z"
9
+ />
10
+ </g>
11
+ </g>
12
+ </g>
13
+ <defs>
14
+ <clipPath id="a"><rect width="40" height="40" fill="#fff" rx="20" /></clipPath>
15
+ <clipPath id="b"><path fill="#fff" d="M0 0h40v40H0z" /></clipPath>
16
+ <clipPath id="c"><path fill="#fff" d="M8 7.89h24v24H8z" /></clipPath>
17
+ </defs>
18
+ </svg>`;export{c as appleSvg};
@@ -0,0 +1,8 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 14 15">
2
+ <path
3
+ fill="currentColor"
4
+ fill-rule="evenodd"
5
+ d="M7 1.99a1 1 0 0 1 1 1v7.58l2.46-2.46a1 1 0 0 1 1.41 1.42L7.7 13.69a1 1 0 0 1-1.41 0L2.12 9.53A1 1 0 0 1 3.54 8.1L6 10.57V3a1 1 0 0 1 1-1Z"
6
+ clip-rule="evenodd"
7
+ />
8
+ </svg>`;export{i as arrowBottomSvg};
@@ -0,0 +1,11 @@
1
+ import{w as C}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const i=C`<svg
2
+ fill="none"
3
+ viewBox="0 0 21 20"
4
+ >
5
+ <path
6
+ fill="currentColor"
7
+ fill-rule="evenodd"
8
+ d="M10.5 2.42908C6.31875 2.42908 2.92859 5.81989 2.92859 10.0034C2.92859 14.1869 6.31875 17.5777 10.5 17.5777C14.6813 17.5777 18.0714 14.1869 18.0714 10.0034C18.0714 5.81989 14.6813 2.42908 10.5 2.42908ZM0.928589 10.0034C0.928589 4.71596 5.21355 0.429077 10.5 0.429077C15.7865 0.429077 20.0714 4.71596 20.0714 10.0034C20.0714 15.2908 15.7865 19.5777 10.5 19.5777C5.21355 19.5777 0.928589 15.2908 0.928589 10.0034ZM10.5 5.75003C11.0523 5.75003 11.5 6.19774 11.5 6.75003L11.5 10.8343L12.7929 9.54137C13.1834 9.15085 13.8166 9.15085 14.2071 9.54137C14.5976 9.9319 14.5976 10.5651 14.2071 10.9556L11.2071 13.9556C10.8166 14.3461 10.1834 14.3461 9.79291 13.9556L6.79291 10.9556C6.40239 10.5651 6.40239 9.9319 6.79291 9.54137C7.18343 9.15085 7.8166 9.15085 8.20712 9.54137L9.50002 10.8343L9.50002 6.75003C9.50002 6.19774 9.94773 5.75003 10.5 5.75003Z"
9
+ clip-rule="evenodd"
10
+ /></svg
11
+ >`;export{i as arrowBottomCircleSvg};
@@ -0,0 +1,8 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
2
+ <path
3
+ fill="currentColor"
4
+ fill-rule="evenodd"
5
+ d="M13 7.99a1 1 0 0 1-1 1H4.4l2.46 2.46a1 1 0 1 1-1.41 1.41L1.29 8.7a1 1 0 0 1 0-1.41L5.46 3.1a1 1 0 0 1 1.41 1.42L4.41 6.99H12a1 1 0 0 1 1 1Z"
6
+ clip-rule="evenodd"
7
+ />
8
+ </svg>`;export{t as arrowLeftSvg};
@@ -0,0 +1,8 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
2
+ <path
3
+ fill="currentColor"
4
+ fill-rule="evenodd"
5
+ d="M1 7.99a1 1 0 0 1 1-1h7.58L7.12 4.53A1 1 0 1 1 8.54 3.1l4.16 4.17a1 1 0 0 1 0 1.41l-4.16 4.17a1 1 0 1 1-1.42-1.41l2.46-2.46H2a1 1 0 0 1-1-1Z"
6
+ clip-rule="evenodd"
7
+ />
8
+ </svg>`;export{t as arrowRightSvg};
@@ -0,0 +1,8 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
2
+ <path
3
+ fill="currentColor"
4
+ fill-rule="evenodd"
5
+ d="M7 13.99a1 1 0 0 1-1-1V5.4L3.54 7.86a1 1 0 0 1-1.42-1.41L6.3 2.28a1 1 0 0 1 1.41 0l4.17 4.17a1 1 0 1 1-1.41 1.41L8 5.4v7.59a1 1 0 0 1-1 1Z"
6
+ clip-rule="evenodd"
7
+ />
8
+ </svg>`;export{p as arrowTopSvg};
@@ -0,0 +1,14 @@
1
+ import{w as o}from"./core-Do4oAjfk.js";import"./index-5w7d6cAM.js";import"./index.es-CpQtULc3.js";import"./events-DQ172AOg.js";const l=o`<svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="12"
4
+ height="13"
5
+ viewBox="0 0 12 13"
6
+ fill="none"
7
+ >
8
+ <path
9
+ fill-rule="evenodd"
10
+ clip-rule="evenodd"
11
+ d="M5.61391 1.57124C5.85142 1.42873 6.14813 1.42873 6.38564 1.57124L11.0793 4.38749C11.9179 4.89067 11.5612 6.17864 10.5832 6.17864H9.96398V10.0358H10.2854C10.6996 10.0358 11.0354 10.3716 11.0354 10.7858C11.0354 11.2 10.6996 11.5358 10.2854 11.5358H1.71416C1.29995 11.5358 0.964172 11.2 0.964172 10.7858C0.964172 10.3716 1.29995 10.0358 1.71416 10.0358H2.03558L2.03558 6.17864H1.41637C0.438389 6.17864 0.0816547 4.89066 0.920263 4.38749L5.61391 1.57124ZM3.53554 6.17864V10.0358H5.24979V6.17864H3.53554ZM6.74976 6.17864V10.0358H8.46401V6.17864H6.74976ZM8.64913 4.67864H3.35043L5.99978 3.089L8.64913 4.67864Z"
12
+ fill="currentColor"
13
+ /></svg
14
+ >`;export{l as bankSvg};