@sats-connect/core 0.0.7 → 0.0.8-24216ba
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 +28 -0
- package/dist/index.mjs +101 -3
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -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,26 @@ 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>;
|
|
471
495
|
|
|
472
496
|
interface Pubkey {
|
|
473
497
|
/**
|
|
@@ -675,6 +699,8 @@ interface RunesRequests {
|
|
|
675
699
|
runes_estimateEtch: EstimateRunesEtch;
|
|
676
700
|
runes_etch: EtchRunes;
|
|
677
701
|
runes_getOrder: GetOrder;
|
|
702
|
+
runes_estimateRbfOrder: EstimateRbfOrder;
|
|
703
|
+
runes_rbfOrder: RbfOrder;
|
|
678
704
|
}
|
|
679
705
|
type RunesRequestMethod = keyof RunesRequests;
|
|
680
706
|
type Requests = BtcRequests & StxRequests & RunesRequests;
|
|
@@ -690,6 +716,8 @@ declare abstract class SatsConnectAdapter {
|
|
|
690
716
|
private estimateMint;
|
|
691
717
|
private estimateEtch;
|
|
692
718
|
private getOrder;
|
|
719
|
+
private estimateRbfOrder;
|
|
720
|
+
private rbfOrder;
|
|
693
721
|
request<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
|
|
694
722
|
protected abstract requestInternal<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
|
|
695
723
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -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
|
}
|