@sats-connect/core 0.0.7 → 0.0.8-4307528
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/index.d.mts +51 -1
- package/dist/index.mjs +102 -4
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -114,7 +114,7 @@ interface Provider {
|
|
|
114
114
|
mozillaAddOnsUrl?: string;
|
|
115
115
|
googlePlayStoreUrl?: string;
|
|
116
116
|
iOSAppStoreUrl?: string;
|
|
117
|
-
methods?: (StxRequestMethod | BtcRequestMethod)[];
|
|
117
|
+
methods?: (StxRequestMethod | BtcRequestMethod | RunesRequestMethod)[];
|
|
118
118
|
}
|
|
119
119
|
interface SupportedWallet extends Provider {
|
|
120
120
|
isInstalled: boolean;
|
|
@@ -434,9 +434,18 @@ type GetOrderResponse = {
|
|
|
434
434
|
id: string;
|
|
435
435
|
orderType: 'rune_mint' | 'rune_etch';
|
|
436
436
|
state: 'new' | 'pending' | 'executing' | 'complete' | 'failed' | 'refunded' | 'stale';
|
|
437
|
+
fundingAddress: string;
|
|
437
438
|
reason?: string;
|
|
438
439
|
createdAt: string;
|
|
439
440
|
};
|
|
441
|
+
type RBFOrderRequest = {
|
|
442
|
+
orderId: string;
|
|
443
|
+
newFeeRate: number;
|
|
444
|
+
};
|
|
445
|
+
type RBFOrderResponse = {
|
|
446
|
+
rbfCost: number;
|
|
447
|
+
fundingAddress: string;
|
|
448
|
+
};
|
|
440
449
|
|
|
441
450
|
interface EstimateRunesMintParams extends EstimateMintOrderRequest {
|
|
442
451
|
network?: BitcoinNetworkType;
|
|
@@ -449,6 +458,7 @@ interface MintRunesParams extends CreateMintOrderRequest {
|
|
|
449
458
|
type MintRunesResult = {
|
|
450
459
|
orderId: string;
|
|
451
460
|
fundTransactionId: string;
|
|
461
|
+
fundingAddress: string;
|
|
452
462
|
};
|
|
453
463
|
type MintRunes = MethodParamsAndResult<MintRunesParams, MintRunesResult>;
|
|
454
464
|
interface EstimateRunesEtchParams extends EstimateEtchOrderRequest {
|
|
@@ -462,12 +472,46 @@ interface EtchRunesParams extends CreateEtchOrderRequest {
|
|
|
462
472
|
type EtchRunesResult = {
|
|
463
473
|
orderId: string;
|
|
464
474
|
fundTransactionId: string;
|
|
475
|
+
fundingAddress: string;
|
|
465
476
|
};
|
|
466
477
|
type EtchRunes = MethodParamsAndResult<EtchRunesParams, EtchRunesResult>;
|
|
467
478
|
interface GetOrderParams extends GetOrderRequest {
|
|
468
479
|
network?: BitcoinNetworkType;
|
|
469
480
|
}
|
|
470
481
|
type GetOrder = MethodParamsAndResult<GetOrderParams, GetOrderResponse>;
|
|
482
|
+
interface EstimateRbfOrderParams extends RBFOrderRequest {
|
|
483
|
+
network?: BitcoinNetworkType;
|
|
484
|
+
}
|
|
485
|
+
type EstimateRbfOrder = MethodParamsAndResult<EstimateRbfOrderParams, RBFOrderResponse>;
|
|
486
|
+
interface RbfOrderParams extends RBFOrderRequest {
|
|
487
|
+
network?: BitcoinNetworkType;
|
|
488
|
+
}
|
|
489
|
+
interface RbfOrderResult {
|
|
490
|
+
orderId: string;
|
|
491
|
+
fundRBFTransactionId: string;
|
|
492
|
+
fundingAddress: string;
|
|
493
|
+
}
|
|
494
|
+
type RbfOrder = MethodParamsAndResult<RbfOrderParams, RbfOrderResult>;
|
|
495
|
+
type GetRunesBalanceParams = null;
|
|
496
|
+
interface GetRunesBalanceResult {
|
|
497
|
+
balances: {
|
|
498
|
+
rune: string;
|
|
499
|
+
amount: string;
|
|
500
|
+
divisibility: number;
|
|
501
|
+
}[];
|
|
502
|
+
}
|
|
503
|
+
type GetRunesBalance = MethodParamsAndResult<GetRunesBalanceParams, GetRunesBalanceResult>;
|
|
504
|
+
type TransferRunesParams = {
|
|
505
|
+
recipients: {
|
|
506
|
+
runeName: string;
|
|
507
|
+
amount: number;
|
|
508
|
+
address: string;
|
|
509
|
+
}[];
|
|
510
|
+
};
|
|
511
|
+
interface TransferRunesResult {
|
|
512
|
+
txid: string;
|
|
513
|
+
}
|
|
514
|
+
type TransferRunes = MethodParamsAndResult<TransferRunesParams, TransferRunesResult>;
|
|
471
515
|
|
|
472
516
|
interface Pubkey {
|
|
473
517
|
/**
|
|
@@ -675,6 +719,10 @@ interface RunesRequests {
|
|
|
675
719
|
runes_estimateEtch: EstimateRunesEtch;
|
|
676
720
|
runes_etch: EtchRunes;
|
|
677
721
|
runes_getOrder: GetOrder;
|
|
722
|
+
runes_estimateRbfOrder: EstimateRbfOrder;
|
|
723
|
+
runes_rbfOrder: RbfOrder;
|
|
724
|
+
runes_getBalance: GetRunesBalance;
|
|
725
|
+
runes_transfer: TransferRunes;
|
|
678
726
|
}
|
|
679
727
|
type RunesRequestMethod = keyof RunesRequests;
|
|
680
728
|
type Requests = BtcRequests & StxRequests & RunesRequests;
|
|
@@ -690,6 +738,8 @@ declare abstract class SatsConnectAdapter {
|
|
|
690
738
|
private estimateMint;
|
|
691
739
|
private estimateEtch;
|
|
692
740
|
private getOrder;
|
|
741
|
+
private estimateRbfOrder;
|
|
742
|
+
private rbfOrder;
|
|
693
743
|
request<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
|
|
694
744
|
protected abstract requestInternal<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
|
|
695
745
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -15,7 +15,7 @@ var RpcErrorCode = /* @__PURE__ */ ((RpcErrorCode2) => {
|
|
|
15
15
|
return RpcErrorCode2;
|
|
16
16
|
})(RpcErrorCode || {});
|
|
17
17
|
|
|
18
|
-
// src/runes/
|
|
18
|
+
// src/runes/api.ts
|
|
19
19
|
import axios from "axios";
|
|
20
20
|
var ORDINALS_API_BASE_URL = (network = "Mainnet" /* Mainnet */) => `https://ordinals${network === "Testnet" /* Testnet */ ? "-testnet" : ""}.xverse.app/v1`;
|
|
21
21
|
var RunesApi = class {
|
|
@@ -134,6 +134,22 @@ var RunesApi = class {
|
|
|
134
134
|
};
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
|
+
rbfOrder = async (rbfRequest) => {
|
|
138
|
+
const { orderId, newFeeRate } = rbfRequest;
|
|
139
|
+
try {
|
|
140
|
+
const response = await this.client.post(`/orders/${orderId}/rbf-estimate`, {
|
|
141
|
+
newFeeRate
|
|
142
|
+
});
|
|
143
|
+
return {
|
|
144
|
+
data: response.data
|
|
145
|
+
};
|
|
146
|
+
} catch (error) {
|
|
147
|
+
const err = error;
|
|
148
|
+
return {
|
|
149
|
+
error: this.parseError(err)
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
};
|
|
137
153
|
};
|
|
138
154
|
var testnetClient = new RunesApi("Testnet" /* Testnet */);
|
|
139
155
|
var mainnetClient = new RunesApi("Mainnet" /* Mainnet */);
|
|
@@ -187,7 +203,8 @@ var SatsConnectAdapter = class {
|
|
|
187
203
|
status: "success",
|
|
188
204
|
result: {
|
|
189
205
|
orderId: orderResponse.data.orderId,
|
|
190
|
-
fundTransactionId: paymentResponse.result.txid
|
|
206
|
+
fundTransactionId: paymentResponse.result.txid,
|
|
207
|
+
fundingAddress: orderResponse.data.fundAddress
|
|
191
208
|
}
|
|
192
209
|
};
|
|
193
210
|
} catch (error) {
|
|
@@ -252,7 +269,8 @@ var SatsConnectAdapter = class {
|
|
|
252
269
|
status: "success",
|
|
253
270
|
result: {
|
|
254
271
|
orderId: orderResponse.data.orderId,
|
|
255
|
-
fundTransactionId: paymentResponse.result.txid
|
|
272
|
+
fundTransactionId: paymentResponse.result.txid,
|
|
273
|
+
fundingAddress: orderResponse.data.fundAddress
|
|
256
274
|
}
|
|
257
275
|
};
|
|
258
276
|
} catch (error) {
|
|
@@ -332,11 +350,85 @@ var SatsConnectAdapter = class {
|
|
|
332
350
|
return {
|
|
333
351
|
status: "error",
|
|
334
352
|
error: {
|
|
335
|
-
code: response.error.code === 400 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
|
|
353
|
+
code: response.error.code === 400 || response.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
|
|
336
354
|
message: response.error.message
|
|
337
355
|
}
|
|
338
356
|
};
|
|
339
357
|
}
|
|
358
|
+
async estimateRbfOrder(params) {
|
|
359
|
+
const rbfOrderRequest = {
|
|
360
|
+
newFeeRate: params.newFeeRate,
|
|
361
|
+
orderId: params.orderId
|
|
362
|
+
};
|
|
363
|
+
const response = await getRunesApiClient(params.network).rbfOrder(rbfOrderRequest);
|
|
364
|
+
if (response.data) {
|
|
365
|
+
return {
|
|
366
|
+
status: "success",
|
|
367
|
+
result: {
|
|
368
|
+
fundingAddress: response.data.fundingAddress,
|
|
369
|
+
rbfCost: response.data.rbfCost
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
return {
|
|
374
|
+
status: "error",
|
|
375
|
+
error: {
|
|
376
|
+
code: response.error.code === 400 || response.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
|
|
377
|
+
message: response.error.message
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
async rbfOrder(params) {
|
|
382
|
+
try {
|
|
383
|
+
const rbfOrderRequest = {
|
|
384
|
+
newFeeRate: params.newFeeRate,
|
|
385
|
+
orderId: params.orderId
|
|
386
|
+
};
|
|
387
|
+
const orderResponse = await getRunesApiClient(params.network).rbfOrder(rbfOrderRequest);
|
|
388
|
+
if (!orderResponse.data) {
|
|
389
|
+
return {
|
|
390
|
+
status: "error",
|
|
391
|
+
error: {
|
|
392
|
+
code: orderResponse.error.code === 400 || orderResponse.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
|
|
393
|
+
message: orderResponse.error.message
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
const paymentResponse = await this.requestInternal("sendTransfer", {
|
|
398
|
+
recipients: [
|
|
399
|
+
{
|
|
400
|
+
address: orderResponse.data.fundingAddress,
|
|
401
|
+
amount: orderResponse.data.rbfCost
|
|
402
|
+
}
|
|
403
|
+
]
|
|
404
|
+
});
|
|
405
|
+
if (paymentResponse?.status !== "success") {
|
|
406
|
+
return {
|
|
407
|
+
status: "error",
|
|
408
|
+
error: {
|
|
409
|
+
code: -32e3 /* USER_REJECTION */,
|
|
410
|
+
message: "User rejected the payment request"
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
return {
|
|
415
|
+
status: "success",
|
|
416
|
+
result: {
|
|
417
|
+
fundingAddress: orderResponse.data.fundingAddress,
|
|
418
|
+
orderId: rbfOrderRequest.orderId,
|
|
419
|
+
fundRBFTransactionId: paymentResponse.result.txid
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
} catch (error) {
|
|
423
|
+
return {
|
|
424
|
+
status: "error",
|
|
425
|
+
error: {
|
|
426
|
+
code: -32603 /* INTERNAL_ERROR */,
|
|
427
|
+
message: error.message
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
340
432
|
async request(method, params) {
|
|
341
433
|
switch (method) {
|
|
342
434
|
case "runes_mint":
|
|
@@ -350,6 +442,12 @@ var SatsConnectAdapter = class {
|
|
|
350
442
|
case "runes_getOrder": {
|
|
351
443
|
return this.getOrder(params);
|
|
352
444
|
}
|
|
445
|
+
case "runes_estimateRbfOrder": {
|
|
446
|
+
return this.estimateRbfOrder(params);
|
|
447
|
+
}
|
|
448
|
+
case "runes_rbfOrder": {
|
|
449
|
+
return this.rbfOrder(params);
|
|
450
|
+
}
|
|
353
451
|
default:
|
|
354
452
|
return this.requestInternal(method, params);
|
|
355
453
|
}
|