paytaca-cli 0.5.1 → 0.6.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 CHANGED
@@ -36,9 +36,13 @@ paytaca wallet create # Generate a new 12-word seed phrase
36
36
  paytaca wallet create --chipnet # Create on chipnet (testnet)
37
37
  paytaca wallet import # Import an existing seed phrase
38
38
  paytaca wallet info # Show wallet hash, address, and balance
39
- paytaca wallet export # Display the stored seed phrase
39
+ paytaca wallet export # Display the stored seed phrase (interactive terminal + biometrics)
40
40
  ```
41
41
 
42
+ > `wallet export` requires an interactive terminal and prompts for biometric
43
+ > authentication (Touch ID, fingerprint, or Windows Hello) when available. It
44
+ > cannot be used from scripts, pipes, or other non-interactive processes.
45
+
42
46
  ### Balance
43
47
 
44
48
  ```bash
@@ -82,7 +82,7 @@ export function registerSwapCommand(program) {
82
82
  ? BigInt(parsedAmount)
83
83
  : BigInt(Math.round(parsedAmount * 10 ** decimals));
84
84
  // Show quote first
85
- const quote = await estimateSwap({ tokenId, direction, amount });
85
+ const quote = await estimateSwap({ tokenId, direction, amount, isChipnet });
86
86
  console.log(chalk.cyan(' Quote:'));
87
87
  for (const line of formatQuote(quote).split('\n')) {
88
88
  console.log(` ${line}`);
@@ -1 +1 @@
1
- {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/commands/swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/commands/swap.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,18 @@
8
8
  */
9
9
  import { Command } from 'commander';
10
10
  export declare function registerWalletCommands(program: Command): void;
11
+ export declare class NonInteractiveTerminalError extends Error {
12
+ }
13
+ /**
14
+ * Refuse to reveal the seed phrase unless the command is attached to a real
15
+ * interactive terminal. This blocks piping, redirection, `echo ... | paytaca`,
16
+ * command substitution, and non-interactive agent execution. Throws (rather
17
+ * than exiting) so callers and tests can handle the refusal.
18
+ */
19
+ export declare function assertInteractiveTerminal(stdinIsTTY: boolean | undefined, stdoutIsTTY: boolean | undefined): void;
20
+ export declare function generateChallenge(): string;
21
+ type BiometricResult = 'ok' | 'denied' | 'unavailable' | 'error';
22
+ export declare function isChallengeAnswerCorrect(challenge: string, answer: string | null): boolean;
23
+ export declare function classifyBiometricOutput(output: string): BiometricResult;
24
+ export {};
11
25
  //# sourceMappingURL=wallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+L7D"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4M7D;AAED,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AAEzD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,WAAW,EAAE,OAAO,GAAG,SAAS,GAC/B,IAAI,CAON;AA6ED,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,KAAK,eAAe,GAAG,IAAI,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAA;AAMhE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAET;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAKvE"}
@@ -8,6 +8,9 @@
8
8
  */
9
9
  import chalk from 'chalk';
10
10
  import * as readline from 'readline';
11
+ import * as os from 'node:os';
12
+ import { randomInt } from 'node:crypto';
13
+ import { spawnSync } from 'node:child_process';
11
14
  import { generateMnemonic, importMnemonic, loadWallet, loadMnemonic, } from '../wallet/index.js';
12
15
  import { getBchUsdPrice, formatUsd } from '../utils/prices.js';
13
16
  export function registerWalletCommands(program) {
@@ -141,13 +144,25 @@ export function registerWalletCommands(program) {
141
144
  // ── wallet export ───────────────────────────────────────────────────
142
145
  wallet
143
146
  .command('export')
144
- .description('Display the stored seed phrase')
145
- .action(() => {
147
+ .description('Display the stored seed phrase (interactive terminal only)')
148
+ .action(async () => {
149
+ try {
150
+ assertInteractiveTerminal(process.stdin.isTTY, process.stdout.isTTY);
151
+ }
152
+ catch (err) {
153
+ console.log(chalk.red(`\n${err.message}\n`));
154
+ process.exit(1);
155
+ }
146
156
  const data = loadMnemonic();
147
157
  if (!data) {
148
158
  console.log(chalk.red('\nNo wallet found. Run `paytaca wallet create` or `paytaca wallet import` first.\n'));
149
159
  process.exit(1);
150
160
  }
161
+ const verified = await promptHumanVerification();
162
+ if (!verified) {
163
+ console.log(chalk.red('\n Verification failed. Seed phrase not shown.\n'));
164
+ process.exit(1);
165
+ }
151
166
  console.log(chalk.yellow.bold('\n WARNING: Do not share your seed phrase with anyone.'));
152
167
  console.log(chalk.yellow(' Anyone with this phrase can access your funds.\n'));
153
168
  const words = data.mnemonic.split(' ');
@@ -157,4 +172,228 @@ export function registerWalletCommands(program) {
157
172
  console.log();
158
173
  });
159
174
  }
175
+ export class NonInteractiveTerminalError extends Error {
176
+ }
177
+ /**
178
+ * Refuse to reveal the seed phrase unless the command is attached to a real
179
+ * interactive terminal. This blocks piping, redirection, `echo ... | paytaca`,
180
+ * command substitution, and non-interactive agent execution. Throws (rather
181
+ * than exiting) so callers and tests can handle the refusal.
182
+ */
183
+ export function assertInteractiveTerminal(stdinIsTTY, stdoutIsTTY) {
184
+ if (!stdinIsTTY || !stdoutIsTTY) {
185
+ throw new NonInteractiveTerminalError('Refusing to export seed phrase: this command must be run directly in an interactive terminal.\n' +
186
+ 'It cannot be piped, redirected, or executed by a non-interactive process.');
187
+ }
188
+ }
189
+ /**
190
+ * Require a live human presence before revealing the seed phrase. Where the OS
191
+ * exposes biometric authentication (macOS Touch ID, Linux fprintd, Windows
192
+ * Hello), that prompt is used and cannot be driven or dismissed by an automated
193
+ * caller. Where biometrics are unavailable, fall back to typing a random
194
+ * one-time code, which non-interactive callers cannot answer.
195
+ */
196
+ async function promptHumanVerification() {
197
+ const biometric = verifyBiometric();
198
+ if (biometric === 'ok') {
199
+ console.log(chalk.green('\n Identity confirmed via biometric authentication.\n'));
200
+ return true;
201
+ }
202
+ if (biometric === 'denied') {
203
+ console.log(chalk.red('\n Biometric authentication failed or was cancelled.\n'));
204
+ return false;
205
+ }
206
+ console.log(chalk.dim(' Biometric authentication not available — falling back to code entry.\n'));
207
+ return promptChallenge();
208
+ }
209
+ function verifyBiometric() {
210
+ switch (process.platform) {
211
+ case 'darwin':
212
+ return verifyTouchId();
213
+ case 'linux':
214
+ return verifyFprintd();
215
+ case 'win32':
216
+ return verifyWindowsHello();
217
+ default:
218
+ return 'unavailable';
219
+ }
220
+ }
221
+ /**
222
+ * Random one-time code the operator must type back. Automated callers cannot
223
+ * read and answer this prompt, even when a pseudo-terminal is allocated.
224
+ */
225
+ async function promptChallenge() {
226
+ const challenge = generateChallenge();
227
+ const timeoutMs = 120_000;
228
+ const rl = readline.createInterface({
229
+ input: process.stdin,
230
+ output: process.stdout,
231
+ });
232
+ console.log(chalk.yellow.bold('\n Human verification required before the seed phrase is revealed.'));
233
+ console.log(chalk.dim(' Type the code below exactly as shown to confirm you are at the terminal.\n'));
234
+ console.log(chalk.cyan.bold(` ${challenge}\n`));
235
+ const answer = await new Promise((resolve) => {
236
+ const timer = setTimeout(() => {
237
+ rl.close();
238
+ resolve(null);
239
+ }, timeoutMs);
240
+ rl.question(' Code: ', (input) => {
241
+ clearTimeout(timer);
242
+ rl.close();
243
+ resolve(input);
244
+ });
245
+ });
246
+ return isChallengeAnswerCorrect(challenge, answer);
247
+ }
248
+ export function generateChallenge() {
249
+ const alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
250
+ const group = () => Array.from({ length: 4 }, () => alphabet[randomInt(alphabet.length)]).join('');
251
+ return `${group()}-${group()}`;
252
+ }
253
+ const BIO_OK = 'PAYTACA_BIO_OK';
254
+ const BIO_FAIL = 'PAYTACA_BIO_FAIL';
255
+ const BIO_UNAVAILABLE = 'PAYTACA_BIO_UNAVAILABLE';
256
+ export function isChallengeAnswerCorrect(challenge, answer) {
257
+ return answer !== null && answer.trim().toUpperCase() === challenge;
258
+ }
259
+ export function classifyBiometricOutput(output) {
260
+ if (output.includes(BIO_UNAVAILABLE))
261
+ return 'unavailable';
262
+ if (output.includes(BIO_FAIL))
263
+ return 'denied';
264
+ if (output.includes(BIO_OK))
265
+ return 'ok';
266
+ return 'error';
267
+ }
268
+ function commandExists(command) {
269
+ const res = spawnSync('sh', ['-c', `command -v ${command}`], { stdio: 'ignore' });
270
+ return res.status === 0;
271
+ }
272
+ // ── macOS: Touch ID via LocalAuthentication ────────────────────────────
273
+ /**
274
+ * JXA script executed by the system `osascript`: bridges to the macOS
275
+ * LocalAuthentication framework and blocks on the native Touch ID prompt.
276
+ * JXA `console.log` writes to stderr (captured below).
277
+ */
278
+ const TOUCH_ID_JXA = `
279
+ ObjC.import('LocalAuthentication')
280
+ ObjC.import('Foundation')
281
+
282
+ const policy = $.LAPolicyDeviceOwnerAuthenticationWithBiometrics
283
+ const ctx = $.LAContext.alloc.init
284
+ const err = $()
285
+
286
+ if (!ctx.canEvaluatePolicyError(policy, err)) {
287
+ console.log('${BIO_UNAVAILABLE}')
288
+ } else {
289
+ let done = false
290
+ let ok = false
291
+ ctx.evaluatePolicyLocalizedReasonReply(
292
+ policy,
293
+ $('Confirm it is you to reveal your Paytaca seed phrase'),
294
+ (success) => {
295
+ ok = Boolean(success)
296
+ done = true
297
+ }
298
+ )
299
+ const deadline = Date.now() + 120000
300
+ while (!done && Date.now() < deadline) {
301
+ $.NSRunLoop.currentRunLoop.runModeBeforeDate(
302
+ $.NSDefaultRunLoopMode,
303
+ $.NSDate.dateWithTimeIntervalSinceNow(0.25)
304
+ )
305
+ }
306
+ console.log(done && ok ? '${BIO_OK}' : '${BIO_FAIL}')
307
+ }
308
+ `;
309
+ function verifyTouchId() {
310
+ const res = spawnSync('osascript', ['-l', 'JavaScript', '-e', TOUCH_ID_JXA], {
311
+ stdio: ['ignore', 'pipe', 'pipe'],
312
+ encoding: 'utf8',
313
+ timeout: 130_000,
314
+ });
315
+ return classifyBiometricOutput(`${res.stderr ?? ''}${res.stdout ?? ''}`);
316
+ }
317
+ // ── Linux: fingerprint verification via fprintd ────────────────────────
318
+ /**
319
+ * `fprintd-verify` reads the physical fingerprint reader over D-Bus and exits
320
+ * 0 only on a match, so an automated caller cannot satisfy it. Enrollment is
321
+ * confirmed first via `fprintd-list` so un-enrolled users fall back to the code
322
+ * challenge rather than being locked out.
323
+ */
324
+ function verifyFprintd() {
325
+ if (!commandExists('fprintd-verify'))
326
+ return 'unavailable';
327
+ if (!commandExists('fprintd-list'))
328
+ return 'unavailable';
329
+ let user;
330
+ try {
331
+ user = os.userInfo().username;
332
+ }
333
+ catch {
334
+ return 'unavailable';
335
+ }
336
+ const enrolled = spawnSync('fprintd-list', [user], {
337
+ stdio: ['ignore', 'pipe', 'pipe'],
338
+ encoding: 'utf8',
339
+ timeout: 15_000,
340
+ });
341
+ if (enrolled.error)
342
+ return 'unavailable';
343
+ const listed = enrolled.stdout ?? '';
344
+ if (!listed.trim() || /no fingerprints enrolled/i.test(listed))
345
+ return 'unavailable';
346
+ const verify = spawnSync('fprintd-verify', [user], {
347
+ stdio: ['ignore', 'pipe', 'pipe'],
348
+ encoding: 'utf8',
349
+ timeout: 60_000,
350
+ });
351
+ if (verify.status === 0)
352
+ return 'ok';
353
+ return 'denied';
354
+ }
355
+ // ── Windows: Windows Hello via UserConsentVerifier ─────────────────────
356
+ /**
357
+ * Calls the WinRT UserConsentVerifier through Windows PowerShell, which shows
358
+ * the native Windows Hello prompt (face / fingerprint / PIN). The async WinRT
359
+ * operation is awaited via System.Runtime.WindowsRuntime.
360
+ */
361
+ const WINDOWS_HELLO_PS = `
362
+ $ErrorActionPreference = 'Stop'
363
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
364
+ try {
365
+ Add-Type -AssemblyName System.Runtime.WindowsRuntime | Out-Null
366
+ $asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object {
367
+ $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation\`1'
368
+ })[0]
369
+ function Await($op, $type) {
370
+ $m = $asTaskGeneric.MakeGenericMethod($type)
371
+ $t = $m.Invoke($null, @($op))
372
+ $t.Wait(-1) | Out-Null
373
+ $t.Result
374
+ }
375
+ $Ucv = [Windows.Security.Credentials.UI.UserConsentVerifier, Windows.Security.Credentials.UI, ContentType = WindowsRuntime]
376
+ $avail = Await ($Ucv::CheckAvailabilityAsync()) ([Windows.Security.Credentials.UI.UserConsentVerifierAvailability])
377
+ if ($avail -ne [Windows.Security.Credentials.UI.UserConsentVerifierAvailability]::Available) {
378
+ Write-Output '${BIO_UNAVAILABLE}'
379
+ } else {
380
+ $res = Await ($Ucv::RequestVerificationAsync('Confirm it is you to reveal your Paytaca seed phrase')) ([Windows.Security.Credentials.UI.UserConsentVerificationResult])
381
+ if ($res -eq [Windows.Security.Credentials.UI.UserConsentVerificationResult]::Verified) {
382
+ Write-Output '${BIO_OK}'
383
+ } else {
384
+ Write-Output '${BIO_FAIL}'
385
+ }
386
+ }
387
+ } catch {
388
+ Write-Output '${BIO_UNAVAILABLE}'
389
+ }
390
+ `;
391
+ function verifyWindowsHello() {
392
+ const res = spawnSync('powershell.exe', ['-NoProfile', '-Command', WINDOWS_HELLO_PS], {
393
+ stdio: ['ignore', 'pipe', 'pipe'],
394
+ encoding: 'utf8',
395
+ timeout: 130_000,
396
+ });
397
+ return classifyBiometricOutput(`${res.stdout ?? ''}${res.stderr ?? ''}`);
398
+ }
160
399
  //# sourceMappingURL=wallet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wallet.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.test.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { assertInteractiveTerminal, NonInteractiveTerminalError, classifyBiometricOutput, generateChallenge, isChallengeAnswerCorrect, } from './wallet.js';
3
+ describe('assertInteractiveTerminal', () => {
4
+ it('allows execution when both stdin and stdout are TTYs', () => {
5
+ expect(() => assertInteractiveTerminal(true, true)).not.toThrow();
6
+ });
7
+ it('refuses when stdin is not a TTY', () => {
8
+ expect(() => assertInteractiveTerminal(undefined, true)).toThrow(NonInteractiveTerminalError);
9
+ });
10
+ it('refuses when stdout is not a TTY', () => {
11
+ expect(() => assertInteractiveTerminal(true, undefined)).toThrow(NonInteractiveTerminalError);
12
+ });
13
+ it('refuses when neither stream is a TTY', () => {
14
+ expect(() => assertInteractiveTerminal(false, false)).toThrow(NonInteractiveTerminalError);
15
+ });
16
+ });
17
+ describe('classifyBiometricOutput', () => {
18
+ it('maps the unavailable token', () => {
19
+ expect(classifyBiometricOutput('PAYTACA_BIO_UNAVAILABLE')).toBe('unavailable');
20
+ });
21
+ it('maps the success token', () => {
22
+ expect(classifyBiometricOutput('PAYTACA_BIO_OK')).toBe('ok');
23
+ });
24
+ it('maps the failure token', () => {
25
+ expect(classifyBiometricOutput('PAYTACA_BIO_FAIL')).toBe('denied');
26
+ });
27
+ it('treats unrecognized output as an error', () => {
28
+ expect(classifyBiometricOutput('')).toBe('error');
29
+ expect(classifyBiometricOutput('some unrelated output')).toBe('error');
30
+ });
31
+ it('lets a failure token win if both fail and ok appear', () => {
32
+ expect(classifyBiometricOutput('PAYTACA_BIO_FAIL\nPAYTACA_BIO_OK')).toBe('denied');
33
+ });
34
+ it('does not confuse the unavailable token with success', () => {
35
+ expect(classifyBiometricOutput('PAYTACA_BIO_UNAVAILABLE')).not.toBe('ok');
36
+ });
37
+ });
38
+ describe('generateChallenge', () => {
39
+ it('produces two 4-character groups from an unambiguous alphabet', () => {
40
+ for (let i = 0; i < 50; i++) {
41
+ const challenge = generateChallenge();
42
+ expect(challenge).toMatch(/^[A-HJ-NP-Z2-9]{4}-[A-HJ-NP-Z2-9]{4}$/);
43
+ }
44
+ });
45
+ it('generates different codes across calls', () => {
46
+ const codes = new Set(Array.from({ length: 50 }, () => generateChallenge()));
47
+ expect(codes.size).toBeGreaterThan(1);
48
+ });
49
+ });
50
+ describe('isChallengeAnswerCorrect', () => {
51
+ const challenge = 'ABCD-2345';
52
+ it('accepts an exact match', () => {
53
+ expect(isChallengeAnswerCorrect(challenge, challenge)).toBe(true);
54
+ });
55
+ it('is case-insensitive and trims surrounding whitespace', () => {
56
+ expect(isChallengeAnswerCorrect(challenge, ' abcd-2345 ')).toBe(true);
57
+ });
58
+ it('rejects a wrong answer', () => {
59
+ expect(isChallengeAnswerCorrect(challenge, 'WXYZ-9876')).toBe(false);
60
+ });
61
+ it('rejects a missing answer (timeout)', () => {
62
+ expect(isChallengeAnswerCorrect(challenge, null)).toBe(false);
63
+ });
64
+ it('rejects an empty answer', () => {
65
+ expect(isChallengeAnswerCorrect(challenge, '')).toBe(false);
66
+ });
67
+ });
68
+ //# sourceMappingURL=wallet.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.test.js","sourceRoot":"","sources":["../../src/commands/wallet.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AAEpB,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAC9D,2BAA2B,CAC5B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,2BAA2B,CAC5B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAC3D,2BAA2B,CAC5B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CACJ,uBAAuB,CAAC,kCAAkC,CAAC,CAC5D,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAA;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAA;QACpE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;QAC5E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,SAAS,GAAG,WAAW,CAAA;IAE7B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -55,4 +55,20 @@ export declare function fetchPoolsForToken(tokenId: string): Promise<ApiPool[]>;
55
55
  * Fetch market + BCMR data for a single token category.
56
56
  */
57
57
  export declare function fetchTokenData(tokenId: string): Promise<CauldronTokenData | undefined>;
58
+ /**
59
+ * Platform fee config served by watchtower.cash
60
+ * (GET /api/cauldron-fee/). A null address means the fee feature is
61
+ * disabled — clients degrade silently (no fee charged).
62
+ */
63
+ export interface PlatformFeeConfig {
64
+ address: string | null;
65
+ /** Fee rate in basis points (30 = 0.3%). */
66
+ feeRateBps: number;
67
+ /** Fee cap in USD, applied against the live BCH price. */
68
+ maxUsd: number;
69
+ }
70
+ /**
71
+ * Fetch the cauldron fee config from watchtower.cash.
72
+ */
73
+ export declare function fetchCauldronFee(isChipnet?: boolean): Promise<PlatformFeeConfig>;
58
74
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE;YACL,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;QACD,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACvC,CAAA;CACF;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AA6BD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAYxC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE;YACL,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;QACD,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACvC,CAAA;CACF;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AA6BD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAYxC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
@@ -4,6 +4,7 @@
4
4
  * Adapted from: paytaca-app/src/wallet/cauldron/api.js, tokens.js,
5
5
  * and pool-tracker.ts. Uses the global fetch API (Node 20+) instead of axios.
6
6
  */
7
+ import { getWatchtowerApiUrl } from '../../utils/network.js';
7
8
  const CAULDRON_INDEXER_BASE_URL = 'https://indexer.riften.net';
8
9
  export class CauldronApiError extends Error {
9
10
  status;
@@ -57,4 +58,30 @@ export async function fetchTokenData(tokenId) {
57
58
  });
58
59
  return Array.isArray(data) ? data[0] : undefined;
59
60
  }
61
+ /**
62
+ * Fetch the cauldron fee config from watchtower.cash.
63
+ */
64
+ export async function fetchCauldronFee(isChipnet = false) {
65
+ const baseUrl = getWatchtowerApiUrl(isChipnet);
66
+ let response;
67
+ try {
68
+ response = await fetch(`${baseUrl}/cauldron-fee/`);
69
+ }
70
+ catch (err) {
71
+ throw new CauldronApiError(`watchtower unreachable: ${err?.message || err}`);
72
+ }
73
+ if (!response.ok) {
74
+ throw new CauldronApiError(`cauldron-fee request failed (${response.status} ${response.statusText})`, response.status);
75
+ }
76
+ const data = await response.json();
77
+ const feeRateBps = Number(data?.fee_rate_bps ?? 30);
78
+ const maxUsd = Number(data?.max_usd ?? 1);
79
+ return {
80
+ address: typeof data?.address === 'string' && data.address !== ''
81
+ ? data.address
82
+ : null,
83
+ feeRateBps: Number.isFinite(feeRateBps) && feeRateBps >= 0 ? feeRateBps : 30,
84
+ maxUsd: Number.isFinite(maxUsd) && maxUsd >= 0 ? maxUsd : 1,
85
+ };
86
+ }
60
87
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,yBAAyB,GAAG,4BAA4B,CAAA;AAwC9D,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAS;IACf,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAED,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,SAAsD,EAAE;IAExD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;IACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,SAAQ;QACnE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,gBAAgB,CAAC,iCAAiC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CACxB,oCAAoC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,EAC7E,QAAQ,CAAC,MAAM,CAChB,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe;IACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAuB,uBAAuB,EAAE;QACxE,KAAK,EAAE,OAAO;KACf,CAAC,CAAA;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,gBAAgB,CAAC,iDAAiD,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC,MAAmB,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe;IAEf,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,qCAAqC,EACrC;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;KACd,CACF,CAAA;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/api.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,11 @@
7
7
  */
8
8
  import { type PoolV0, type TradeResult } from '@cashlab/cauldron';
9
9
  import type { BchWallet } from '../bch.js';
10
- import { type CauldronTokenData } from './api.js';
10
+ import { type PlatformFeeConfig, type CauldronTokenData } from './api.js';
11
+ import { type PlatformFee } from './transact.js';
11
12
  export type SwapDirection = 'buy' | 'sell';
13
+ /** Platform fees below this are not charged at all (P2PKH dust threshold). */
14
+ export declare const PLATFORM_FEE_DUST_LIMIT = 546n;
12
15
  export interface SwapQuote {
13
16
  tokenId: string;
14
17
  tokenData: CauldronTokenData;
@@ -24,6 +27,8 @@ export interface SwapQuote {
24
27
  bchAmount: bigint;
25
28
  /** Trade fee in satoshis. */
26
29
  tradeFee: bigint;
30
+ /** Paytaca platform fee charged on top of the trade (absent = no fee). */
31
+ platformFee?: PlatformFee;
27
32
  }
28
33
  export interface EstimateSwapOpts {
29
34
  /** 64-char hex token category. */
@@ -32,6 +37,8 @@ export interface EstimateSwapOpts {
32
37
  direction: SwapDirection;
33
38
  /** Token amount in base units (sell: amount supplied; buy: amount received). */
34
39
  amount: bigint;
40
+ /** Use chipnet watchtower endpoints for fee config and BCH price. */
41
+ isChipnet?: boolean;
35
42
  }
36
43
  export interface ExecuteSwapOpts extends EstimateSwapOpts {
37
44
  bchWallet: BchWallet;
@@ -45,6 +52,21 @@ export interface SwapResult {
45
52
  error?: string;
46
53
  quote?: SwapQuote;
47
54
  }
55
+ /**
56
+ * Compute the Paytaca platform fee for a trade (mirrors paytaca-app
57
+ * trade.vue: 0.3% of the trade size, capped at max_usd worth of BCH).
58
+ *
59
+ * The fee is charged only when ALL of these hold:
60
+ * - the fee address is configured (feature enabled)
61
+ * - the live BCH price is fetchable (price failure -> no fee)
62
+ * - the computed fee is >= PLATFORM_FEE_DUST_LIMIT (below -> no fee)
63
+ */
64
+ export declare function computePlatformFee(opts: {
65
+ tradeResult: TradeResult;
66
+ isBuyingToken: boolean;
67
+ feeConfig: PlatformFeeConfig;
68
+ bchUsdPrice: number | null;
69
+ }): PlatformFee | null;
48
70
  /**
49
71
  * Estimate a swap: fetch pools + token data and compute the best-rate trade.
50
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAe,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAA;AASjB,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;IAC5B,SAAS,EAAE,aAAa,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;IACxB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,iFAAiF;IACjF,SAAS,EAAE,aAAa,CAAA;IACxB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,CAAC,CA8CpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAwBpD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAkD5E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,SAAS,CAAA;CACjB,sDA+BA"}
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAe,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAG1C,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAA;AAEtB,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAA;AAE1C,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAE3C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;IAC5B,SAAS,EAAE,aAAa,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;IACxB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,iFAAiF;IACjF,SAAS,EAAE,aAAa,CAAA;IACxB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,GAAG,WAAW,GAAG,IAAI,CA2BrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,CAAC,CA8DpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAkCpD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAkD5E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,SAAS,CAAA;CACjB,sDAgCA"}
@@ -8,17 +8,61 @@
8
8
  import { ExchangeLab } from '@cashlab/cauldron';
9
9
  import { binToHex } from '@cashlab/common/libauth.js';
10
10
  import { LibauthHDWallet } from '../keys.js';
11
- import { fetchPoolsForToken, fetchTokenData, } from './api.js';
11
+ import { getBchUsdPrice } from '../../utils/prices.js';
12
+ import { fetchCauldronFee, fetchPoolsForToken, fetchTokenData, } from './api.js';
12
13
  import { apiPoolToMicroPool, microPoolToPoolV0, parseRate } from './pools.js';
13
14
  import { attemptTrade, createInputAndOutput, watchtowerUtxosToSpendableCoins, } from './transact.js';
15
+ /** Platform fees below this are not charged at all (P2PKH dust threshold). */
16
+ export const PLATFORM_FEE_DUST_LIMIT = 546n;
17
+ /**
18
+ * Compute the Paytaca platform fee for a trade (mirrors paytaca-app
19
+ * trade.vue: 0.3% of the trade size, capped at max_usd worth of BCH).
20
+ *
21
+ * The fee is charged only when ALL of these hold:
22
+ * - the fee address is configured (feature enabled)
23
+ * - the live BCH price is fetchable (price failure -> no fee)
24
+ * - the computed fee is >= PLATFORM_FEE_DUST_LIMIT (below -> no fee)
25
+ */
26
+ export function computePlatformFee(opts) {
27
+ const { tradeResult, isBuyingToken, feeConfig, bchUsdPrice } = opts;
28
+ if (!feeConfig.address)
29
+ return null;
30
+ if (bchUsdPrice == null || !isFinite(bchUsdPrice) || bchUsdPrice <= 0) {
31
+ return null;
32
+ }
33
+ const summary = tradeResult.summary;
34
+ // BCH side of the trade, excluding the DEX's own trade fee.
35
+ const tradeSizeSats = (isBuyingToken ? summary.supply : summary.demand) - summary.trade_fee;
36
+ if (tradeSizeSats <= 0n)
37
+ return null;
38
+ const rateBps = BigInt(Math.max(0, Math.round(feeConfig.feeRateBps)));
39
+ let feeSats = tradeSizeSats * rateBps / 10000n;
40
+ // Cap the fee at max_usd worth of BCH at the current price. Computed in
41
+ // bigint space so large caps / tiny prices cannot lose integer precision.
42
+ const maxUsdScaled = BigInt(Math.round(feeConfig.maxUsd * 1e8));
43
+ const priceScaled = BigInt(Math.round(bchUsdPrice * 1e8));
44
+ if (maxUsdScaled <= 0n || priceScaled <= 0n)
45
+ return null;
46
+ const capSats = maxUsdScaled * 100000000n / priceScaled;
47
+ if (capSats <= 0n)
48
+ return null;
49
+ if (feeSats > capSats)
50
+ feeSats = capSats;
51
+ if (feeSats < PLATFORM_FEE_DUST_LIMIT)
52
+ return null;
53
+ return { to: feeConfig.address, amount: feeSats };
54
+ }
14
55
  /**
15
56
  * Estimate a swap: fetch pools + token data and compute the best-rate trade.
16
57
  */
17
58
  export async function estimateSwap(opts) {
18
59
  const { tokenId, direction, amount } = opts;
19
- const [tokenData, apiPools] = await Promise.all([
60
+ const isChipnet = opts.isChipnet ?? false;
61
+ const [tokenData, apiPools, feeConfig] = await Promise.all([
20
62
  fetchTokenData(tokenId),
21
63
  fetchPoolsForToken(tokenId),
64
+ // Fee config failure -> feature off for this swap (degrade silently)
65
+ fetchCauldronFee(isChipnet).catch(() => null),
22
66
  ]);
23
67
  if (!tokenData) {
24
68
  throw new Error(`No cauldron token data found for ${tokenId}`);
@@ -44,6 +88,17 @@ export async function estimateSwap(opts) {
44
88
  ? tradeResult.summary.supply
45
89
  : tradeResult.summary.demand;
46
90
  const decimals = tokenData.bcmr.token.decimals;
91
+ // Platform fee: only when enabled + live price available (no fee otherwise)
92
+ let platformFee = null;
93
+ if (feeConfig) {
94
+ const bchUsdPrice = await getBchUsdPrice(isChipnet).catch(() => null);
95
+ platformFee = computePlatformFee({
96
+ tradeResult,
97
+ isBuyingToken,
98
+ feeConfig,
99
+ bchUsdPrice,
100
+ });
101
+ }
47
102
  return {
48
103
  tokenId,
49
104
  tokenData,
@@ -55,6 +110,7 @@ export async function estimateSwap(opts) {
55
110
  tokenAmount,
56
111
  bchAmount,
57
112
  tradeFee: tradeResult.summary.trade_fee,
113
+ ...(platformFee ? { platformFee } : {}),
58
114
  };
59
115
  }
60
116
  /**
@@ -67,21 +123,32 @@ export function formatQuote(quote) {
67
123
  const tokenFormatted = (Number(tokenAmount) / 10 ** decimals).toFixed(decimals);
68
124
  const bchFormatted = (Number(bchAmount) / 10 ** 8).toFixed(8);
69
125
  const feeFormatted = (Number(tradeFee) / 10 ** 8).toFixed(8);
126
+ let platformFeeLine = null;
127
+ if (quote.platformFee) {
128
+ const feeFormattedPlatform = (Number(quote.platformFee.amount) / 10 ** 8).toFixed(8);
129
+ platformFeeLine = `Platform fee: ~${feeFormattedPlatform} BCH`;
130
+ }
70
131
  if (direction === 'sell') {
71
132
  // Rate semantics (matches paytaca-app): '1 {demandSymbol} ≈ {rate} {supplySymbol}'.
72
133
  // Selling tokens → demand is BCH, rate is tokens-per-BCH.
73
- return [
134
+ const lines = [
74
135
  `Sell ${tokenFormatted} ${tokenSymbol} for ${bchFormatted} BCH`,
75
136
  `Rate: 1 BCH ≈ ${rate} ${tokenSymbol}`,
76
137
  `Trade fee: ~${feeFormatted} BCH`,
77
- ].join('\n');
138
+ ];
139
+ if (platformFeeLine)
140
+ lines.push(platformFeeLine);
141
+ return lines.join('\n');
78
142
  }
79
143
  // Buying tokens → demand is the token, rate is BCH-per-token.
80
- return [
144
+ const lines = [
81
145
  `Buy ${tokenFormatted} ${tokenSymbol} for ${bchFormatted} BCH`,
82
146
  `Rate: 1 ${tokenSymbol} ≈ ${rate} BCH`,
83
147
  `Trade fee: ~${feeFormatted} BCH`,
84
- ].join('\n');
148
+ ];
149
+ if (platformFeeLine)
150
+ lines.push(platformFeeLine);
151
+ return lines.join('\n');
85
152
  }
86
153
  /**
87
154
  * Execute a swap: build + sign the trade transaction and broadcast it.
@@ -148,6 +215,7 @@ export async function buildSignedTradeTx(opts) {
148
215
  const { inputCoins, payouts } = createInputAndOutput({
149
216
  tradeResult: quote.tradeResult,
150
217
  spendableCoins,
218
+ platformFee: quote.platformFee,
151
219
  });
152
220
  const exlab = new ExchangeLab();
153
221
  const tradeTx = exlab.createTradeTx(quote.tradeResult.entries, inputCoins, payouts, null, 1n);
@@ -1 +1 @@
1
- {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=swap.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.test.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,179 @@
1
+ import { afterEach, describe, it, expect, vi } from 'vitest';
2
+ import { computePlatformFee, formatQuote, PLATFORM_FEE_DUST_LIMIT } from './swap.js';
3
+ import { fetchCauldronFee } from './api.js';
4
+ const FEE_ADDRESS = 'bitcoincash:qp9szr5k40z88m5jhmpytqt8pq5zfz0yvcs7q5lef7';
5
+ function fakeTradeResult(summary) {
6
+ return {
7
+ entries: [],
8
+ summary: { ...summary, rate: 0n },
9
+ };
10
+ }
11
+ const feeConfig = {
12
+ address: FEE_ADDRESS,
13
+ feeRateBps: 30,
14
+ maxUsd: 1,
15
+ };
16
+ describe('computePlatformFee', () => {
17
+ it('charges 0.3% of (demand - trade_fee) on sells', () => {
18
+ // 999_000 sats * 30/10000 = 2_997 sats; cap at $500/BCH = 200_000 sats
19
+ const fee = computePlatformFee({
20
+ tradeResult: fakeTradeResult({ supply: 500000n, demand: 1000000n, trade_fee: 1000n }),
21
+ isBuyingToken: false,
22
+ feeConfig,
23
+ bchUsdPrice: 500,
24
+ });
25
+ expect(fee).toEqual({ to: FEE_ADDRESS, amount: 2997n });
26
+ });
27
+ it('charges 0.3% of (supply - trade_fee) on buys', () => {
28
+ const fee = computePlatformFee({
29
+ tradeResult: fakeTradeResult({ supply: 2000000n, demand: 1000000n, trade_fee: 2000n }),
30
+ isBuyingToken: true,
31
+ feeConfig,
32
+ bchUsdPrice: 500,
33
+ });
34
+ // 1_998_000 * 30/10000 = 5_994
35
+ expect(fee?.amount).toBe(5994n);
36
+ });
37
+ it('caps the fee at max_usd worth of BCH at the current price', () => {
38
+ // 4 BCH trade -> 0.3% = 1_200_000 sats; $1 at $100/BCH = 1_000_000 sats
39
+ const fee = computePlatformFee({
40
+ tradeResult: fakeTradeResult({ supply: 400000000n, demand: 1n, trade_fee: 0n }),
41
+ isBuyingToken: true,
42
+ feeConfig,
43
+ bchUsdPrice: 100,
44
+ });
45
+ expect(fee?.amount).toBe(1000000n);
46
+ });
47
+ it('does not cap when 0.3% is below the cap', () => {
48
+ // 1 BCH trade -> 0.3% = 300_000 sats < cap 1_000_000 sats
49
+ const fee = computePlatformFee({
50
+ tradeResult: fakeTradeResult({ supply: 100000000n, demand: 1n, trade_fee: 0n }),
51
+ isBuyingToken: true,
52
+ feeConfig,
53
+ bchUsdPrice: 100,
54
+ });
55
+ expect(fee?.amount).toBe(300000n);
56
+ });
57
+ it('does not charge below the dust limit', () => {
58
+ // 100_000 sats * 1bp/10000 = 10 sats < 546 -> no fee at all
59
+ const fee = computePlatformFee({
60
+ tradeResult: fakeTradeResult({ supply: 100000n, demand: 1n, trade_fee: 0n }),
61
+ isBuyingToken: true,
62
+ feeConfig: { ...feeConfig, feeRateBps: 1 },
63
+ bchUsdPrice: 100,
64
+ });
65
+ expect(fee).toBeNull();
66
+ });
67
+ it('returns null when no fee address is configured', () => {
68
+ const fee = computePlatformFee({
69
+ tradeResult: fakeTradeResult({ supply: 100000000n, demand: 1n, trade_fee: 0n }),
70
+ isBuyingToken: true,
71
+ feeConfig: { ...feeConfig, address: null },
72
+ bchUsdPrice: 100,
73
+ });
74
+ expect(fee).toBeNull();
75
+ });
76
+ it('returns null when the BCH price is unavailable (no fee on price failure)', () => {
77
+ const fee = computePlatformFee({
78
+ tradeResult: fakeTradeResult({ supply: 100000000n, demand: 1n, trade_fee: 0n }),
79
+ isBuyingToken: true,
80
+ feeConfig,
81
+ bchUsdPrice: null,
82
+ });
83
+ expect(fee).toBeNull();
84
+ });
85
+ it('returns null for non-positive BCH prices', () => {
86
+ const fee = computePlatformFee({
87
+ tradeResult: fakeTradeResult({ supply: 100000000n, demand: 1n, trade_fee: 0n }),
88
+ isBuyingToken: true,
89
+ feeConfig,
90
+ bchUsdPrice: 0,
91
+ });
92
+ expect(fee).toBeNull();
93
+ });
94
+ it('returns null when a tiny price makes the cap itself dust', () => {
95
+ const fee = computePlatformFee({
96
+ tradeResult: fakeTradeResult({ supply: 100000000n, demand: 1n, trade_fee: 0n }),
97
+ isBuyingToken: true,
98
+ feeConfig,
99
+ bchUsdPrice: 1_000_000_000,
100
+ });
101
+ // cap = floor(1/1e9 * 1e8) = 0 sats -> no fee
102
+ expect(fee).toBeNull();
103
+ });
104
+ it('treats a zero or negative trade size as no fee', () => {
105
+ const fee = computePlatformFee({
106
+ tradeResult: fakeTradeResult({ supply: 0n, demand: 1n, trade_fee: 0n }),
107
+ isBuyingToken: true,
108
+ feeConfig,
109
+ bchUsdPrice: 100,
110
+ });
111
+ expect(fee).toBeNull();
112
+ });
113
+ it('exposes the dust limit constant as 546 sats', () => {
114
+ expect(PLATFORM_FEE_DUST_LIMIT).toBe(546n);
115
+ });
116
+ });
117
+ describe('formatQuote', () => {
118
+ const tokenData = {
119
+ token_id: 'abc',
120
+ display_name: 'Test Token',
121
+ display_symbol: 'TT',
122
+ price_now: 1,
123
+ price_now_usd: 1,
124
+ tvl_sats: 1,
125
+ bcmr: {
126
+ name: 'Test Token',
127
+ description: '',
128
+ token: { category: 'abc', decimals: 2, symbol: 'TT' },
129
+ },
130
+ };
131
+ function quote(overrides = {}) {
132
+ return {
133
+ tokenId: 'abc',
134
+ tokenData,
135
+ direction: 'sell',
136
+ isBuyingToken: false,
137
+ pools: [],
138
+ tradeResult: fakeTradeResult({ supply: 500000n, demand: 1000000n, trade_fee: 1000n }),
139
+ rate: '2.0',
140
+ tokenAmount: 500000n,
141
+ bchAmount: 1000000n,
142
+ tradeFee: 1000n,
143
+ ...overrides,
144
+ };
145
+ }
146
+ it('lists the platform fee line when a fee is applied', () => {
147
+ const text = formatQuote(quote({
148
+ platformFee: { to: FEE_ADDRESS, amount: 2997n },
149
+ }));
150
+ expect(text).toContain('Platform fee: ~0.00002997 BCH');
151
+ expect(text).toContain('Trade fee: ~0.00001000 BCH');
152
+ });
153
+ it('omits the line entirely when no fee', () => {
154
+ const noFee = formatQuote(quote());
155
+ expect(noFee).not.toContain('Platform fee');
156
+ });
157
+ });
158
+ describe('fetchCauldronFee', () => {
159
+ afterEach(() => {
160
+ vi.unstubAllGlobals();
161
+ });
162
+ it('parses the watchtower response and defaults missing fields', async () => {
163
+ vi.stubGlobal('fetch', vi.fn(async () => new Response(JSON.stringify({ address: FEE_ADDRESS, fee_rate_bps: 30, max_usd: '1.00' }), { status: 200 })));
164
+ const config = await fetchCauldronFee();
165
+ expect(config).toEqual({ address: FEE_ADDRESS, feeRateBps: 30, maxUsd: 1 });
166
+ });
167
+ it('maps an empty address to null (feature disabled)', async () => {
168
+ vi.stubGlobal('fetch', vi.fn(async () => new Response(JSON.stringify({ address: '' }), { status: 200 })));
169
+ const config = await fetchCauldronFee();
170
+ expect(config.address).toBeNull();
171
+ expect(config.feeRateBps).toBe(30);
172
+ expect(config.maxUsd).toBe(1);
173
+ });
174
+ it('throws a CauldronApiError on http failure', async () => {
175
+ vi.stubGlobal('fetch', vi.fn(async () => new Response('nope', { status: 500 })));
176
+ await expect(fetchCauldronFee()).rejects.toThrow('cauldron-fee request failed (500');
177
+ });
178
+ });
179
+ //# sourceMappingURL=swap.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.test.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/swap.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transact.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/transact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,EAEX,KAAK,MAAM,EACX,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAA;AAUxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CA8BhE;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,GAAG;IAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAkIzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAcA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,6CAmEA;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;CACxB,GAAG,aAAa,EAAE,CAmClB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAI5D;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,UAAU,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BzD"}
1
+ {"version":3,"file":"transact.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/transact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,EAEX,KAAK,MAAM,EACX,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAA;AAUxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CA8BhE;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,GAAG;IAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAyIzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAcA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,6CAmEA;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;CACxB,GAAG,aAAa,EAAE,CAmClB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAI5D;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,UAAU,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BzD"}
@@ -58,14 +58,23 @@ export function createInputAndOutput(opts) {
58
58
  const tokenCoins = spendableCoins.filter((coin) => coin.output?.token);
59
59
  const bchCoins = spendableCoins.filter((coin) => !coin.output.token);
60
60
  const isBuyingToken = tradeResult.entries[0].supply_token_id === NATIVE_BCH_TOKEN_ID;
61
+ // Decode the fee address once; reused for both sizing and the payout rule.
62
+ let platformFeeBytecode;
63
+ if (platformFee) {
64
+ const decoded = cashAddressToLockingBytecode(platformFee.to);
65
+ if (!decoded || typeof decoded === 'string' || !decoded.bytecode) {
66
+ throw new Error(`Invalid platform fee address: ${platformFee.to}`);
67
+ }
68
+ platformFeeBytecode = decoded.bytecode;
69
+ }
61
70
  const entriesSizes = getEntriesSize(tradeResult);
62
71
  const totalPoolTxFee = BigInt(entriesSizes.inputFees + entriesSizes.outputFees);
63
72
  let tokensToSupply = !isBuyingToken ? tradeResult.summary.supply : 0n;
64
73
  let satoshisToSupply = isBuyingToken ? tradeResult.summary.supply : 0n;
65
74
  satoshisToSupply += totalPoolTxFee;
66
- if (platformFee) {
75
+ if (platformFee && platformFeeBytecode) {
67
76
  satoshisToSupply += platformFee.amount;
68
- satoshisToSupply += BigInt(getOutputSize(platformFee));
77
+ satoshisToSupply += BigInt(getOutputSize({ to: platformFeeBytecode, amount: platformFee.amount }));
69
78
  }
70
79
  const inputCoins = [];
71
80
  const payouts = [];
@@ -119,17 +128,12 @@ export function createInputAndOutput(opts) {
119
128
  });
120
129
  satoshisToSupply += tokenOutputSats + BigInt(outputSize);
121
130
  }
122
- if (platformFee) {
123
- const decoded = cashAddressToLockingBytecode(platformFee.to);
124
- if (!decoded || typeof decoded === 'string' || !decoded.bytecode) {
125
- throw new Error(`Invalid platform fee address: ${platformFee.to}`);
126
- }
131
+ if (platformFee && platformFeeBytecode) {
127
132
  payouts.push({
128
133
  type: PayoutAmountRuleType.FIXED,
129
- locking_bytecode: decoded.bytecode,
134
+ locking_bytecode: platformFeeBytecode,
130
135
  amount: platformFee.amount,
131
136
  });
132
- satoshisToSupply += platformFee.amount + BigInt(getOutputSize(platformFee));
133
137
  }
134
138
  // Base tx overhead (version + locktime) and varint prefixes for inputs/outputs
135
139
  satoshisToSupply += 8n;
@@ -1 +1 @@
1
- {"version":3,"file":"transact.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/transact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transact.js","sourceRoot":"","sources":["../../../src/wallet/cauldron/transact.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paytaca-cli",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Command-line interface for the Paytaca Bitcoin Cash wallet",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",