Repository navigation
Expand file tree
/
Copy pathindex.d.ts
More file actions
395 lines (357 loc) · 15 KB
/
Copy pathindex.d.ts
File metadata and controls
395 lines (357 loc) · 15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
// TypeScript surface for @utexo/rgb-lightning-node-nodejs.
//
// The Rust N-API layer exchanges JSON strings internally. The public
// JavaScript facade in index.js owns that marshalling, so package consumers
// pass plain objects and receive parsed JSON values.
export type JsonPrimitive = string | number | boolean | null
export type JsonValue = JsonPrimitive | JsonObject | JsonValue[]
export interface JsonObject { [key: string]: JsonValue }
export type JsonRequest = Record<string, unknown>
export interface ExternalUnlockRequest {
ldk_chain_sync:
| { mode: 'TransactionSync'; config: { indexer_url: string } }
| { mode: 'BlockSync'; config: {
bitcoind_rpc_username: string
bitcoind_rpc_password: string
bitcoind_rpc_host: string
bitcoind_rpc_port: number
} }
indexer_url?: string | null
proxy_endpoint?: string | null
announce_addresses?: string[]
announce_alias?: string | null
/** Ethereum JSON-RPC used by BFA validation. Omitted/null disables BFA. */
eth_rpc_url?: string | null
}
export interface ImportRgbContractRequest {
contract_base64: string
expected_asset_id: string
}
export interface ImportRgbTransferConsignmentRequest {
consignment_base64: string
offchain_txid: string
expected_asset_id?: string
}
export interface ImportRgbResponse {
asset_id: string
already_imported: boolean
metadata: JsonObject
}
/** Integer encoded as base-10 text so values never cross JS's safe-number boundary. */
export type DecimalString = `${bigint}`
/** Safe integers are numbers; larger native response integers are exact decimal strings. */
export type ExactInteger = number | DecimalString
export interface BurnRequest {
asset_id: string
/** Unsigned 64-bit amount; decimal strings preserve values beyond safe integers. */
amount: ExactInteger
/** Required for BFA assets: 32 bytes encoded as 64 hex characters, without 0x. */
burn_recipient?: string | null
/** Unsigned 64-bit fee rate in sat/vB. */
fee_rate: ExactInteger
min_confirmations: number
}
export interface BurnResponse {
txid: string
batch_transfer_idx: number
}
export interface DecodedLnInvoice {
description: string | null
description_hash: string | null
amt_msat: ExactInteger | null
expiry_sec: number
timestamp: number
asset_id: string | null
asset_amount: ExactInteger | null
payment_hash: string
payment_secret: string
payee_pubkey: string | null
min_final_cltv_expiry_delta: number
network: string
}
export type LightningPaymentStatus =
| 'Pending'
| 'Claimable'
| 'Claiming'
| 'Succeeded'
| 'Cancelled'
| 'Failed'
export interface SendPaymentResponse {
payment_id: string
payment_hash: string | null
payment_secret: string | null
status: LightningPaymentStatus
}
export interface LightningPayment {
amt_msat: ExactInteger | null
asset_amount: ExactInteger | null
asset_id: string | null
payment_hash: string
payment_type: 'Outbound' | 'InboundAutoClaim' | 'InboundHodl'
status: LightningPaymentStatus
created_at: number
updated_at: number
payee_pubkey: string
preimage: string | null
description: string | null
description_hash: string | null
}
export type DecodedRgbAssignment =
| { type: 'Fungible'; value: ExactInteger }
| { type: 'NonFungible' }
| { type: 'InflationRight'; value: ExactInteger }
| { type: 'Any' }
export interface DecodedRgbInvoice {
recipient_id: string
recipient_type: 'Blind' | 'Witness'
asset_schema: string | null
asset_id: string | null
assignment: DecodedRgbAssignment
network: string
expiration_timestamp: number | null
transport_endpoints: string[]
}
export interface BtcSendRequest {
amount: number
address: string
fee_rate: number
skip_sync: boolean
}
export interface CreateUtxosRequest {
up_to: boolean
num?: number
size?: number
fee_rate: number
skip_sync: boolean
}
export interface SendBtcResponse {
txid: string
}
export interface RgbAllocation {
asset_id: string | null
assignment: string
settled: boolean
}
export interface RgbUnspent {
utxo: {
outpoint: string
btc_amount: number
colorable: boolean
exists: boolean
}
rgb_allocations: RgbAllocation[]
/** Number of pending blinded receive reservations; never inferred from allocations. */
pending_blinded: number
}
export interface AssetLinkCreateRequest {
parent_asset_id: string
child_asset_id: string
min_confirmations: number
}
export interface AssetLinkRecord {
parent_asset_id: string
child_asset_id: string | null
created_at: number | null
txid: string | null
}
export class NativeExternalSigner {
static create(
seedHex: string,
network: 'mainnet' | 'testnet' | 'testnet4' | 'regtest' | 'signet',
permissiveSignerPolicy?: boolean
): NativeExternalSigner
static createWithStorage(
seedHex: string,
network: 'mainnet' | 'testnet' | 'testnet4' | 'regtest' | 'signet',
storageDirPath: string,
permissiveSignerPolicy?: boolean
): NativeExternalSigner
bootstrap(): JsonObject
/** Terminally revoke every clone after all attached nodes have shut down. Idempotent. */
shutdown(): void
/** Release only this host handle; does not revoke a signer retained by RLN. */
destroy(): void
}
export class SdkNode {
static create(request: JsonRequest): SdkNode
// External-signer lifecycle
initWithNativeExternalSigner(signer: NativeExternalSigner): void
attachNativeExternalSigner(signer: NativeExternalSigner): void
unlockWithNativeExternalSigner(signer: NativeExternalSigner, request: ExternalUnlockRequest): void
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
startUnlockWithNativeExternalSigner(
signer: NativeExternalSigner,
request: JsonRequest
): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
nativeOperationStatus(operationId: string): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
adoptNativeOperation(operationId: string): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
cancelNativeOperation(operationId: string): never
initWithExternalSigner(bootstrap: JsonRequest): void
detachExternalSigner(): void
unlockWithAttachedExternalSigner(request: ExternalUnlockRequest): void
shutdown(): void
// VSS / APay
/** Explicit takeover of a stale writer fence; call only on a locked node after stopping its previous writer. */
vssClearFence(request: { password: string }): void
/** Flush configured VSS backup from an unlocked node. */
vssBackup(): { version: number | string }
/** Read actual remote RGB snapshot status without uploading or taking ownership. */
vssBackupInfo(): { backup_exists: boolean; version: number | string | null; backup_required: boolean; last_auto_backup_failed: boolean }
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
vssBackupMetadata(): { schema_version: 1; automatic_backup_enabled: boolean; last_backup: { version: number | string; completed_at_ms: number; network: string; vss_url: string; node_id: string } | null }
setVssAutomaticBackupEnabled(enabled: boolean): { automatic_backup_enabled: boolean }
prepareVssRestore(): VssRestoreResult
vssRestoreInfo(): (VssRestoreSuccess & { unlocked: boolean }) | null
vssDeleteAll(request: { password: string }): never
apayNew(hostNodeId: string): JsonObject
apayNewWithAddress(hostNodeId: string, username: string, domain: string): JsonObject
// Node info / network / sync
nodeInfo(): JsonObject
networkInfo(): JsonObject
sync(): JsonValue
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
syncWallet(request: JsonRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
walletSnapshot(request?: JsonRequest): never
getAddress(): JsonObject
address(): JsonObject
rotateAddress(): JsonObject
// Peers / channels
connectPeer(peerPubkeyAndAddr: string): JsonValue
disconnectPeer(request: JsonRequest): JsonValue
listPeers(): JsonValue
openChannel(request: JsonRequest): JsonValue
closeChannel(request: JsonRequest): JsonValue
listChannels(): JsonValue
getChannelId(temporaryChannelIdHex: string): JsonValue
// BTC / UTXOs
btcBalance(skipSync?: boolean): JsonObject
listUnspents(skipSync?: boolean): RgbUnspent[]
listTransactions(skipSync?: boolean): JsonValue
listTransactionsByTxid(txid: string, skipSync?: boolean): JsonValue
sendBtc(request: BtcSendRequest): SendBtcResponse
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
prepareBtcSend(request: BtcSendRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
commitPreparedBtcSend(request: JsonRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
cancelBtcSendPlan(request: { plan_id: string }): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
prepareCreateUtxos(request: CreateUtxosRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
commitPreparedCreateUtxos(request: JsonRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
cancelCreateUtxosPlan(request: { plan_id: string }): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
listPendingVanillaTransactions(): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
listAddressReceipts(address: string): never
createUtxos(request: JsonRequest): JsonValue
estimateFee(blocks: number): JsonObject
// Lightning invoices / payments
lnInvoice(request: JsonRequest): JsonObject
decodeLnInvoice(invoice: string): DecodedLnInvoice
invoiceStatus(invoice: string): JsonObject
cancelHodlInvoice(request: JsonRequest): JsonValue
claimHodlInvoice(request: JsonRequest): JsonValue
sendPayment(request: JsonRequest): SendPaymentResponse
keysend(request: JsonRequest): JsonValue
listPayments(): LightningPayment[]
getPayment(paymentHashHex: string, paymentType: string): LightningPayment
// Atomic swaps
makerInit(request: JsonRequest): JsonValue
makerExecute(request: JsonRequest): JsonValue
taker(request: JsonRequest): JsonValue
listSwaps(): JsonValue
getSwap(paymentHash: string, taker: boolean): JsonValue
// RGB issuance / assets
issueAssetNia(request: JsonRequest): JsonValue
issueAssetUda(request: JsonRequest): JsonValue
issueAssetCfa(request: JsonRequest): JsonValue
issueAssetIfa(request: JsonRequest): JsonValue
listAssets(filterAssetSchemas?: string[]): JsonValue
assetBalance(assetId: string): JsonObject
assetLinkCreate(request: AssetLinkCreateRequest): AssetLinkRecord
assetMetadata(assetId: string): JsonObject
// RGB invoices / transfers
rgbInvoice(request: JsonRequest): JsonObject
decodeRgbInvoice(invoice: string): DecodedRgbInvoice
sendRgb(request: JsonRequest): JsonValue
/** Validated metadata import for an already accepted transfer; does not accept ownership. */
importRgbTransferConsignment(request: ImportRgbTransferConsignmentRequest): ImportRgbResponse
/** Validated public contract metadata import; does not create allocations or a balance. */
importRgbContract(request: ImportRgbContractRequest): ImportRgbResponse
/** Local consignment bytes, encoded as lowercase hexadecimal (not base64). */
getConsignment(assetId: string, txid: string): { bytes_hex: string }
/** Native filesystem path. A consignment export is not a complete wallet backup. */
getConsignmentPath(assetId: string, txid: string): { path: string }
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
prepareRgbSend(request: JsonRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
commitPreparedRgbSend(request: JsonRequest): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
cancelRgbSendPlan(request: { plan_id: string }): never
/** @deprecated Unsupported by released RLN; always throws UnsupportedCapabilityError. */
listPendingRgbSendPlans(): never
refreshTransfers(request: JsonRequest): RefreshTransfersResponse
failTransfers(request: JsonRequest): JsonValue
inflate(request: JsonRequest): JsonValue
burn(request: BurnRequest): BurnResponse
burnAsset(request: BurnRequest): BurnResponse
listTransfers(assetId?: string, txid?: string): JsonValue
listTransfers(filters: { asset_id?: string; txid?: string }): JsonValue
listTransfersByTxid(txid: string): JsonValue
// RGB asset media
getAssetMedia(digest: string): JsonValue
postAssetMedia(request: JsonRequest): JsonValue
// Signing / onion / diagnostics
/** Canonical first vanilla BIP86 receive address, with no allocation/rotation. Requires unlocked native signer. */
getMessageSigningAddress(): string
/** Exact UTF-8 message (0..4096 bytes); requested address must match getMessageSigningAddress(). Returns smp-prefixed proof. */
signMessageBip322(message: string, address: string): string
/** Read-only; P2TR key-path and compressed-key P2WPKH simple proofs only. */
verifyMessageBip322(message: string, address: string, signature: string): boolean
signMessage(message: string): JsonObject
verifyMessage(message: string, signature: string): { valid: boolean }
sendOnionMessage(request: JsonRequest): JsonValue
checkIndexerUrl(indexerUrl: string): JsonObject
checkProxyEndpoint(proxyEndpoint: string): JsonValue
}
export function uniffiHealthcheck(): string
export interface RuntimeInfo {
readonly abi_version: 1
readonly rln_version: '0.17.0-beta.3'
readonly rln_commit: string
readonly lightning_commit: string
readonly adapter_sha256: string
readonly wrapper_sha256: string
readonly lock_sha256: string
readonly target: string
readonly capabilities: readonly string[]
readonly vss_policy: Readonly<{
supported: true
code: null
reason: null
}>
}
export interface RefreshTransfersResponse {
transfers: Record<string, {
updated_status: string | null
failure: { name: string; message: string } | null
}>
}
export class UnsupportedCapabilityError extends Error {
readonly code: 'ERR_RLN_UNSUPPORTED_CAPABILITY'
readonly capability: string
}
export function getRuntimeInfo(): RuntimeInfo
export function uniffiIsInitialized(): boolean
export function sdkInitialize(request?: JsonRequest): void
export function sdkShutdown(): void
/** Pure offline verification; accepts smp and historical unprefixed simple proofs, never full/PoF. */
export function verifyMessageBip322(message: string, address: string, signature: string, network: string): boolean
export interface VssRestoreSuccess { restored: true; status: 'restored'; network: string; node_id: string; master_fingerprint: string; version: number | string }
export type VssRestoreResult = VssRestoreSuccess | { restored: false; status: 'not_found'; network: string; node_id: string; master_fingerprint: string; version: null }