@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 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/index.ts
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
  }
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-4307528",
4
4
  "main": "dist/index.mjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",