@kaleidorg/mind 0.1.0 → 0.3.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/dist/capabilities.d.ts +38 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +41 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/context/budget.d.ts +29 -0
- package/dist/context/budget.d.ts.map +1 -0
- package/dist/context/budget.js +36 -0
- package/dist/context/budget.js.map +1 -0
- package/dist/context/builder.d.ts +39 -0
- package/dist/context/builder.d.ts.map +1 -0
- package/dist/context/builder.js +77 -0
- package/dist/context/builder.js.map +1 -0
- package/dist/engine.d.ts +9 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/fastpath/fastpath.d.ts +38 -0
- package/dist/fastpath/fastpath.d.ts.map +1 -0
- package/dist/fastpath/fastpath.js +52 -0
- package/dist/fastpath/fastpath.js.map +1 -0
- package/dist/funnel.d.ts +117 -0
- package/dist/funnel.d.ts.map +1 -0
- package/dist/funnel.js +195 -0
- package/dist/funnel.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -1
- package/dist/kaleidoswap/contract.d.ts +72 -0
- package/dist/kaleidoswap/contract.d.ts.map +1 -0
- package/dist/kaleidoswap/contract.js +125 -0
- package/dist/kaleidoswap/contract.js.map +1 -0
- package/dist/knowledge/bitcoin-copilot.d.ts +11 -0
- package/dist/knowledge/bitcoin-copilot.d.ts.map +1 -0
- package/dist/knowledge/bitcoin-copilot.js +155 -0
- package/dist/knowledge/bitcoin-copilot.js.map +1 -0
- package/dist/knowledge/btc-map.d.ts +87 -0
- package/dist/knowledge/btc-map.d.ts.map +1 -0
- package/dist/knowledge/btc-map.js +365 -0
- package/dist/knowledge/btc-map.js.map +1 -0
- package/dist/knowledge/merchants.d.ts +24 -0
- package/dist/knowledge/merchants.d.ts.map +1 -0
- package/dist/knowledge/merchants.js +34 -0
- package/dist/knowledge/merchants.js.map +1 -0
- package/dist/knowledge/wallet.d.ts +34 -0
- package/dist/knowledge/wallet.d.ts.map +1 -0
- package/dist/knowledge/wallet.js +63 -0
- package/dist/knowledge/wallet.js.map +1 -0
- package/dist/lsps1/contract.d.ts +55 -0
- package/dist/lsps1/contract.d.ts.map +1 -0
- package/dist/lsps1/contract.js +91 -0
- package/dist/lsps1/contract.js.map +1 -0
- package/dist/memory/store.d.ts +40 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +143 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/tool.d.ts +9 -0
- package/dist/memory/tool.d.ts.map +1 -0
- package/dist/memory/tool.js +70 -0
- package/dist/memory/tool.js.map +1 -0
- package/dist/memory/types.d.ts +68 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +14 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/rag/retriever.d.ts +30 -0
- package/dist/rag/retriever.d.ts.map +1 -0
- package/dist/rag/retriever.js +72 -0
- package/dist/rag/retriever.js.map +1 -0
- package/dist/rag/tool.d.ts +15 -0
- package/dist/rag/tool.d.ts.map +1 -0
- package/dist/rag/tool.js +42 -0
- package/dist/rag/tool.js.map +1 -0
- package/dist/rag/types.d.ts +44 -0
- package/dist/rag/types.d.ts.map +1 -0
- package/dist/rag/types.js +11 -0
- package/dist/rag/types.js.map +1 -0
- package/dist/rag/vector-store.d.ts +23 -0
- package/dist/rag/vector-store.d.ts.map +1 -0
- package/dist/rag/vector-store.js +72 -0
- package/dist/rag/vector-store.js.map +1 -0
- package/dist/recipe/asset-send.d.ts +15 -0
- package/dist/recipe/asset-send.d.ts.map +1 -0
- package/dist/recipe/asset-send.js +83 -0
- package/dist/recipe/asset-send.js.map +1 -0
- package/dist/recipe/kaleidoswap-atomic.d.ts +27 -0
- package/dist/recipe/kaleidoswap-atomic.d.ts.map +1 -0
- package/dist/recipe/kaleidoswap-atomic.js +111 -0
- package/dist/recipe/kaleidoswap-atomic.js.map +1 -0
- package/dist/recipe/payments.d.ts +15 -0
- package/dist/recipe/payments.d.ts.map +1 -0
- package/dist/recipe/payments.js +119 -0
- package/dist/recipe/payments.js.map +1 -0
- package/dist/recipe/receive.d.ts +14 -0
- package/dist/recipe/receive.d.ts.map +1 -0
- package/dist/recipe/receive.js +109 -0
- package/dist/recipe/receive.js.map +1 -0
- package/dist/recipe/runner.d.ts +42 -0
- package/dist/recipe/runner.d.ts.map +1 -0
- package/dist/recipe/runner.js +106 -0
- package/dist/recipe/runner.js.map +1 -0
- package/dist/recipe/swap.d.ts +16 -0
- package/dist/recipe/swap.d.ts.map +1 -0
- package/dist/recipe/swap.js +73 -0
- package/dist/recipe/swap.js.map +1 -0
- package/dist/recipe/types.d.ts +71 -0
- package/dist/recipe/types.d.ts.map +1 -0
- package/dist/recipe/types.js +13 -0
- package/dist/recipe/types.js.map +1 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +20 -2
- package/dist/skills/registry.js.map +1 -1
- package/dist/tools/cli.d.ts +43 -0
- package/dist/tools/cli.d.ts.map +1 -0
- package/dist/tools/cli.js +61 -0
- package/dist/tools/cli.js.map +1 -0
- package/dist/tools/mcp.d.ts +3 -2
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mcp.js +3 -2
- package/dist/tools/mcp.js.map +1 -1
- package/dist/wallet/confirm.d.ts +12 -0
- package/dist/wallet/confirm.d.ts.map +1 -0
- package/dist/wallet/confirm.js +67 -0
- package/dist/wallet/confirm.js.map +1 -0
- package/dist/wallet/contract.d.ts +57 -0
- package/dist/wallet/contract.d.ts.map +1 -0
- package/dist/wallet/contract.js +113 -0
- package/dist/wallet/contract.js.map +1 -0
- package/package.json +10 -5
- package/skills/README.md +6 -1
- package/skills/kaleido-lsps/SKILL.md +56 -0
- package/skills/kaleido-trading/SKILL.md +85 -18
- package/skills/merchant-finder/SKILL.md +87 -0
- package/skills/paid-data/SKILL.md +12 -0
- package/skills/wallet-assistant/SKILL.md +38 -0
- package/src/capabilities.ts +79 -0
- package/src/context/budget.ts +46 -0
- package/src/context/builder.ts +100 -0
- package/src/context/context.test.ts +87 -0
- package/src/engine.ts +6 -0
- package/src/fastpath/fastpath.test.ts +34 -0
- package/src/fastpath/fastpath.ts +70 -0
- package/src/funnel.test.ts +207 -0
- package/src/funnel.ts +285 -0
- package/src/index.ts +128 -0
- package/src/kaleidoswap/contract.test.ts +147 -0
- package/src/kaleidoswap/contract.ts +212 -0
- package/src/knowledge/bitcoin-copilot.ts +177 -0
- package/src/knowledge/btc-map.test.ts +188 -0
- package/src/knowledge/btc-map.ts +446 -0
- package/src/knowledge/knowledge.test.ts +63 -0
- package/src/knowledge/merchants.ts +49 -0
- package/src/knowledge/wallet.ts +84 -0
- package/src/lsps1/contract.test.ts +81 -0
- package/src/lsps1/contract.ts +132 -0
- package/src/memory/memory.test.ts +140 -0
- package/src/memory/store.ts +174 -0
- package/src/memory/tool.ts +76 -0
- package/src/memory/types.ts +76 -0
- package/src/rag/rag.test.ts +85 -0
- package/src/rag/retriever.ts +94 -0
- package/src/rag/tool.ts +55 -0
- package/src/rag/types.ts +49 -0
- package/src/rag/vector-store.ts +78 -0
- package/src/recipe/asset-send.ts +79 -0
- package/src/recipe/kaleidoswap-atomic.test.ts +138 -0
- package/src/recipe/kaleidoswap-atomic.ts +117 -0
- package/src/recipe/payments.ts +116 -0
- package/src/recipe/receive.ts +98 -0
- package/src/recipe/recipe.test.ts +193 -0
- package/src/recipe/runner.ts +134 -0
- package/src/recipe/swap.ts +74 -0
- package/src/recipe/types.ts +76 -0
- package/src/skills/registry.ts +21 -2
- package/src/skills/skills.test.ts +42 -0
- package/src/tools/cli.test.ts +53 -0
- package/src/tools/cli.ts +98 -0
- package/src/tools/mcp.ts +3 -2
- package/src/wallet/confirm.test.ts +57 -0
- package/src/wallet/confirm.ts +74 -0
- package/src/wallet/contract.test.ts +89 -0
- package/src/wallet/contract.ts +157 -0
- package/skills/kaleido-wallet/SKILL.md +0 -28
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical multi-L2 wallet tool contract — the single source of truth for
|
|
3
|
+
* KaleidoMind's wallet tools (names + JSON schemas + spend flags).
|
|
4
|
+
*
|
|
5
|
+
* Every surface implements THESE EXACT tools, only the transport differs:
|
|
6
|
+
* - mobile → in-process handlers over the WDK adapters (`bindWalletTools`)
|
|
7
|
+
* - desktop → kaleido-mcp (tools namespaced per layer) + a `kaleido` CLI
|
|
8
|
+
* - eval → stub handlers
|
|
9
|
+
*
|
|
10
|
+
* Because the schemas are identical everywhere, skills are portable and the
|
|
11
|
+
* model comparison is honest. Tools are namespaced per layer (`spark_*`,
|
|
12
|
+
* `rln_*`, `arkade_*`, `liquid_*`); cross-cutting router/helpers are unprefixed.
|
|
13
|
+
*
|
|
14
|
+
* Spend tools (move funds) carry `spend: true` → `requiresConfirmation: true`,
|
|
15
|
+
* so the Engine always pauses for the host's confirm gate before executing.
|
|
16
|
+
*
|
|
17
|
+
* Pure data — no deps, RN-safe.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import type { ToolDef } from '../types.js';
|
|
21
|
+
import { InProcessToolSource } from '../tools/in-process.js';
|
|
22
|
+
import type { InProcessTool } from '../tools/in-process.js';
|
|
23
|
+
|
|
24
|
+
export type WalletLayer = 'spark' | 'rln' | 'arkade' | 'liquid' | 'core';
|
|
25
|
+
|
|
26
|
+
export interface WalletToolDef extends ToolDef {
|
|
27
|
+
/** Which L2 (or 'core' for cross-cutting router/helpers). */
|
|
28
|
+
layer: WalletLayer;
|
|
29
|
+
/** Moves funds → confirmation-gated. */
|
|
30
|
+
spend?: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type Props = Record<string, { type: string; description?: string; enum?: string[] }>;
|
|
34
|
+
|
|
35
|
+
function t(
|
|
36
|
+
layer: WalletLayer,
|
|
37
|
+
name: string,
|
|
38
|
+
description: string,
|
|
39
|
+
properties: Props = {},
|
|
40
|
+
required: string[] = [],
|
|
41
|
+
spend = false,
|
|
42
|
+
): WalletToolDef {
|
|
43
|
+
return {
|
|
44
|
+
layer,
|
|
45
|
+
name,
|
|
46
|
+
description,
|
|
47
|
+
spend,
|
|
48
|
+
requiresConfirmation: spend,
|
|
49
|
+
parameters: { type: 'object', properties, required },
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const sats = { type: 'number', description: 'Amount in satoshis' } as const;
|
|
54
|
+
const asset = { type: 'string', description: "Asset ticker, e.g. 'USDT', 'XAUT', 'BTC'" } as const;
|
|
55
|
+
|
|
56
|
+
/** The full contract. Keep descriptions terse — small models read every word. */
|
|
57
|
+
export const WALLET_TOOLS: WalletToolDef[] = [
|
|
58
|
+
// ── Spark ──────────────────────────────────────────────────────────────
|
|
59
|
+
t('spark', 'spark_get_balance', 'Get the Spark wallet BTC balance.'),
|
|
60
|
+
t('spark', 'spark_get_address', 'Get a Spark deposit address to receive BTC.'),
|
|
61
|
+
t('spark', 'spark_create_invoice', 'Create a Spark Lightning invoice to receive BTC.', { amount_sats: sats }),
|
|
62
|
+
t('spark', 'spark_send', 'Send BTC from Spark to an address or invoice.', { amount_sats: sats, to: { type: 'string', description: 'Address or invoice' } }, ['amount_sats', 'to'], true),
|
|
63
|
+
|
|
64
|
+
// ── RLN / RGB ──────────────────────────────────────────────────────────
|
|
65
|
+
t('rln', 'rln_get_balances', 'Get RLN node balances (BTC + RGB assets).'),
|
|
66
|
+
t('rln', 'rln_get_node_info', 'Get RLN node status and sync state.'),
|
|
67
|
+
t('rln', 'rln_list_channels', 'List the RLN node Lightning channels.'),
|
|
68
|
+
t('rln', 'rln_create_ln_invoice', 'Create a Lightning (BTC) invoice on the RLN node.', { amount_sats: sats }),
|
|
69
|
+
t('rln', 'rln_create_rgb_invoice', 'Create an RGB asset invoice to receive an asset (e.g. USDT).', { asset, amount: { type: 'number', description: 'Asset amount' } }, ['asset', 'amount']),
|
|
70
|
+
t('rln', 'rln_pay_invoice', 'Pay a Lightning invoice from the RLN node.', { invoice: { type: 'string' } }, ['invoice'], true),
|
|
71
|
+
t('rln', 'rln_send_asset', 'Send an RGB asset (e.g. USDT) to a recipient.', { asset, amount: { type: 'number' }, to: { type: 'string' } }, ['asset', 'amount', 'to'], true),
|
|
72
|
+
|
|
73
|
+
// ── Arkade ─────────────────────────────────────────────────────────────
|
|
74
|
+
t('arkade', 'arkade_get_balance', 'Get the Arkade wallet balance.'),
|
|
75
|
+
t('arkade', 'arkade_get_address', 'Get an Arkade address to receive funds.'),
|
|
76
|
+
t('arkade', 'arkade_send', 'Send BTC from Arkade to a recipient.', { amount_sats: sats, to: { type: 'string' } }, ['amount_sats', 'to'], true),
|
|
77
|
+
|
|
78
|
+
// ── Liquid (later) ─────────────────────────────────────────────────────
|
|
79
|
+
t('liquid', 'liquid_get_balance', 'Get the Liquid wallet balance (L-BTC + assets).'),
|
|
80
|
+
t('liquid', 'liquid_create_invoice', 'Create a Liquid invoice/address to receive (L-BTC or L-USDt).', { asset, amount: { type: 'number' } }),
|
|
81
|
+
t('liquid', 'liquid_send', 'Send a Liquid asset (L-BTC or L-USDt) to a recipient.', { asset, amount: { type: 'number' }, to: { type: 'string' } }, ['asset', 'amount', 'to'], true),
|
|
82
|
+
|
|
83
|
+
// ── Core: router + helpers ─────────────────────────────────────────────
|
|
84
|
+
t('core', 'get_balances', 'Get balances across all layers (or one layer).', { layer: { type: 'string', enum: ['spark', 'rln', 'arkade', 'liquid'], description: 'Optional: a single layer' } }),
|
|
85
|
+
t('core', 'resolve_contact', 'Resolve a contact name to a Lightning address / Nostr / preferred rail.', { name: { type: 'string', description: 'Contact name, e.g. "bob"' } }, ['name']),
|
|
86
|
+
t('core', 'get_price', 'Get the current price of an asset, optionally in a fiat currency.', { asset, fiat: { type: 'string', description: "Fiat code, e.g. 'EUR', 'USD'" } }),
|
|
87
|
+
t('core', 'fiat_to_sats', 'Convert a fiat amount to satoshis at the current rate.', { amount: { type: 'number' }, currency: { type: 'string', description: "Fiat code, e.g. 'EUR'" } }, ['amount', 'currency']),
|
|
88
|
+
t('core', 'get_swap_quote', 'Quote a swap between two assets.', { from_asset: asset, to_asset: asset, amount: { type: 'number' } }, ['from_asset', 'to_asset', 'amount']),
|
|
89
|
+
t('core', 'execute_swap', 'Execute a previously quoted swap.', { quote_id: { type: 'string' }, from_asset: asset, to_asset: asset, amount: { type: 'number' } }, [], true),
|
|
90
|
+
// The high-level entry a skill prefers — picks the rail for the asset, or uses `layer`.
|
|
91
|
+
t('core', 'send_payment', 'Send a payment, automatically choosing the best layer for the asset (or use `layer`).', { asset, amount_sats: sats, to: { type: 'string', description: 'Contact, address, or invoice' }, layer: { type: 'string', enum: ['spark', 'rln', 'arkade', 'liquid'] } }, ['to'], true),
|
|
92
|
+
// High-level receive — picks the right invoice/address tool for the asset/layer.
|
|
93
|
+
t('core', 'create_invoice', 'Create an invoice or address to receive funds, choosing the rail for the asset (or use `layer`). Omit amount for an any-amount invoice.', { asset, amount: { type: 'number', description: 'Amount (sats for BTC, asset units otherwise) — optional' }, layer: { type: 'string', enum: ['spark', 'rln', 'arkade', 'liquid'] } }),
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
// ── Selectors ───────────────────────────────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
export const WALLET_LAYERS: WalletLayer[] = ['spark', 'rln', 'arkade', 'liquid', 'core'];
|
|
99
|
+
|
|
100
|
+
/** Names of all spend (fund-moving) tools — these are confirmation-gated. */
|
|
101
|
+
export const SPEND_TOOLS: ReadonlySet<string> = new Set(WALLET_TOOLS.filter((x) => x.spend).map((x) => x.name));
|
|
102
|
+
|
|
103
|
+
export function isSpendTool(name: string): boolean {
|
|
104
|
+
return SPEND_TOOLS.has(name);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function getWalletTool(name: string): WalletToolDef | undefined {
|
|
108
|
+
return WALLET_TOOLS.find((x) => x.name === name);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Pick the contract tools for the given layers (core helpers included by default). */
|
|
112
|
+
export function walletTools(opts: { layers?: WalletLayer[]; includeCore?: boolean } = {}): WalletToolDef[] {
|
|
113
|
+
const layers = new Set(opts.layers ?? (['spark', 'rln', 'arkade', 'liquid'] as WalletLayer[]));
|
|
114
|
+
if (opts.includeCore !== false) layers.add('core');
|
|
115
|
+
return WALLET_TOOLS.filter((x) => layers.has(x.layer));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Strip to plain ToolDefs (drop the layer/spend metadata). */
|
|
119
|
+
export function toToolDefs(tools: WalletToolDef[]): ToolDef[] {
|
|
120
|
+
return tools.map(({ name, description, parameters, requiresConfirmation }) => ({ name, description, parameters, requiresConfirmation }));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** A handler bound to one contract tool. */
|
|
124
|
+
export type WalletHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
125
|
+
|
|
126
|
+
export interface BindWalletOptions {
|
|
127
|
+
layers?: WalletLayer[];
|
|
128
|
+
includeCore?: boolean;
|
|
129
|
+
/** Skip tools that have no handler instead of throwing (default false). */
|
|
130
|
+
allowMissing?: boolean;
|
|
131
|
+
id?: string;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Bind contract tools to in-process handlers → an InProcessToolSource. The
|
|
136
|
+
* mobile (and eval) binding: pass a map of `{ toolName: handler }` and you get a
|
|
137
|
+
* ToolSource implementing the canonical schemas with spend flags preserved.
|
|
138
|
+
*/
|
|
139
|
+
export function bindWalletTools(handlers: Record<string, WalletHandler>, opts: BindWalletOptions = {}): InProcessToolSource {
|
|
140
|
+
const tools = walletTools(opts);
|
|
141
|
+
const bound: InProcessTool[] = [];
|
|
142
|
+
for (const def of tools) {
|
|
143
|
+
const handler = handlers[def.name];
|
|
144
|
+
if (!handler) {
|
|
145
|
+
if (opts.allowMissing) continue;
|
|
146
|
+
throw new Error(`bindWalletTools: no handler for "${def.name}"`);
|
|
147
|
+
}
|
|
148
|
+
bound.push({
|
|
149
|
+
name: def.name,
|
|
150
|
+
description: def.description,
|
|
151
|
+
parameters: def.parameters,
|
|
152
|
+
requiresConfirmation: def.requiresConfirmation,
|
|
153
|
+
handler,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return new InProcessToolSource(opts.id ?? 'wallet', bound);
|
|
157
|
+
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: kaleido-wallet
|
|
3
|
-
description: "Manage a KaleidoSwap Lightning + RGB wallet: check BTC and asset balances, get a receive address, create or pay Lightning invoices, send on-chain BTC, open or list channels. Triggers when the user asks about their balance, wants to receive or send funds, pay an invoice, or manage Lightning channels."
|
|
4
|
-
tools: wdk_get_balances, wdk_get_asset_balance, wdk_get_address, wdk_create_ln_invoice, wdk_pay_invoice, wdk_send_btc, wdk_list_channels, wdk_open_channel, wdk_get_node_info
|
|
5
|
-
triggers: balance, receive, address, send, pay, invoice, channel, deposit, withdraw, funds
|
|
6
|
-
metadata:
|
|
7
|
-
author: kaleidoswap
|
|
8
|
-
version: "0.1.0"
|
|
9
|
-
surface: "kaleido-mcp (WDK node)"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# KaleidoSwap wallet
|
|
13
|
-
|
|
14
|
-
Operate the user's KaleidoSwap node (Lightning + RGB assets) through the
|
|
15
|
-
`wdk_*` MCP tools.
|
|
16
|
-
|
|
17
|
-
## Rules
|
|
18
|
-
|
|
19
|
-
- **Read before you write.** Check the balance (`wdk_get_balances`) before any
|
|
20
|
-
send or channel open, and confirm the node is healthy (`wdk_get_node_info`).
|
|
21
|
-
- **Confirm every spend.** State the amount, destination, and resulting balance,
|
|
22
|
-
then wait for explicit approval before calling `wdk_send_btc`,
|
|
23
|
-
`wdk_pay_invoice`, or `wdk_open_channel`.
|
|
24
|
-
- **Match the rail to the asset.** Lightning for fast BTC/asset payments,
|
|
25
|
-
on-chain for settlement or channel funding. Use `wdk_get_asset_balance` for
|
|
26
|
-
RGB assets (USDT, XAUT, …).
|
|
27
|
-
- Never reveal seeds or private keys — this skill operates a node, it is not a
|
|
28
|
-
key vault.
|