paytaca-cli 0.4.1 → 0.5.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.
Files changed (45) hide show
  1. package/README.md +5 -3
  2. package/dist/commands/swap.d.ts +19 -0
  3. package/dist/commands/swap.d.ts.map +1 -0
  4. package/dist/commands/swap.js +129 -0
  5. package/dist/commands/swap.js.map +1 -0
  6. package/dist/commands/token.d.ts.map +1 -1
  7. package/dist/commands/token.js +140 -1
  8. package/dist/commands/token.js.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/nostr/store.test.js +12 -4
  12. package/dist/nostr/store.test.js.map +1 -1
  13. package/dist/utils/prices.d.ts +46 -0
  14. package/dist/utils/prices.d.ts.map +1 -0
  15. package/dist/utils/prices.js +93 -0
  16. package/dist/utils/prices.js.map +1 -0
  17. package/dist/utils/prices.test.d.ts +5 -0
  18. package/dist/utils/prices.test.d.ts.map +1 -0
  19. package/dist/utils/prices.test.js +62 -0
  20. package/dist/utils/prices.test.js.map +1 -0
  21. package/dist/wallet/bch.d.ts +14 -0
  22. package/dist/wallet/bch.d.ts.map +1 -1
  23. package/dist/wallet/bch.js +24 -0
  24. package/dist/wallet/bch.js.map +1 -1
  25. package/dist/wallet/cauldron/api.d.ts +58 -0
  26. package/dist/wallet/cauldron/api.d.ts.map +1 -0
  27. package/dist/wallet/cauldron/api.js +60 -0
  28. package/dist/wallet/cauldron/api.js.map +1 -0
  29. package/dist/wallet/cauldron/pools.d.ts +66 -0
  30. package/dist/wallet/cauldron/pools.d.ts.map +1 -0
  31. package/dist/wallet/cauldron/pools.js +96 -0
  32. package/dist/wallet/cauldron/pools.js.map +1 -0
  33. package/dist/wallet/cauldron/pools.test.d.ts +3 -0
  34. package/dist/wallet/cauldron/pools.test.d.ts.map +1 -0
  35. package/dist/wallet/cauldron/pools.test.js +149 -0
  36. package/dist/wallet/cauldron/pools.test.js.map +1 -0
  37. package/dist/wallet/cauldron/swap.d.ts +69 -0
  38. package/dist/wallet/cauldron/swap.d.ts.map +1 -0
  39. package/dist/wallet/cauldron/swap.js +173 -0
  40. package/dist/wallet/cauldron/swap.js.map +1 -0
  41. package/dist/wallet/cauldron/transact.d.ts +98 -0
  42. package/dist/wallet/cauldron/transact.d.ts.map +1 -0
  43. package/dist/wallet/cauldron/transact.js +307 -0
  44. package/dist/wallet/cauldron/transact.js.map +1 -0
  45. package/package.json +3 -2
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Asset pricing via the watchtower.cash /api/asset-prices/ endpoint.
3
+ *
4
+ * Mirrors paytaca-app's market price handling in
5
+ * src/store/market/actions.js (updateAssetPrices).
6
+ *
7
+ * Unit conventions from watchtower.cash:
8
+ * - Coins (e.g. BCH): price_value is fiat per unit (USD per BCH).
9
+ * - CashTokens: price_value is units per fiat (tokens per USD),
10
+ * so fiat per token = 1 / price_value.
11
+ */
12
+ export interface AssetPrice {
13
+ id: number;
14
+ asset: string;
15
+ asset_type: string;
16
+ asset_name: string;
17
+ asset_symbol: string;
18
+ currency: string;
19
+ price_value: string;
20
+ timestamp: string;
21
+ source: string;
22
+ }
23
+ /**
24
+ * Fetch prices from watchtower.cash /api/asset-prices/.
25
+ *
26
+ * @param assetIds - Asset IDs, e.g. ['BCH'] or ['ct/<category>']
27
+ * @param vsCurrencies - Quote currencies, e.g. ['USD']
28
+ */
29
+ export declare function fetchAssetPrices(assetIds: string[], vsCurrencies?: string[], isChipnet?: boolean): Promise<AssetPrice[]>;
30
+ /**
31
+ * USD price per display unit of a CashToken.
32
+ * Returns null when the token has no market price.
33
+ */
34
+ export declare function getUsdPerToken(category: string, isChipnet?: boolean): Promise<number | null>;
35
+ /**
36
+ * USD price per BCH.
37
+ * Returns null when unavailable.
38
+ */
39
+ export declare function getBchUsdPrice(isChipnet?: boolean): Promise<number | null>;
40
+ /**
41
+ * Convert a raw token amount (base units) to USD given USD per display token.
42
+ */
43
+ export declare function tokenAmountToUsd(rawAmount: number, decimals: number, usdPerToken: number): number;
44
+ /** Format a USD amount for display. */
45
+ export declare function formatUsd(usd: number): string;
46
+ //# sourceMappingURL=prices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/utils/prices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,GAAE,MAAM,EAAY,EAChC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC,CAuBvB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,CAGR;AAkBD,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ7C"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Asset pricing via the watchtower.cash /api/asset-prices/ endpoint.
3
+ *
4
+ * Mirrors paytaca-app's market price handling in
5
+ * src/store/market/actions.js (updateAssetPrices).
6
+ *
7
+ * Unit conventions from watchtower.cash:
8
+ * - Coins (e.g. BCH): price_value is fiat per unit (USD per BCH).
9
+ * - CashTokens: price_value is units per fiat (tokens per USD),
10
+ * so fiat per token = 1 / price_value.
11
+ */
12
+ import { getWatchtowerApiUrl } from './network.js';
13
+ /** Max asset IDs per request — paytaca-app batches at 10. */
14
+ const BATCH_SIZE = 10;
15
+ /**
16
+ * Fetch prices from watchtower.cash /api/asset-prices/.
17
+ *
18
+ * @param assetIds - Asset IDs, e.g. ['BCH'] or ['ct/<category>']
19
+ * @param vsCurrencies - Quote currencies, e.g. ['USD']
20
+ */
21
+ export async function fetchAssetPrices(assetIds, vsCurrencies = ['USD'], isChipnet = false) {
22
+ const baseUrl = getWatchtowerApiUrl(isChipnet);
23
+ const uniqueIds = [...new Set(assetIds.filter(Boolean))];
24
+ if (uniqueIds.length === 0)
25
+ return [];
26
+ const batches = [];
27
+ for (let i = 0; i < uniqueIds.length; i += BATCH_SIZE) {
28
+ batches.push(uniqueIds.slice(i, i + BATCH_SIZE));
29
+ }
30
+ const results = await Promise.all(batches.map(async (batch) => {
31
+ const params = new URLSearchParams();
32
+ params.set('assets', batch.join(','));
33
+ params.set('vs_currencies', vsCurrencies.join(','));
34
+ const res = await fetch(`${baseUrl}/asset-prices/?${params.toString()}`);
35
+ if (!res.ok)
36
+ throw new Error(`asset-prices request failed (${res.status})`);
37
+ const data = await res.json();
38
+ return Array.isArray(data?.prices) ? data.prices : [];
39
+ }));
40
+ return results.flat();
41
+ }
42
+ /**
43
+ * USD price per display unit of a CashToken.
44
+ * Returns null when the token has no market price.
45
+ */
46
+ export async function getUsdPerToken(category, isChipnet = false) {
47
+ const prices = await fetchAssetPrices([`ct/${category}`], ['USD'], isChipnet);
48
+ return priceInUsd(prices);
49
+ }
50
+ /**
51
+ * USD price per BCH.
52
+ * Returns null when unavailable.
53
+ */
54
+ export async function getBchUsdPrice(isChipnet = false) {
55
+ const prices = await fetchAssetPrices(['BCH'], ['USD'], isChipnet);
56
+ return priceInUsd(prices);
57
+ }
58
+ /**
59
+ * Convert a raw token amount (base units) to USD given USD per display token.
60
+ */
61
+ export function tokenAmountToUsd(rawAmount, decimals, usdPerToken) {
62
+ const displayAmount = rawAmount / Math.pow(10, decimals);
63
+ return displayAmount * usdPerToken;
64
+ }
65
+ /**
66
+ * Extract the USD quote from an asset-prices response, applying the
67
+ * token reciprocal rule used by paytaca-app.
68
+ */
69
+ function priceInUsd(prices) {
70
+ for (const p of prices) {
71
+ if (String(p.currency || '').toLowerCase() !== 'usd')
72
+ continue;
73
+ const raw = parseFloat(p.price_value);
74
+ if (!isFinite(raw) || raw === 0)
75
+ continue;
76
+ const asset = String(p.asset || '').toLowerCase();
77
+ // Tokens are quoted as tokens-per-USD; take the reciprocal for USD-per-token.
78
+ return asset.startsWith('ct/') ? 1 / raw : raw;
79
+ }
80
+ return null;
81
+ }
82
+ /** Format a USD amount for display. */
83
+ export function formatUsd(usd) {
84
+ if (!isFinite(usd))
85
+ return '—';
86
+ return usd.toLocaleString('en-US', {
87
+ style: 'currency',
88
+ currency: 'USD',
89
+ minimumFractionDigits: 2,
90
+ maximumFractionDigits: 2,
91
+ });
92
+ }
93
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../../src/utils/prices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for the watchtower asset-prices utilities.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=prices.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.test.d.ts","sourceRoot":"","sources":["../../src/utils/prices.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Tests for the watchtower asset-prices utilities.
3
+ */
4
+ import { describe, it, expect, vi, afterEach } from 'vitest';
5
+ import { fetchAssetPrices, getUsdPerToken, getBchUsdPrice, tokenAmountToUsd, formatUsd, } from './prices.js';
6
+ afterEach(() => {
7
+ vi.unstubAllGlobals();
8
+ });
9
+ function stubFetch(json) {
10
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
11
+ ok: true,
12
+ json: () => Promise.resolve(json),
13
+ }));
14
+ }
15
+ describe('tokenAmountToUsd', () => {
16
+ it('converts raw base units to USD using the display-token price', () => {
17
+ // 10000 base units, 2 decimals = 100.00 tokens @ $0.02 each
18
+ expect(tokenAmountToUsd(10000, 2, 0.02)).toBeCloseTo(2, 10);
19
+ });
20
+ it('handles zero decimals', () => {
21
+ expect(tokenAmountToUsd(5, 0, 1.5)).toBeCloseTo(7.5, 10);
22
+ });
23
+ });
24
+ describe('formatUsd', () => {
25
+ it('formats as USD currency', () => {
26
+ expect(formatUsd(2.007)).toBe('$2.01');
27
+ });
28
+ it('returns an em dash for non-finite input', () => {
29
+ expect(formatUsd(Number.NaN)).toBe('—');
30
+ });
31
+ });
32
+ describe('fetchAssetPrices', () => {
33
+ it('returns the raw prices array', async () => {
34
+ stubFetch({ prices: [{ asset: 'ct/abc', currency: 'USD', price_value: '10' }] });
35
+ const result = await fetchAssetPrices(['ct/abc']);
36
+ expect(result).toHaveLength(1);
37
+ expect(result[0].price_value).toBe('10');
38
+ });
39
+ it('returns [] when the response has no prices', async () => {
40
+ stubFetch({ prices: [] });
41
+ expect(await fetchAssetPrices(['ct/abc'])).toEqual([]);
42
+ });
43
+ });
44
+ describe('getUsdPerToken', () => {
45
+ it('takes the reciprocal of the tokens-per-USD quote', async () => {
46
+ stubFetch({
47
+ prices: [{ asset: 'ct/abc', currency: 'USD', price_value: '50' }],
48
+ });
49
+ expect(await getUsdPerToken('abc')).toBeCloseTo(0.02, 10);
50
+ });
51
+ it('returns null for a token with no market price', async () => {
52
+ stubFetch({ prices: [] });
53
+ expect(await getUsdPerToken('abc')).toBeNull();
54
+ });
55
+ });
56
+ describe('getBchUsdPrice', () => {
57
+ it('returns the USD-per-BCH quote directly', async () => {
58
+ stubFetch({ prices: [{ asset: 'BCH', currency: 'USD', price_value: '247.8' }] });
59
+ expect(await getBchUsdPrice()).toBeCloseTo(247.8, 10);
60
+ });
61
+ });
62
+ //# sourceMappingURL=prices.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.test.js","sourceRoot":"","sources":["../../src/utils/prices.test.ts"],"names":[],"mappings":"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"}
@@ -163,6 +163,20 @@ export declare class BchWallet {
163
163
  * The data format is identical to what paytaca-app passes.
164
164
  */
165
165
  private _sendBch;
166
+ /**
167
+ * Get raw UTXOs from Watchtower.
168
+ * Adapted from paytaca-app BchWallet.getUtxos().
169
+ *
170
+ * With no category: returns all UTXOs (BCH + CashTokens).
171
+ * With a category: returns only that token's UTXOs (is_cashtoken=true).
172
+ *
173
+ * @param opts.category - Token category ID (64-char hex) to filter by
174
+ * @param opts.nft - Only return NFT UTXOs for the category
175
+ */
176
+ getUtxos(opts?: {
177
+ category?: string;
178
+ nft?: boolean;
179
+ }): Promise<any[]>;
166
180
  /**
167
181
  * Trigger a UTXO scan on the Watchtower backend.
168
182
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
@@ -156,6 +156,30 @@ export class BchWallet {
156
156
  const result = await this.watchtower.BCH.send(data);
157
157
  return result;
158
158
  }
159
+ /**
160
+ * Get raw UTXOs from Watchtower.
161
+ * Adapted from paytaca-app BchWallet.getUtxos().
162
+ *
163
+ * With no category: returns all UTXOs (BCH + CashTokens).
164
+ * With a category: returns only that token's UTXOs (is_cashtoken=true).
165
+ *
166
+ * @param opts.category - Token category ID (64-char hex) to filter by
167
+ * @param opts.nft - Only return NFT UTXOs for the category
168
+ */
169
+ async getUtxos(opts) {
170
+ const params = {};
171
+ let url = `utxo/wallet/${this.walletHash}/`;
172
+ if (opts?.category) {
173
+ url += encodeURIComponent(opts.category) + '/';
174
+ params.is_cashtoken = true;
175
+ params.is_cashtoken_nft = Boolean(opts.nft);
176
+ }
177
+ const response = await this.watchtower.BCH._api.get(url, { params });
178
+ if (!Array.isArray(response.data?.utxos)) {
179
+ return Promise.reject({ response });
180
+ }
181
+ return response.data.utxos;
182
+ }
159
183
  /**
160
184
  * Trigger a UTXO scan on the Watchtower backend.
161
185
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bch.js","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bch.js","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Cauldron (riften indexer) REST client.
3
+ *
4
+ * Adapted from: paytaca-app/src/wallet/cauldron/api.js, tokens.js,
5
+ * and pool-tracker.ts. Uses the global fetch API (Node 20+) instead of axios.
6
+ */
7
+ /**
8
+ * An active pool as returned by the cauldron indexer.
9
+ * GET /cauldron/pool/active?token=<category>
10
+ */
11
+ export interface ApiPool {
12
+ owner_p2pkh_addr: string;
13
+ owner_pkh: string;
14
+ pool_id: string;
15
+ sats: number;
16
+ token_id: string;
17
+ tokens: number;
18
+ tx_pos: number;
19
+ txid: string;
20
+ }
21
+ /**
22
+ * A cauldron-listed token (market info + BCMR metadata).
23
+ * GET /cauldron/tokens/list_cached_by_ids?ids=<category>
24
+ */
25
+ export interface CauldronTokenData {
26
+ token_id: string;
27
+ display_name: string;
28
+ display_symbol: string;
29
+ price_now: number;
30
+ price_now_usd: number;
31
+ tvl_sats: number;
32
+ bcmr: {
33
+ name: string;
34
+ description: string;
35
+ token: {
36
+ category: string;
37
+ decimals: number;
38
+ symbol: string;
39
+ };
40
+ uris?: {
41
+ icon?: string;
42
+ web?: string;
43
+ };
44
+ };
45
+ }
46
+ export declare class CauldronApiError extends Error {
47
+ status?: number;
48
+ constructor(message: string, status?: number);
49
+ }
50
+ /**
51
+ * Fetch the active cauldron pools for a token category.
52
+ */
53
+ export declare function fetchPoolsForToken(tokenId: string): Promise<ApiPool[]>;
54
+ /**
55
+ * Fetch market + BCMR data for a single token category.
56
+ */
57
+ export declare function fetchTokenData(tokenId: string): Promise<CauldronTokenData | undefined>;
58
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Cauldron (riften indexer) REST client.
3
+ *
4
+ * Adapted from: paytaca-app/src/wallet/cauldron/api.js, tokens.js,
5
+ * and pool-tracker.ts. Uses the global fetch API (Node 20+) instead of axios.
6
+ */
7
+ const CAULDRON_INDEXER_BASE_URL = 'https://indexer.riften.net';
8
+ export class CauldronApiError extends Error {
9
+ status;
10
+ constructor(message, status) {
11
+ super(message);
12
+ this.name = 'CauldronApiError';
13
+ this.status = status;
14
+ }
15
+ }
16
+ async function getJson(path, params = {}) {
17
+ const url = new URL(CAULDRON_INDEXER_BASE_URL + path);
18
+ for (const [key, value] of Object.entries(params)) {
19
+ if (value === undefined || value === null || value === '')
20
+ continue;
21
+ url.searchParams.set(key, String(value));
22
+ }
23
+ let response;
24
+ try {
25
+ response = await fetch(url.toString());
26
+ }
27
+ catch (err) {
28
+ throw new CauldronApiError(`Cauldron indexer unreachable: ${err?.message || err}`);
29
+ }
30
+ if (!response.ok) {
31
+ throw new CauldronApiError(`Cauldron indexer request failed (${response.status} ${response.statusText})`, response.status);
32
+ }
33
+ return response.json();
34
+ }
35
+ /**
36
+ * Fetch the active cauldron pools for a token category.
37
+ */
38
+ export async function fetchPoolsForToken(tokenId) {
39
+ const data = await getJson('/cauldron/pool/active', {
40
+ token: tokenId,
41
+ });
42
+ if (!Array.isArray(data.active)) {
43
+ throw new CauldronApiError('Unexpected response from cauldron pool endpoint');
44
+ }
45
+ return data.active;
46
+ }
47
+ /**
48
+ * Fetch market + BCMR data for a single token category.
49
+ */
50
+ export async function fetchTokenData(tokenId) {
51
+ const data = await getJson('/cauldron/tokens/list_cached_by_ids', {
52
+ ids: tokenId,
53
+ limit: 1,
54
+ offset: 0,
55
+ by: 'score',
56
+ order: 'desc',
57
+ });
58
+ return Array.isArray(data) ? data[0] : undefined;
59
+ }
60
+ //# sourceMappingURL=api.js.map
@@ -0,0 +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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Cauldron pool conversions and helpers.
3
+ *
4
+ * Adapted from: paytaca-app/src/wallet/cauldron/utils.js and pool-tracker.ts.
5
+ * Converts indexer ApiPool entries into @cashlab/cauldron PoolV0 objects.
6
+ */
7
+ import { type PoolV0 } from '@cashlab/cauldron';
8
+ import { type ApiPool } from './api.js';
9
+ export interface MicroPool {
10
+ pool_id: string;
11
+ pkh: string;
12
+ is_withdrawn: boolean;
13
+ spent_utxo_hash: string;
14
+ new_utxo_hash: string;
15
+ new_utxo_txid: string;
16
+ new_utxo_n: number;
17
+ token_id: string;
18
+ sats: number;
19
+ token_amount: number;
20
+ }
21
+ /**
22
+ * Convert an indexer ApiPool to a MicroPool.
23
+ */
24
+ export declare function apiPoolToMicroPool(pool: ApiPool): MicroPool;
25
+ /**
26
+ * Convert a MicroPool to a @cashlab/cauldron PoolV0.
27
+ */
28
+ export declare function microPoolToPoolV0(pool: MicroPool): PoolV0;
29
+ /**
30
+ * Fetch + convert active pools for a token category into PoolV0 objects.
31
+ */
32
+ export declare function fetchPoolV0ForToken(tokenId: string): Promise<PoolV0[]>;
33
+ /**
34
+ * Compute the post-trade state of a pool output (used for fee estimation).
35
+ * Mirrors paytaca-app poolTradeToCashscriptOutput().
36
+ */
37
+ export interface PoolTradeOutput {
38
+ to: Uint8Array;
39
+ amount: bigint;
40
+ token: {
41
+ amount: bigint;
42
+ category: string;
43
+ };
44
+ }
45
+ /**
46
+ * @param poolTrade A @cashlab/cauldron PoolTrade
47
+ * @returns The pool's resulting output after the trade
48
+ */
49
+ export declare function poolTradeToOutput(poolTrade: {
50
+ supply_token_id: string;
51
+ demand_token_id: string;
52
+ supply: bigint;
53
+ demand: bigint;
54
+ pool: PoolV0;
55
+ }): PoolTradeOutput;
56
+ /**
57
+ * Parse a trade rate (price) into a human-readable string.
58
+ * Mirrors paytaca-app parseRate().
59
+ *
60
+ * @param isBuyingToken true when BCH is spent to buy tokens (price in BCH per token)
61
+ */
62
+ export declare function parseRate(rate: {
63
+ numerator: bigint;
64
+ denominator: bigint;
65
+ }, tokenDecimals: number, isBuyingToken: boolean): string;
66
+ //# sourceMappingURL=pools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../src/wallet/cauldron/pools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG5D,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,UAAU,CAAA;AAE3D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAa3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoBzD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG5E;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IAC3C,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,eAAe,CAclB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAChD,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,OAAO,GACrB,MAAM,CAcR"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Cauldron pool conversions and helpers.
3
+ *
4
+ * Adapted from: paytaca-app/src/wallet/cauldron/utils.js and pool-tracker.ts.
5
+ * Converts indexer ApiPool entries into @cashlab/cauldron PoolV0 objects.
6
+ */
7
+ import { ExchangeLab } from '@cashlab/cauldron';
8
+ import { NATIVE_BCH_TOKEN_ID } from '@cashlab/common';
9
+ import { hexToBin } from '@cashlab/common/libauth.js';
10
+ import { fetchPoolsForToken } from './api.js';
11
+ /**
12
+ * Convert an indexer ApiPool to a MicroPool.
13
+ */
14
+ export function apiPoolToMicroPool(pool) {
15
+ return {
16
+ pool_id: pool.pool_id,
17
+ pkh: pool.owner_pkh,
18
+ is_withdrawn: false,
19
+ spent_utxo_hash: '',
20
+ new_utxo_hash: pool.txid,
21
+ new_utxo_txid: pool.txid,
22
+ new_utxo_n: pool.tx_pos,
23
+ token_id: pool.token_id,
24
+ sats: pool.sats,
25
+ token_amount: pool.tokens,
26
+ };
27
+ }
28
+ /**
29
+ * Convert a MicroPool to a @cashlab/cauldron PoolV0.
30
+ */
31
+ export function microPoolToPoolV0(pool) {
32
+ const pool0Params = { withdraw_pubkey_hash: hexToBin(pool.pkh) };
33
+ const exlab = new ExchangeLab();
34
+ const pool0LockingBytecode = exlab.generatePoolV0LockingBytecode(pool0Params);
35
+ return {
36
+ version: '0',
37
+ parameters: pool0Params,
38
+ outpoint: {
39
+ index: pool.new_utxo_n,
40
+ txhash: hexToBin(pool.new_utxo_txid),
41
+ },
42
+ output: {
43
+ locking_bytecode: pool0LockingBytecode,
44
+ token: {
45
+ amount: BigInt(pool.token_amount),
46
+ token_id: pool.token_id,
47
+ },
48
+ amount: BigInt(pool.sats),
49
+ },
50
+ };
51
+ }
52
+ /**
53
+ * Fetch + convert active pools for a token category into PoolV0 objects.
54
+ */
55
+ export async function fetchPoolV0ForToken(tokenId) {
56
+ const pools = await fetchPoolsForToken(tokenId);
57
+ return pools.map(apiPoolToMicroPool).map(microPoolToPoolV0);
58
+ }
59
+ /**
60
+ * @param poolTrade A @cashlab/cauldron PoolTrade
61
+ * @returns The pool's resulting output after the trade
62
+ */
63
+ export function poolTradeToOutput(poolTrade) {
64
+ const isSupplyingBch = poolTrade.supply_token_id === NATIVE_BCH_TOKEN_ID;
65
+ const satoshisDelta = isSupplyingBch ? poolTrade.supply : poolTrade.demand * -1n;
66
+ const tokenDelta = isSupplyingBch ? poolTrade.demand * -1n : poolTrade.supply;
67
+ const poolOutput = poolTrade.pool.output;
68
+ return {
69
+ to: poolOutput.locking_bytecode,
70
+ amount: poolOutput.amount + satoshisDelta,
71
+ token: {
72
+ amount: poolOutput.token.amount + tokenDelta,
73
+ category: poolOutput.token.token_id,
74
+ },
75
+ };
76
+ }
77
+ /**
78
+ * Parse a trade rate (price) into a human-readable string.
79
+ * Mirrors paytaca-app parseRate().
80
+ *
81
+ * @param isBuyingToken true when BCH is spent to buy tokens (price in BCH per token)
82
+ */
83
+ export function parseRate(rate, tokenDecimals, isBuyingToken) {
84
+ let multiplierDecimals = 8;
85
+ let divisorDecimals = tokenDecimals;
86
+ if (isBuyingToken) {
87
+ multiplierDecimals = tokenDecimals;
88
+ divisorDecimals = 8;
89
+ }
90
+ const multiplier = 10n ** BigInt(multiplierDecimals);
91
+ const _price = (rate.numerator * multiplier) / rate.denominator;
92
+ const divisor = 10 ** divisorDecimals;
93
+ const price = Number(_price) / divisor;
94
+ return price.toFixed(divisorDecimals);
95
+ }
96
+ //# sourceMappingURL=pools.js.map