@sats-connect/core 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.
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sats-connect/core",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "main": "dist/index.mjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",