@sats-connect/core 0.0.6 → 0.0.7-3dc7c89

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
@@ -437,6 +437,14 @@ type GetOrderResponse = {
437
437
  reason?: string;
438
438
  createdAt: string;
439
439
  };
440
+ type RPFOrderRequest = {
441
+ orderId: string;
442
+ newFeeRate: number;
443
+ };
444
+ type RPFOrderResponse = {
445
+ rbfCost: number;
446
+ fundingAddress: string;
447
+ };
440
448
 
441
449
  interface EstimateRunesMintParams extends EstimateMintOrderRequest {
442
450
  network?: BitcoinNetworkType;
@@ -449,6 +457,7 @@ interface MintRunesParams extends CreateMintOrderRequest {
449
457
  type MintRunesResult = {
450
458
  orderId: string;
451
459
  fundTransactionId: string;
460
+ fundingAddress: string;
452
461
  };
453
462
  type MintRunes = MethodParamsAndResult<MintRunesParams, MintRunesResult>;
454
463
  interface EstimateRunesEtchParams extends EstimateEtchOrderRequest {
@@ -462,12 +471,26 @@ interface EtchRunesParams extends CreateEtchOrderRequest {
462
471
  type EtchRunesResult = {
463
472
  orderId: string;
464
473
  fundTransactionId: string;
474
+ fundingAddress: string;
465
475
  };
466
476
  type EtchRunes = MethodParamsAndResult<EtchRunesParams, EtchRunesResult>;
467
477
  interface GetOrderParams extends GetOrderRequest {
468
478
  network?: BitcoinNetworkType;
469
479
  }
470
480
  type GetOrder = MethodParamsAndResult<GetOrderParams, GetOrderResponse>;
481
+ interface EstimateRpfOrderParams extends RPFOrderRequest {
482
+ network?: BitcoinNetworkType;
483
+ }
484
+ type EstimateRpfOrder = MethodParamsAndResult<EstimateRpfOrderParams, RPFOrderResponse>;
485
+ interface RpfOrderParams extends RPFOrderRequest {
486
+ network?: BitcoinNetworkType;
487
+ }
488
+ interface RpfOrderResult {
489
+ orderId: string;
490
+ fundRBFTransactionId: string;
491
+ fundingAddress: string;
492
+ }
493
+ type RpfOrder = MethodParamsAndResult<RpfOrderParams, RpfOrderResult>;
471
494
 
472
495
  interface Pubkey {
473
496
  /**
@@ -675,6 +698,8 @@ interface RunesRequests {
675
698
  runes_estimateEtch: EstimateRunesEtch;
676
699
  runes_etch: EtchRunes;
677
700
  runes_getOrder: GetOrder;
701
+ runes_estimateRpfOrder: EstimateRpfOrder;
702
+ runes_rpfOrder: RpfOrder;
678
703
  }
679
704
  type RunesRequestMethod = keyof RunesRequests;
680
705
  type Requests = BtcRequests & StxRequests & RunesRequests;
@@ -690,6 +715,8 @@ declare abstract class SatsConnectAdapter {
690
715
  private estimateMint;
691
716
  private estimateEtch;
692
717
  private getOrder;
718
+ private estimateRpfOrder;
719
+ private rpfOrder;
693
720
  request<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
694
721
  protected abstract requestInternal<Method extends keyof Requests>(method: Method, params: Params<Method>): Promise<RpcResult<Method> | undefined>;
695
722
  }
package/dist/index.mjs CHANGED
@@ -134,6 +134,22 @@ var RunesApi = class {
134
134
  };
135
135
  }
136
136
  };
137
+ rpfOrder = async (rpfRequest) => {
138
+ const { orderId, newFeeRate } = rpfRequest;
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) {
@@ -337,6 +355,80 @@ var SatsConnectAdapter = class {
337
355
  }
338
356
  };
339
357
  }
358
+ async estimateRpfOrder(params) {
359
+ const rpfOrderRequest = {
360
+ newFeeRate: params.newFeeRate,
361
+ orderId: params.orderId
362
+ };
363
+ const response = await getRunesApiClient(params.network).rpfOrder(rpfOrderRequest);
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 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
377
+ message: response.error.message
378
+ }
379
+ };
380
+ }
381
+ async rpfOrder(params) {
382
+ try {
383
+ const rpfOrderRequest = {
384
+ newFeeRate: params.newFeeRate,
385
+ orderId: params.orderId
386
+ };
387
+ const orderResponse = await getRunesApiClient(params.network).rpfOrder(rpfOrderRequest);
388
+ if (!orderResponse.data) {
389
+ return {
390
+ status: "error",
391
+ error: {
392
+ code: orderResponse.error.code === 400 ? -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: rpfOrderRequest.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_estimateRpfOrder": {
446
+ return this.estimateRpfOrder(params);
447
+ }
448
+ case "runes_rpfOrder": {
449
+ return this.rpfOrder(params);
450
+ }
353
451
  default:
354
452
  return this.requestInternal(method, params);
355
453
  }
@@ -498,7 +596,7 @@ var UnisatAdapter = class extends SatsConnectAdapter {
498
596
  id = DefaultAdaptersInfo.unisat.id;
499
597
  async getAccounts(params) {
500
598
  const { purposes } = params;
501
- if (!purposes.includes("stacks" /* Stacks */)) {
599
+ if (purposes.includes("stacks" /* Stacks */)) {
502
600
  throw new Error("Only bitcoin addresses are supported");
503
601
  }
504
602
  const accounts = await window.unisat.requestAccounts();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sats-connect/core",
3
- "version": "0.0.6",
3
+ "version": "0.0.7-3dc7c89",
4
4
  "main": "dist/index.mjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",