@1sat/actions 0.0.7 → 0.0.8

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.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Balance Module
3
+ *
4
+ * Actions for querying wallet balance and payment UTXOs.
5
+ */
6
+ import type { Action } from '../types';
7
+ export interface Balance {
8
+ /** Balance in satoshis */
9
+ satoshis: number;
10
+ /** Balance in BSV */
11
+ bsv: number;
12
+ /** Balance in USD cents */
13
+ usdInCents: number;
14
+ }
15
+ export interface PaymentUtxo {
16
+ txid: string;
17
+ vout: number;
18
+ satoshis: number;
19
+ script: string;
20
+ }
21
+ /** Input for getBalance action (no required params) */
22
+ export type GetBalanceInput = Record<string, never>;
23
+ /**
24
+ * Get wallet balance with USD conversion.
25
+ */
26
+ export declare const getBalance: Action<GetBalanceInput, Balance>;
27
+ /** Input for getPaymentUtxos action (no required params) */
28
+ export type GetPaymentUtxosInput = Record<string, never>;
29
+ /**
30
+ * Get payment UTXOs for external use.
31
+ */
32
+ export declare const getPaymentUtxos: Action<GetPaymentUtxosInput, PaymentUtxo[]>;
33
+ /** Input for getExchangeRate action (no required params) */
34
+ export type GetExchangeRateInput = Record<string, never>;
35
+ /**
36
+ * Get current BSV/USD exchange rate.
37
+ */
38
+ export declare const getExchangeRate: Action<GetExchangeRateInput, number>;
39
+ /** All balance actions for registry */
40
+ export declare const balanceActions: (Action<GetBalanceInput, Balance> | Action<GetPaymentUtxosInput, PaymentUtxo[]> | Action<GetExchangeRateInput, number>)[];
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,OAAO;IACvB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACd;AAyCD,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAqBvD,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,CA0BvE,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAahE,CAAA;AAMD,uCAAuC;AACvC,eAAO,MAAM,cAAc,2HAAiD,CAAA"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Balance Module
3
+ *
4
+ * Actions for querying wallet balance and payment UTXOs.
5
+ */
6
+ import { EXCHANGE_RATE_CACHE_TTL, FUNDING_BASKET, WOC_MAINNET_URL, WOC_TESTNET_URL, } from '../constants';
7
+ // Module-level cache for exchange rate
8
+ let exchangeRateCache = null;
9
+ // ============================================================================
10
+ // Internal helpers
11
+ // ============================================================================
12
+ async function fetchExchangeRate(chain, wocApiKey) {
13
+ if (exchangeRateCache &&
14
+ Date.now() - exchangeRateCache.timestamp < EXCHANGE_RATE_CACHE_TTL) {
15
+ return exchangeRateCache.rate;
16
+ }
17
+ const baseUrl = chain === 'main' ? WOC_MAINNET_URL : WOC_TESTNET_URL;
18
+ const headers = {};
19
+ if (wocApiKey)
20
+ headers['woc-api-key'] = wocApiKey;
21
+ try {
22
+ const response = await fetch(`${baseUrl}/exchangerate`, { headers });
23
+ if (!response.ok)
24
+ throw new Error(`Failed to fetch: ${response.statusText}`);
25
+ const data = await response.json();
26
+ const rate = Number(data.rate.toFixed(2));
27
+ exchangeRateCache = { rate, timestamp: Date.now() };
28
+ return rate;
29
+ }
30
+ catch {
31
+ return exchangeRateCache?.rate ?? 0;
32
+ }
33
+ }
34
+ /**
35
+ * Get wallet balance with USD conversion.
36
+ */
37
+ export const getBalance = {
38
+ meta: {
39
+ name: 'getBalance',
40
+ description: 'Get wallet balance in satoshis, BSV, and USD cents',
41
+ category: 'balance',
42
+ inputSchema: {
43
+ type: 'object',
44
+ properties: {},
45
+ },
46
+ },
47
+ async execute(ctx) {
48
+ const exchangeRate = await fetchExchangeRate(ctx.chain, ctx.wocApiKey);
49
+ const result = await ctx.wallet.listOutputs({
50
+ basket: FUNDING_BASKET,
51
+ limit: 10000,
52
+ });
53
+ const satoshis = result.outputs.reduce((sum, o) => sum + o.satoshis, 0);
54
+ const bsv = satoshis / 100_000_000;
55
+ const usdInCents = Math.round(bsv * exchangeRate * 100);
56
+ return { satoshis, bsv, usdInCents };
57
+ },
58
+ };
59
+ /**
60
+ * Get payment UTXOs for external use.
61
+ */
62
+ export const getPaymentUtxos = {
63
+ meta: {
64
+ name: 'getPaymentUtxos',
65
+ description: 'Get payment UTXOs from the wallet for external use',
66
+ category: 'balance',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: {},
70
+ },
71
+ },
72
+ async execute(ctx) {
73
+ const result = await ctx.wallet.listOutputs({
74
+ basket: FUNDING_BASKET,
75
+ include: 'locking scripts',
76
+ limit: 10000,
77
+ });
78
+ return result.outputs.map((o) => {
79
+ const [txid, voutStr] = o.outpoint.split('.');
80
+ return {
81
+ txid,
82
+ vout: Number.parseInt(voutStr, 10),
83
+ satoshis: o.satoshis,
84
+ script: o.lockingScript || '',
85
+ };
86
+ });
87
+ },
88
+ };
89
+ /**
90
+ * Get current BSV/USD exchange rate.
91
+ */
92
+ export const getExchangeRate = {
93
+ meta: {
94
+ name: 'getExchangeRate',
95
+ description: 'Get current BSV/USD exchange rate from WhatsOnChain',
96
+ category: 'balance',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {},
100
+ },
101
+ },
102
+ async execute(ctx) {
103
+ return fetchExchangeRate(ctx.chain, ctx.wocApiKey);
104
+ },
105
+ };
106
+ // ============================================================================
107
+ // Module exports
108
+ // ============================================================================
109
+ /** All balance actions for registry */
110
+ export const balanceActions = [getBalance, getPaymentUtxos, getExchangeRate];
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Transaction, type WalletProtocol } from '@bsv/sdk';
1
+ import { type Transaction, type WalletProtocol } from '@bsv/sdk';
2
2
  import type { OneSatContext } from '../types';
3
3
  /**
4
4
  * Sign a P2PKH input using the wallet's key derivation.
@@ -1 +1 @@
1
- {"version":3,"file":"signP2PKH.d.ts","sourceRoot":"","sources":["../../src/utils/signP2PKH.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EAIX,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;;GAGG;AACH,wBAAsB,cAAc,CACnC,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA2DrC"}
1
+ {"version":3,"file":"signP2PKH.d.ts","sourceRoot":"","sources":["../../src/utils/signP2PKH.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,WAAW,EAIhB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;;GAGG;AACH,wBAAsB,cAAc,CACnC,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA2DrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1sat/actions",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "Action definitions for the 1Sat SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,15 +20,15 @@
20
20
  "keywords": ["1sat", "bsv", "actions", "wallet", "ordinals"],
21
21
  "license": "MIT",
22
22
  "dependencies": {
23
- "@1sat/client": "^0.0.6",
24
- "@1sat/types": "^0.0.5",
23
+ "@1sat/client": "^0.0.7",
24
+ "@1sat/types": "^0.0.6",
25
25
  "@bopen-io/templates": "^1.1.8"
26
26
  },
27
27
  "peerDependencies": {
28
- "@bsv/sdk": "^2.0.1"
28
+ "@bsv/sdk": "^2.0.4"
29
29
  },
30
30
  "devDependencies": {
31
- "@bsv/sdk": "^2.0.1",
31
+ "@bsv/sdk": "^2.0.4",
32
32
  "typescript": "^5.9.3"
33
33
  }
34
34
  }