orbis1-sdk-rn 0.2.0 → 0.2.2

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.
Files changed (39) hide show
  1. package/README.md +6 -9
  2. package/android/src/main/java/com/orbis1sdk/RgbModule.kt +0 -1
  3. package/lib/module/features/gas-free/GasFreeModule.js +6 -5
  4. package/lib/module/features/gas-free/GasFreeModule.js.map +1 -1
  5. package/lib/module/features/gas-free/index.js +3 -0
  6. package/lib/module/features/gas-free/index.js.map +1 -1
  7. package/lib/module/features/gas-free/types/FeeQuote.js.map +1 -1
  8. package/lib/module/features/gas-free/utils/FeeCalculator.js +218 -0
  9. package/lib/module/features/gas-free/utils/FeeCalculator.js.map +1 -0
  10. package/lib/module/features/gas-free/utils/index.js +3 -0
  11. package/lib/module/features/gas-free/utils/index.js.map +1 -1
  12. package/lib/module/features/gas-free/utils/validation.js +6 -5
  13. package/lib/module/features/gas-free/utils/validation.js.map +1 -1
  14. package/lib/module/index.js +1 -0
  15. package/lib/module/index.js.map +1 -1
  16. package/lib/typescript/src/features/gas-free/GasFreeModule.d.ts.map +1 -1
  17. package/lib/typescript/src/features/gas-free/index.d.ts +1 -0
  18. package/lib/typescript/src/features/gas-free/index.d.ts.map +1 -1
  19. package/lib/typescript/src/features/gas-free/types/FeeQuote.d.ts +4 -2
  20. package/lib/typescript/src/features/gas-free/types/FeeQuote.d.ts.map +1 -1
  21. package/lib/typescript/src/features/gas-free/types/GasFreeRequest.d.ts +2 -2
  22. package/lib/typescript/src/features/gas-free/types/GasFreeRequest.d.ts.map +1 -1
  23. package/lib/typescript/src/features/gas-free/utils/FeeCalculator.d.ts +137 -0
  24. package/lib/typescript/src/features/gas-free/utils/FeeCalculator.d.ts.map +1 -0
  25. package/lib/typescript/src/features/gas-free/utils/index.d.ts +1 -0
  26. package/lib/typescript/src/features/gas-free/utils/index.d.ts.map +1 -1
  27. package/lib/typescript/src/features/gas-free/utils/validation.d.ts +6 -3
  28. package/lib/typescript/src/features/gas-free/utils/validation.d.ts.map +1 -1
  29. package/lib/typescript/src/index.d.ts +1 -0
  30. package/lib/typescript/src/index.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/features/gas-free/GasFreeModule.ts +5 -4
  33. package/src/features/gas-free/index.ts +3 -0
  34. package/src/features/gas-free/types/FeeQuote.ts +4 -2
  35. package/src/features/gas-free/types/GasFreeRequest.ts +2 -2
  36. package/src/features/gas-free/utils/FeeCalculator.ts +229 -0
  37. package/src/features/gas-free/utils/index.ts +3 -0
  38. package/src/features/gas-free/utils/validation.ts +14 -4
  39. package/src/index.ts +1 -0
package/README.md CHANGED
@@ -86,23 +86,20 @@ Transfer RGB assets without holding BTC for mining fees:
86
86
 
87
87
  ```typescript
88
88
  // 1. Request fee quote
89
- const quote = await sdk.gasFree().requestFeeQuote({
89
+ const transferRequest = {
90
90
  userId: 'user-123',
91
91
  assetId: 'rgb:...',
92
- amount: '1000',
92
+ transferAmount: 100250000, // Amount in base units (e.g., 100.25 TUSDT with precision 6)
93
93
  recipientInvoice: 'rgb:invoice...',
94
- });
94
+ }
95
+
96
+ const quote = await sdk.gasFree().requestFeeQuote(transferRequest);
95
97
 
96
98
  console.log(`Service fee: ${quote.serviceFeeAmount} (asset units)`);
97
99
  console.log(`Quote expires: ${quote.expiresAt}`);
98
100
 
99
101
  // 2. Confirm transfer (if user accepts quote)
100
- const result = await sdk.gasFree().confirmTransfer({
101
- userId: 'user-123',
102
- assetId: 'rgb:...',
103
- amount: '1000',
104
- recipientInvoice: 'rgb:invoice...',
105
- }, quote);
102
+ const result = await sdk.gasFree().confirmTransfer(transferRequest, quote);
106
103
 
107
104
  console.log(`Transfer complete! TXID: ${result.txid}`);
108
105
  console.log(`Service fee: ${result.serviceFee} base units`);
@@ -33,7 +33,6 @@ import org.rgbtools.Token
33
33
  import org.rgbtools.Invoice
34
34
  import com.rgb.AppConstants
35
35
  import com.rgb.NativeRgbSpec
36
- import java.io.File
37
36
 
38
37
  @ReactModule(name = RgbModule.NAME)
39
38
  class RgbModule(reactContext: ReactApplicationContext) :
@@ -127,7 +127,7 @@ export class GasFreeModule {
127
127
  async requestFeeQuote(request) {
128
128
  this.logger?.debug('Requesting fee quote', {
129
129
  assetId: request.assetId,
130
- amount: request.amount
130
+ transferAmount: request.transferAmount
131
131
  });
132
132
 
133
133
  // Check module is ready
@@ -186,7 +186,7 @@ export class GasFreeModule {
186
186
  this.logger?.debug('Confirming transfer with quote', {
187
187
  quoteId: feeQuote.quoteId,
188
188
  assetId: request.assetId,
189
- amount: request.amount
189
+ transferAmount: request.transferAmount
190
190
  });
191
191
 
192
192
  // Check module is ready
@@ -285,7 +285,8 @@ export class GasFreeModule {
285
285
  // defaults to 1 inputs if not provided (1 user input)
286
286
  numOutputs: request.numOutputs || 2,
287
287
  // defaults to 2 outputs if not provided (1 OP_RETURN, 1 user change <equal val as input>)
288
- recipientInvoice: request.recipientInvoice
288
+ recipientInvoice: request.recipientInvoice,
289
+ transferAmount: request.transferAmount
289
290
  });
290
291
 
291
292
  // Check quote expiration
@@ -379,8 +380,8 @@ export class GasFreeModule {
379
380
  assignment: {
380
381
  // Use FUNGIBLE type for asset transfers (invoice may have 'ANY' wildcard type)
381
382
  type: 'FUNGIBLE',
382
- // Use amount from request (in base units (w/ precision), as integer)
383
- amount: parseInt(request.amount, 10)
383
+ // transferAmount is already in base units (with precision included)
384
+ amount: request.transferAmount
384
385
  },
385
386
  transportEndpoints: decodedRecipientInvoice.transportEndpoints
386
387
  }, {
@@ -1 +1 @@
1
- {"version":3,"names":["ServiceClient","ConsignmentReader","getGasFreeServiceUrl","GasFreeError","GasFreeErrorCode","Feature","GasFreeModule","name","GAS_FREE","version","ready","currentState","status","constructor","config","initialize","wallet","logger","initializationFailed","child","serviceUrl","environment","debug","baseUrl","timeout","validateConfig","serviceClient","apiKey","consignmentReader","error","Error","message","String","cleanup","dispose","getStatus","enabled","isReady","requestFeeQuote","request","assetId","amount","notInitialized","feeQuote","generateFeeQuote","quoteId","UNKNOWN","undefined","confirmTransfer","expiresAt","Date","getTime","now","QUOTE_EXPIRED","psbtResult","buildPSBT","submitResult","submitPSBT","txid","userSignedPsbt","broadcastTransfer","signedPsbtBase64","verifyTransfer","consignment","consignmentBase64","serviceFee","serviceFeeAmount","getState","userId","numInputs","numOutputs","recipientInvoice","quoteExpiresAt","miningFee","miningFeeSats","externalInputs","miningUTXO","vout","value","scriptPubkey","script_pubkey","externalOutputs","miningChangeUTXO","address","decodedRecipientInvoice","decodeInvoice","decodedServiceInvoice","serviceFeeInvoice","recipient","service","recipientIsWitness","witnessUtxoFundingSats","recipientMap","recipientId","witnessData","amountSat","blinding","assignment","type","parseInt","transportEndpoints","unsignedPsbt","sendBegin","feeRate","minConfirmations","length","readForAsset","signPsbt","psbtBase64","transactionId","serviceSignedPsbt","operationResult","sendEnd","batchTransferIdx","verifyResult","transferSuccess","trim","INVALID_REQUEST","createGasFreeModule"],"sourceRoot":"../../../../src","sources":["features/gas-free/GasFreeModule.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ServiceClient","ConsignmentReader","getGasFreeServiceUrl","GasFreeError","GasFreeErrorCode","Feature","GasFreeModule","name","GAS_FREE","version","ready","currentState","status","constructor","config","initialize","wallet","logger","initializationFailed","child","serviceUrl","environment","debug","baseUrl","timeout","validateConfig","serviceClient","apiKey","consignmentReader","error","Error","message","String","cleanup","dispose","getStatus","enabled","isReady","requestFeeQuote","request","assetId","transferAmount","notInitialized","feeQuote","generateFeeQuote","quoteId","UNKNOWN","undefined","confirmTransfer","expiresAt","Date","getTime","now","QUOTE_EXPIRED","psbtResult","buildPSBT","submitResult","submitPSBT","txid","userSignedPsbt","broadcastTransfer","signedPsbtBase64","verifyTransfer","consignment","consignmentBase64","serviceFee","serviceFeeAmount","getState","userId","numInputs","numOutputs","recipientInvoice","quoteExpiresAt","miningFee","miningFeeSats","externalInputs","miningUTXO","vout","value","scriptPubkey","script_pubkey","externalOutputs","miningChangeUTXO","address","decodedRecipientInvoice","decodeInvoice","decodedServiceInvoice","serviceFeeInvoice","recipient","service","recipientIsWitness","witnessUtxoFundingSats","recipientMap","recipientId","witnessData","amountSat","blinding","assignment","type","amount","transportEndpoints","unsignedPsbt","sendBegin","feeRate","minConfirmations","length","readForAsset","signPsbt","psbtBase64","transactionId","serviceSignedPsbt","operationResult","sendEnd","batchTransferIdx","verifyResult","transferSuccess","trim","INVALID_REQUEST","createGasFreeModule"],"sourceRoot":"../../../../src","sources":["features/gas-free/GasFreeModule.ts"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,9 @@ export { GasFreeModule, createGasFreeModule } from "./GasFreeModule.js";
12
12
  // Types
13
13
  export * from "./types/index.js";
14
14
 
15
+ // Utilities
16
+ export { FeeCalculator, createFeeCalculator } from "./utils/index.js";
17
+
15
18
  // Errors
16
19
  export * from "./errors/index.js";
17
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GasFreeModule","createGasFreeModule"],"sourceRoot":"../../../../src","sources":["features/gas-free/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,oBAAiB;;AAEpE;AACA,cAAc,kBAAS;;AAEvB;AACA,cAAc,mBAAU","ignoreList":[]}
1
+ {"version":3,"names":["GasFreeModule","createGasFreeModule","FeeCalculator","createFeeCalculator"],"sourceRoot":"../../../../src","sources":["features/gas-free/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,oBAAiB;;AAEpE;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,kBAAS;;AAE5D;AACA,cAAc,mBAAU","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["isQuoteExpired","quote","Date","expiresAt","getQuoteTimeRemaining","getTime","now","getTotalMiningValue","miningUTXO","value"],"sourceRoot":"../../../../../src","sources":["features/gas-free/types/FeeQuote.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAYA;AACA;AACA;;AAQA;AACA;AACA;;AAoCA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAACC,KAAe,EAAW;EACvD,OAAO,IAAIC,IAAI,CAAC,CAAC,IAAI,IAAIA,IAAI,CAACD,KAAK,CAACE,SAAS,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACH,KAAe,EAAU;EAC7D,OAAO,IAAIC,IAAI,CAACD,KAAK,CAACE,SAAS,CAAC,CAACE,OAAO,CAAC,CAAC,GAAGH,IAAI,CAACI,GAAG,CAAC,CAAC;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACN,KAAe,EAAU;EAC3D,OAAOA,KAAK,CAACO,UAAU,CAACC,KAAK;AAC/B","ignoreList":[]}
1
+ {"version":3,"names":["isQuoteExpired","quote","Date","expiresAt","getQuoteTimeRemaining","getTime","now","getTotalMiningValue","miningUTXO","value"],"sourceRoot":"../../../../../src","sources":["features/gas-free/types/FeeQuote.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAYA;AACA;AACA;;AAQA;AACA;AACA;;AAoCA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAACC,KAAe,EAAW;EACvD,OAAO,IAAIC,IAAI,CAAC,CAAC,IAAI,IAAIA,IAAI,CAACD,KAAK,CAACE,SAAS,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACH,KAAe,EAAU;EAC7D,OAAO,IAAIC,IAAI,CAACD,KAAK,CAACE,SAAS,CAAC,CAACE,OAAO,CAAC,CAAC,GAAGH,IAAI,CAACI,GAAG,CAAC,CAAC;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACN,KAAe,EAAU;EAC3D,OAAOA,KAAK,CAACO,UAAU,CAACC,KAAK;AAC/B","ignoreList":[]}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Fee Calculator
5
+ *
6
+ * Provides local fee calculation for gas-free transfers.
7
+ * Calculates service fees based on transfer amounts using a simple percentage-based model.
8
+ *
9
+ * Fee Structure:
10
+ * - Base rate: 0.1% (0.001)
11
+ * - Minimum fee: $0.50 (floor dominates until $500)
12
+ * - Maximum fee: $10.00 (cap applies above $10,000)
13
+ *
14
+ * Assumptions:
15
+ * - 1 asset unit (no precision) = 1 USD (will be fetched dynamically in the future)
16
+ * - Default precision: 6 decimals
17
+ *
18
+ * Examples:
19
+ * - Transfer $100: $0.50 fee (minimum applies)
20
+ * - Transfer $500: $0.50 fee (0.1% × $500 = $0.50 exactly)
21
+ * - Transfer $1,000: $1.00 fee (0.1% applies)
22
+ * - Transfer $10,000: $10.00 fee (0.1% × $10,000 = $10.00, cap reached)
23
+ * - Transfer $50,000: $10.00 fee (maximum cap applies)
24
+ *
25
+ * @module features/gas-free/utils/FeeCalculator
26
+ */
27
+
28
+ /**
29
+ * Fee calculator for gas-free transfers
30
+ *
31
+ * Uses a simple percentage-based pricing model with floor and cap.
32
+ */
33
+ export class FeeCalculator {
34
+ assetToUsdRate = 1; // 1 asset unit (no precision) = 1 USD
35
+ assetPrecision = 6; // Default precision
36
+
37
+ // Fee calculation parameters
38
+ FEE_RATE = 0.001; // 0.1%
39
+ MIN_FEE = 0.5; // $0.50 minimum (floor)
40
+ MAX_FEE = 10.0; // $10.00 maximum (cap)
41
+
42
+ /**
43
+ * Create a fee estimator with default parameters
44
+ */
45
+ constructor() {
46
+ // No configuration needed - fixed parameters
47
+ }
48
+
49
+ /**
50
+ * Calculate service fee in USD based on transfer amount
51
+ *
52
+ * Uses a simple percentage-based model with floor and cap:
53
+ * - 0.1% of transfer amount
54
+ * - Minimum: $0.50 (applies for amounts < $500)
55
+ * - Maximum: $10.00 (applies for amounts > $10,000)
56
+ *
57
+ * @param amountUsd - Transfer amount in USD
58
+ * @returns Fee in USD
59
+ * @throws Error if amount is invalid
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const calculator = new FeeCalculator();
64
+ * console.log(calculator.calculateFee(100)); // $0.50 (minimum)
65
+ * console.log(calculator.calculateFee(500)); // $0.50 (0.1% × $500)
66
+ * console.log(calculator.calculateFee(1000)); // $1.00 (0.1% × $1000)
67
+ * console.log(calculator.calculateFee(10000)); // $10.00 (0.1% × $10000, cap reached)
68
+ * console.log(calculator.calculateFee(50000)); // $10.00 (maximum cap)
69
+ * ```
70
+ */
71
+ calculateFee(amountUsd) {
72
+ if (amountUsd < 0) {
73
+ throw new Error('Amount cannot be negative');
74
+ }
75
+ if (!Number.isFinite(amountUsd)) {
76
+ throw new Error('Amount must be a valid number');
77
+ }
78
+
79
+ // Calculate percentage-based fee
80
+ const percentageFee = amountUsd * this.FEE_RATE;
81
+
82
+ // Apply floor (minimum) and cap (maximum)
83
+ const feeUsd = Math.max(this.MIN_FEE, Math.min(this.MAX_FEE, percentageFee));
84
+ return feeUsd;
85
+ }
86
+
87
+ /**
88
+ * Estimate service fee in RGB asset base units
89
+ *
90
+ * This method uses hardcoded parameters (1:1 USD rate, precision 6) to estimate fees.
91
+ *
92
+ * Steps:
93
+ * 1. Converts transfer amount from base units to asset units
94
+ * 2. Converts asset units to USD (1:1 rate)
95
+ * 3. Calculates fee in USD (0.1% with $0.50 min, $10 max)
96
+ * 4. Converts fee back to asset base units
97
+ *
98
+ * @param transferAmount - Amount being transferred in base units (e.g., 100250000 for 100.25 TUSDT with precision 6)
99
+ * @param assetToUsdRate - Conversion rate from asset to USD (optional, defaults to 1)
100
+ * @param assetPrecision - Asset precision exponent (optional, defaults to 6)
101
+ * @returns Object with fee in asset base units, USD, and effective percentage
102
+ * @throws Error if inputs are invalid
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const calculator = new FeeCalculator();
107
+ *
108
+ * // Transfer 100 TUSDT (100000000 base units with precision 6)
109
+ * const result1 = calculator.estimateFeeInAsset(100000000, 1, 6);
110
+ * console.log(`Fee: ${result1.feeInAsset} base units`); // 500000 ($0.50 minimum)
111
+ * console.log(`Fee: $${result1.feeUsd}`); // $0.50
112
+ *
113
+ * // Transfer 1,000 TUSDT (1000000000 base units)
114
+ * const result2 = calculator.estimateFeeInAsset(1000000000, 1, 6);
115
+ * console.log(`Fee: ${result2.feeInAsset} base units`); // 1000000 ($1.00)
116
+ * console.log(`Fee: $${result2.feeUsd}`); // $1.00
117
+ * console.log(`Rate: ${result2.effectivePercentage}%`); // 0.1%
118
+ * ```
119
+ */
120
+ estimateFeeInAsset(transferAmount, assetToUsdRate, assetPrecision) {
121
+ // Use provided values or defaults
122
+ const rate = assetToUsdRate ?? this.assetToUsdRate;
123
+ const precision = assetPrecision ?? this.assetPrecision;
124
+
125
+ // Validate inputs
126
+ if (transferAmount < 0) {
127
+ throw new Error('Transfer amount cannot be negative');
128
+ }
129
+ if (!Number.isFinite(transferAmount)) {
130
+ throw new Error('Transfer amount must be a valid number');
131
+ }
132
+ if (rate <= 0) {
133
+ throw new Error('Asset to USD rate must be positive');
134
+ }
135
+ if (!Number.isFinite(rate)) {
136
+ throw new Error('Asset to USD rate must be a valid number');
137
+ }
138
+ if (precision <= 0 || !Number.isInteger(precision)) {
139
+ throw new Error('Asset precision must be a positive integer');
140
+ }
141
+
142
+ // Step 1: Convert transfer amount from base units to asset units
143
+ const transferAmountInAssetUnits = transferAmount / Math.pow(10, precision);
144
+
145
+ // Step 2: Convert to USD
146
+ const transferAmountUsd = transferAmountInAssetUnits * rate;
147
+
148
+ // Step 3: Calculate fee in USD using amount-based formula
149
+ const feeUsd = this.calculateFee(transferAmountUsd);
150
+
151
+ // Step 4: Convert USD fee to asset base units
152
+ // USD → asset units → base units (with precision)
153
+ const feeInAssetUnits = feeUsd / rate;
154
+ const feeInAsset = Math.round(feeInAssetUnits * Math.pow(10, precision));
155
+
156
+ // Calculate effective percentage for tracking
157
+ const effectivePercentage = feeUsd / transferAmountUsd * 100;
158
+ return {
159
+ feeInAsset,
160
+ feeUsd,
161
+ effectivePercentage
162
+ };
163
+ }
164
+
165
+ /**
166
+ * Get the current asset to USD exchange rate
167
+ */
168
+ getAssetToUsdRate() {
169
+ return this.assetToUsdRate;
170
+ }
171
+
172
+ /**
173
+ * Get the current asset precision
174
+ */
175
+ getAssetPrecision() {
176
+ return this.assetPrecision;
177
+ }
178
+
179
+ /**
180
+ * Get the fee rate (0.1%)
181
+ */
182
+ getFeeRate() {
183
+ return this.FEE_RATE;
184
+ }
185
+
186
+ /**
187
+ * Get the minimum fee ($0.50)
188
+ */
189
+ getMinFee() {
190
+ return this.MIN_FEE;
191
+ }
192
+
193
+ /**
194
+ * Get the maximum fee ($10.00)
195
+ */
196
+ getMaxFee() {
197
+ return this.MAX_FEE;
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Create a default fee calculator instance
203
+ *
204
+ * @returns FeeCalculator instance
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * import { createFeeCalculator } from './FeeCalculator';
209
+ *
210
+ * const calculator = createFeeCalculator();
211
+ * const fee = calculator.estimateFeeInAsset(100000000); // 100 TUSDT
212
+ * console.log(`Fee: $${fee.feeUsd}`); // $0.50 (minimum applies)
213
+ * ```
214
+ */
215
+ export function createFeeCalculator() {
216
+ return new FeeCalculator();
217
+ }
218
+ //# sourceMappingURL=FeeCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FeeCalculator","assetToUsdRate","assetPrecision","FEE_RATE","MIN_FEE","MAX_FEE","constructor","calculateFee","amountUsd","Error","Number","isFinite","percentageFee","feeUsd","Math","max","min","estimateFeeInAsset","transferAmount","rate","precision","isInteger","transferAmountInAssetUnits","pow","transferAmountUsd","feeInAssetUnits","feeInAsset","round","effectivePercentage","getAssetToUsdRate","getAssetPrecision","getFeeRate","getMinFee","getMaxFee","createFeeCalculator"],"sourceRoot":"../../../../../src","sources":["features/gas-free/utils/FeeCalculator.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,aAAa,CAAC;EACRC,cAAc,GAAW,CAAC,CAAC,CAAC;EAC5BC,cAAc,GAAW,CAAC,CAAC,CAAC;;EAE7C;EACiBC,QAAQ,GAAG,KAAK,CAAC,CAAC;EAClBC,OAAO,GAAG,GAAG,CAAC,CAAC;EACfC,OAAO,GAAG,IAAI,CAAC,CAAC;;EAEjC;AACF;AACA;EACEC,WAAWA,CAAA,EAAG;IACZ;EAAA;;EAGF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACSC,YAAYA,CAACC,SAAiB,EAAU;IAC7C,IAAIA,SAAS,GAAG,CAAC,EAAE;MACjB,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;IAC9C;IAEA,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACH,SAAS,CAAC,EAAE;MAC/B,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;IAClD;;IAEA;IACA,MAAMG,aAAa,GAAGJ,SAAS,GAAG,IAAI,CAACL,QAAQ;;IAE/C;IACA,MAAMU,MAAM,GAAGC,IAAI,CAACC,GAAG,CACrB,IAAI,CAACX,OAAO,EACZU,IAAI,CAACE,GAAG,CAAC,IAAI,CAACX,OAAO,EAAEO,aAAa,CACtC,CAAC;IAED,OAAOC,MAAM;EACf;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACSI,kBAAkBA,CACvBC,cAAsB,EACtBjB,cAAuB,EACvBC,cAAuB,EAC8C;IACrE;IACA,MAAMiB,IAAI,GAAGlB,cAAc,IAAI,IAAI,CAACA,cAAc;IAClD,MAAMmB,SAAS,GAAGlB,cAAc,IAAI,IAAI,CAACA,cAAc;;IAEvD;IACA,IAAIgB,cAAc,GAAG,CAAC,EAAE;MACtB,MAAM,IAAIT,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACO,cAAc,CAAC,EAAE;MACpC,MAAM,IAAIT,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IAEA,IAAIU,IAAI,IAAI,CAAC,EAAE;MACb,MAAM,IAAIV,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACQ,IAAI,CAAC,EAAE;MAC1B,MAAM,IAAIV,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IAEA,IAAIW,SAAS,IAAI,CAAC,IAAI,CAACV,MAAM,CAACW,SAAS,CAACD,SAAS,CAAC,EAAE;MAClD,MAAM,IAAIX,KAAK,CAAC,4CAA4C,CAAC;IAC/D;;IAEA;IACA,MAAMa,0BAA0B,GAAGJ,cAAc,GAAGJ,IAAI,CAACS,GAAG,CAAC,EAAE,EAAEH,SAAS,CAAC;;IAE3E;IACA,MAAMI,iBAAiB,GAAGF,0BAA0B,GAAGH,IAAI;;IAE3D;IACA,MAAMN,MAAM,GAAG,IAAI,CAACN,YAAY,CAACiB,iBAAiB,CAAC;;IAEnD;IACA;IACA,MAAMC,eAAe,GAAGZ,MAAM,GAAGM,IAAI;IACrC,MAAMO,UAAU,GAAGZ,IAAI,CAACa,KAAK,CAACF,eAAe,GAAGX,IAAI,CAACS,GAAG,CAAC,EAAE,EAAEH,SAAS,CAAC,CAAC;;IAExE;IACA,MAAMQ,mBAAmB,GAAIf,MAAM,GAAGW,iBAAiB,GAAI,GAAG;IAE9D,OAAO;MACLE,UAAU;MACVb,MAAM;MACNe;IACF,CAAC;EACH;;EAEA;AACF;AACA;EACSC,iBAAiBA,CAAA,EAAW;IACjC,OAAO,IAAI,CAAC5B,cAAc;EAC5B;;EAEA;AACF;AACA;EACS6B,iBAAiBA,CAAA,EAAW;IACjC,OAAO,IAAI,CAAC5B,cAAc;EAC5B;;EAEA;AACF;AACA;EACS6B,UAAUA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAAC5B,QAAQ;EACtB;;EAEA;AACF;AACA;EACS6B,SAASA,CAAA,EAAW;IACzB,OAAO,IAAI,CAAC5B,OAAO;EACrB;;EAEA;AACF;AACA;EACS6B,SAASA,CAAA,EAAW;IACzB,OAAO,IAAI,CAAC5B,OAAO;EACrB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS6B,mBAAmBA,CAAA,EAAkB;EACnD,OAAO,IAAIlC,aAAa,CAAC,CAAC;AAC5B","ignoreList":[]}
@@ -12,4 +12,7 @@ export { MiningUTXOSchema, MiningChangeUTXOSchema, FeeQuoteSchema, FeeQuoteReque
12
12
  // Retry utilities
13
13
 
14
14
  export { DEFAULT_RETRY_CONFIG, calculateRetryDelay, defaultShouldRetry, sleep, retryWithBackoff, withRetry } from "./retry.js";
15
+
16
+ // Fee Calculation
17
+ export { FeeCalculator, createFeeCalculator } from "./FeeCalculator.js";
15
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MiningUTXOSchema","MiningChangeUTXOSchema","FeeQuoteSchema","FeeQuoteRequestSchema","SubmitPSBTRequestSchema","VerifyTransferRequestSchema","GasFreeTransferStatusSchema","GasFreeResultSchema","SubmitResultSchema","VerificationResultSchema","validateFeeQuote","validateFeeQuoteRequest","validateSubmitResult","validateVerificationResult","validatePSBT","validateRGBAmount","DEFAULT_RETRY_CONFIG","calculateRetryDelay","defaultShouldRetry","sleep","retryWithBackoff","withRetry"],"sourceRoot":"../../../../../src","sources":["features/gas-free/utils/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SACEA,gBAAgB,EAChBC,sBAAsB,EACtBC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,kBAAkB,EAClBC,wBAAwB,EACxBC,gBAAgB,EAChBC,uBAAuB,EACvBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,YAAY,EACZC,iBAAiB,QACZ,iBAAc;;AAErB;;AAGA,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,kBAAkB,EAClBC,KAAK,EACLC,gBAAgB,EAChBC,SAAS,QACJ,YAAS","ignoreList":[]}
1
+ {"version":3,"names":["MiningUTXOSchema","MiningChangeUTXOSchema","FeeQuoteSchema","FeeQuoteRequestSchema","SubmitPSBTRequestSchema","VerifyTransferRequestSchema","GasFreeTransferStatusSchema","GasFreeResultSchema","SubmitResultSchema","VerificationResultSchema","validateFeeQuote","validateFeeQuoteRequest","validateSubmitResult","validateVerificationResult","validatePSBT","validateRGBAmount","DEFAULT_RETRY_CONFIG","calculateRetryDelay","defaultShouldRetry","sleep","retryWithBackoff","withRetry","FeeCalculator","createFeeCalculator"],"sourceRoot":"../../../../../src","sources":["features/gas-free/utils/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SACEA,gBAAgB,EAChBC,sBAAsB,EACtBC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,kBAAkB,EAClBC,wBAAwB,EACxBC,gBAAgB,EAChBC,uBAAuB,EACvBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,YAAY,EACZC,iBAAiB,QACZ,iBAAc;;AAErB;;AAGA,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,kBAAkB,EAClBC,KAAK,EACLC,gBAAgB,EAChBC,SAAS,QACJ,YAAS;;AAEhB;AACA,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,oBAAiB","ignoreList":[]}
@@ -56,11 +56,12 @@ export const FeeQuoteSchema = z.object({
56
56
  * Schema for Fee Quote Request
57
57
  */
58
58
  export const FeeQuoteRequestSchema = z.object({
59
- userId: z.string().min(1, 'User ID must not be empty'),
60
- assetId: z.string().optional(),
61
- numInputs: z.number().int().positive('Number of inputs must be positive'),
62
- numOutputs: z.number().int().min(2, 'Number of outputs must be at least 2 (includes OP_RETURN)'),
63
- recipientInvoice: z.string().min(1, 'Recipient invoice cannot be empty').regex(/^rgb1?:/, 'Recipient invoice must start with rgb: or rgb1:')
59
+ userId: z.string().min(1, 'User ID cannot be empty'),
60
+ assetId: z.string().min(1, 'Asset ID cannot be empty').regex(/^rgb:/, 'Asset ID must start with rgb: prefix'),
61
+ numInputs: z.number().int().positive('Number of inputs must be a positive integer'),
62
+ numOutputs: z.number().int().positive('Number of outputs must be a positive integer'),
63
+ recipientInvoice: z.string().min(1, 'Recipient invoice cannot be empty').regex(/^rgb1?:/, 'Recipient invoice must start with rgb: or rgb1:'),
64
+ transferAmount: z.number().positive('Transfer amount must be positive').finite('Transfer amount must be finite')
64
65
  });
65
66
 
66
67
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["z","GasFreeTransferStatus","GasFreeError","MiningUTXOSchema","object","txid","string","length","regex","vout","number","int","min","value","positive","script_pubkey","MiningChangeUTXOSchema","address","FeeQuoteSchema","quoteId","userId","assetId","optional","miningFeeSats","nonnegative","feeRateSatPerVByte","serviceFeePercentage","serviceFeeAmount","assetType","witnessUtxoFundingSats","miningUTXO","miningChangeUTXO","serviceFeeInvoice","serviceFeeRecipientId","status","enum","expiresAt","createdAt","FeeQuoteRequestSchema","numInputs","numOutputs","recipientInvoice","SubmitPSBTRequestSchema","uuid","psbtBase64","consignmentBase64","VerifyTransferRequestSchema","transferSuccess","boolean","signedPsbtBase64","failureReason","GasFreeTransferStatusSchema","nativeEnum","GasFreeResultSchema","consignment","totalFeeSats","serviceFeeSats","rgbAmount","recipient","initiatedAt","completedAt","error","metadata","record","unknown","SubmitResultSchema","transactionId","estimatedTxSize","miningUtxoTxid","miningUtxoVout","signedAt","VerificationResultSchema","message","inMempool","verifiedAt","validateFeeQuote","data","parse","ZodError","errors","map","e","path","join","invalidRequest","validationErrors","validateFeeQuoteRequest","validateSubmitResult","validateVerificationResult","validatePSBT","psbt","startsWith","base64Regex","test","validateRGBAmount","amount","amountBigInt","BigInt"],"sourceRoot":"../../../../../src","sources":["features/gas-free/utils/validation.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["z","GasFreeTransferStatus","GasFreeError","MiningUTXOSchema","object","txid","string","length","regex","vout","number","int","min","value","positive","script_pubkey","MiningChangeUTXOSchema","address","FeeQuoteSchema","quoteId","userId","assetId","optional","miningFeeSats","nonnegative","feeRateSatPerVByte","serviceFeePercentage","serviceFeeAmount","assetType","witnessUtxoFundingSats","miningUTXO","miningChangeUTXO","serviceFeeInvoice","serviceFeeRecipientId","status","enum","expiresAt","createdAt","FeeQuoteRequestSchema","numInputs","numOutputs","recipientInvoice","transferAmount","finite","SubmitPSBTRequestSchema","uuid","psbtBase64","consignmentBase64","VerifyTransferRequestSchema","transferSuccess","boolean","signedPsbtBase64","failureReason","GasFreeTransferStatusSchema","nativeEnum","GasFreeResultSchema","consignment","totalFeeSats","serviceFeeSats","rgbAmount","recipient","initiatedAt","completedAt","error","metadata","record","unknown","SubmitResultSchema","transactionId","estimatedTxSize","miningUtxoTxid","miningUtxoVout","signedAt","VerificationResultSchema","message","inMempool","verifiedAt","validateFeeQuote","data","parse","ZodError","errors","map","e","path","join","invalidRequest","validationErrors","validateFeeQuoteRequest","validateSubmitResult","validateVerificationResult","validatePSBT","psbt","startsWith","base64Regex","test","validateRGBAmount","amount","amountBigInt","BigInt"],"sourceRoot":"../../../../../src","sources":["features/gas-free/utils/validation.ts"],"mappings":"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","ignoreList":[]}
@@ -30,5 +30,6 @@ export { Logger, createLogger } from "./utils/logger.js";
30
30
  export { WatchTowerModule } from "./features/watch-tower/index.js";
31
31
  // Gas-Free feature
32
32
  export { GasFreeModule, createGasFreeModule } from "./features/gas-free/index.js";
33
+ export { FeeCalculator, createFeeCalculator } from "./features/gas-free/index.js";
33
34
  export { GasFreeError, GasFreeErrorCode } from "./features/gas-free/errors/index.js";
34
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Orbis1SDK","LogLevel","Environment","Feature","isValidFeature","OrbisError","OrbisErrorCode","ConfigurationError","FeatureNotEnabledError","Logger","createLogger","WatchTowerModule","GasFreeModule","createGasFreeModule","GasFreeError","GasFreeErrorCode"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,sBAAmB;AACjC,cAAc,sBAAmB;AAGjC;AACA,SAASA,SAAS,QAAQ,gBAAa;;AAEvC;;AAEA,SAASC,QAAQ,EAAEC,WAAW,QAAQ,sBAAmB;AACzD,SAASC,OAAO,EAAEC,cAAc,QAAQ,oBAAiB;AAGzD;AACA,SAASC,UAAU,EAAEC,cAAc,QAAQ,wBAAqB;AAChE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,sBAAsB,QAAQ,oCAAiC;;AAExE;AACA,SAASC,MAAM,EAAEC,YAAY,QAAQ,mBAAgB;;AAErD;AACA,SAASC,gBAAgB,QAAQ,iCAAwB;AAWzD;AACA,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,8BAAqB;AAWxE,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,qCAA4B","ignoreList":[]}
1
+ {"version":3,"names":["Orbis1SDK","LogLevel","Environment","Feature","isValidFeature","OrbisError","OrbisErrorCode","ConfigurationError","FeatureNotEnabledError","Logger","createLogger","WatchTowerModule","GasFreeModule","createGasFreeModule","FeeCalculator","createFeeCalculator","GasFreeError","GasFreeErrorCode"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,sBAAmB;AACjC,cAAc,sBAAmB;AAGjC;AACA,SAASA,SAAS,QAAQ,gBAAa;;AAEvC;;AAEA,SAASC,QAAQ,EAAEC,WAAW,QAAQ,sBAAmB;AACzD,SAASC,OAAO,EAAEC,cAAc,QAAQ,oBAAiB;AAGzD;AACA,SAASC,UAAU,EAAEC,cAAc,QAAQ,wBAAqB;AAChE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,sBAAsB,QAAQ,oCAAiC;;AAExE;AACA,SAASC,MAAM,EAAEC,YAAY,QAAQ,mBAAgB;;AAErD;AACA,SAASC,gBAAgB,QAAQ,iCAAwB;AAWzD;AACA,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,8BAAqB;AACxE,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,8BAAqB;AAWxE,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,qCAA4B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"GasFreeModule.d.ts","sourceRoot":"","sources":["../../../../../src/features/gas-free/GasFreeModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,cAAc,CAAC,aAAa,CAAC;IACjE,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,OAAO,WAAW;IAClC,SAAgB,MAAM,EAAE,aAAa,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAqB;IAC/C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAqC;gBAE7C,MAAM,EAAE,aAAa;IAIjC;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CjE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,SAAS,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAQzE;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuCzE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,eAAe,CACnB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC;IAiFjC;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;YACW,gBAAgB;IAoC9B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,SAAS,CACb,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,eAAe,CAAC;IAsH3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAwB5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA4B5E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,kBAAkB,CAAC;IAoB9B;;OAEG;IACH,OAAO,CAAC,cAAc;CAevB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAExE"}
1
+ {"version":3,"file":"GasFreeModule.d.ts","sourceRoot":"","sources":["../../../../../src/features/gas-free/GasFreeModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,cAAc,CAAC,aAAa,CAAC;IACjE,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,OAAO,WAAW;IAClC,SAAgB,MAAM,EAAE,aAAa,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAqB;IAC/C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAqC;gBAE7C,MAAM,EAAE,aAAa;IAIjC;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CjE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,SAAS,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAQzE;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuCzE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,eAAe,CACnB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC;IAiFjC;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;YACW,gBAAgB;IAqC9B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,SAAS,CACb,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,eAAe,CAAC;IAsH3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAwB5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA4B5E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,kBAAkB,CAAC;IAoB9B;;OAEG;IACH,OAAO,CAAC,cAAc;CAevB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAExE"}
@@ -5,5 +5,6 @@
5
5
  */
6
6
  export { GasFreeModule, createGasFreeModule } from './GasFreeModule';
7
7
  export * from './types';
8
+ export { FeeCalculator, createFeeCalculator } from './utils';
8
9
  export * from './errors';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/gas-free/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/gas-free/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG7D,cAAc,UAAU,CAAC"}
@@ -70,14 +70,16 @@ export interface FeeQuote {
70
70
  export interface FeeQuoteRequest {
71
71
  /** Unique identifier for the user */
72
72
  userId: string;
73
- /** RGB asset ID for the service fee invoice (optional) */
74
- assetId?: string;
73
+ /** RGB asset ID for the transfer */
74
+ assetId: string;
75
75
  /** Number of USER's transaction inputs (excludes service's mining UTXO) */
76
76
  numInputs: number;
77
77
  /** Number of USER's transaction outputs (INCLUDES OP_RETURN, must be >= 2) */
78
78
  numOutputs: number;
79
79
  /** RGB invoice for the recipient (mandatory) */
80
80
  recipientInvoice: string;
81
+ /** Amount being transferred in base units with precision included (e.g., 100250000 for 100.25 TUSDT with precision 6) */
82
+ transferAmount: number;
81
83
  }
82
84
  /**
83
85
  * Check if a fee quote is expired
@@ -1 +1 @@
1
- {"version":3,"file":"FeeQuote.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/types/FeeQuote.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+GAA+G;IAC/G,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB;IACnB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpE,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"FeeQuote.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/types/FeeQuote.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+GAA+G;IAC/G,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB;IACnB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpE,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,yHAAyH;IACzH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE3D"}
@@ -14,8 +14,8 @@ export interface GasFreeTransferRequest {
14
14
  userId: string;
15
15
  /** Asset ID being transferred */
16
16
  assetId: string;
17
- /** Amount of RGB asset to send */
18
- amount: string;
17
+ /** Amount being transferred in base units with precision included (e.g., 100250000 for 100.25 TUSDT with precision 6) */
18
+ transferAmount: number;
19
19
  /** Recipient RGB invoice (blinded UTXO or witness output) */
20
20
  recipientInvoice: string;
21
21
  /** Transport endpoints for RGB transfer (e.g., ['rpc://...']) */
@@ -1 +1 @@
1
- {"version":3,"file":"GasFreeRequest.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/types/GasFreeRequest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAEhB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"GasFreeRequest.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/types/GasFreeRequest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAEhB,yHAAyH;IACzH,cAAc,EAAE,MAAM,CAAC;IAEvB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Fee Calculator
3
+ *
4
+ * Provides local fee calculation for gas-free transfers.
5
+ * Calculates service fees based on transfer amounts using a simple percentage-based model.
6
+ *
7
+ * Fee Structure:
8
+ * - Base rate: 0.1% (0.001)
9
+ * - Minimum fee: $0.50 (floor dominates until $500)
10
+ * - Maximum fee: $10.00 (cap applies above $10,000)
11
+ *
12
+ * Assumptions:
13
+ * - 1 asset unit (no precision) = 1 USD (will be fetched dynamically in the future)
14
+ * - Default precision: 6 decimals
15
+ *
16
+ * Examples:
17
+ * - Transfer $100: $0.50 fee (minimum applies)
18
+ * - Transfer $500: $0.50 fee (0.1% × $500 = $0.50 exactly)
19
+ * - Transfer $1,000: $1.00 fee (0.1% applies)
20
+ * - Transfer $10,000: $10.00 fee (0.1% × $10,000 = $10.00, cap reached)
21
+ * - Transfer $50,000: $10.00 fee (maximum cap applies)
22
+ *
23
+ * @module features/gas-free/utils/FeeCalculator
24
+ */
25
+ /**
26
+ * Fee calculator for gas-free transfers
27
+ *
28
+ * Uses a simple percentage-based pricing model with floor and cap.
29
+ */
30
+ export declare class FeeCalculator {
31
+ private readonly assetToUsdRate;
32
+ private readonly assetPrecision;
33
+ private readonly FEE_RATE;
34
+ private readonly MIN_FEE;
35
+ private readonly MAX_FEE;
36
+ /**
37
+ * Create a fee estimator with default parameters
38
+ */
39
+ constructor();
40
+ /**
41
+ * Calculate service fee in USD based on transfer amount
42
+ *
43
+ * Uses a simple percentage-based model with floor and cap:
44
+ * - 0.1% of transfer amount
45
+ * - Minimum: $0.50 (applies for amounts < $500)
46
+ * - Maximum: $10.00 (applies for amounts > $10,000)
47
+ *
48
+ * @param amountUsd - Transfer amount in USD
49
+ * @returns Fee in USD
50
+ * @throws Error if amount is invalid
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const calculator = new FeeCalculator();
55
+ * console.log(calculator.calculateFee(100)); // $0.50 (minimum)
56
+ * console.log(calculator.calculateFee(500)); // $0.50 (0.1% × $500)
57
+ * console.log(calculator.calculateFee(1000)); // $1.00 (0.1% × $1000)
58
+ * console.log(calculator.calculateFee(10000)); // $10.00 (0.1% × $10000, cap reached)
59
+ * console.log(calculator.calculateFee(50000)); // $10.00 (maximum cap)
60
+ * ```
61
+ */
62
+ calculateFee(amountUsd: number): number;
63
+ /**
64
+ * Estimate service fee in RGB asset base units
65
+ *
66
+ * This method uses hardcoded parameters (1:1 USD rate, precision 6) to estimate fees.
67
+ *
68
+ * Steps:
69
+ * 1. Converts transfer amount from base units to asset units
70
+ * 2. Converts asset units to USD (1:1 rate)
71
+ * 3. Calculates fee in USD (0.1% with $0.50 min, $10 max)
72
+ * 4. Converts fee back to asset base units
73
+ *
74
+ * @param transferAmount - Amount being transferred in base units (e.g., 100250000 for 100.25 TUSDT with precision 6)
75
+ * @param assetToUsdRate - Conversion rate from asset to USD (optional, defaults to 1)
76
+ * @param assetPrecision - Asset precision exponent (optional, defaults to 6)
77
+ * @returns Object with fee in asset base units, USD, and effective percentage
78
+ * @throws Error if inputs are invalid
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const calculator = new FeeCalculator();
83
+ *
84
+ * // Transfer 100 TUSDT (100000000 base units with precision 6)
85
+ * const result1 = calculator.estimateFeeInAsset(100000000, 1, 6);
86
+ * console.log(`Fee: ${result1.feeInAsset} base units`); // 500000 ($0.50 minimum)
87
+ * console.log(`Fee: $${result1.feeUsd}`); // $0.50
88
+ *
89
+ * // Transfer 1,000 TUSDT (1000000000 base units)
90
+ * const result2 = calculator.estimateFeeInAsset(1000000000, 1, 6);
91
+ * console.log(`Fee: ${result2.feeInAsset} base units`); // 1000000 ($1.00)
92
+ * console.log(`Fee: $${result2.feeUsd}`); // $1.00
93
+ * console.log(`Rate: ${result2.effectivePercentage}%`); // 0.1%
94
+ * ```
95
+ */
96
+ estimateFeeInAsset(transferAmount: number, assetToUsdRate?: number, assetPrecision?: number): {
97
+ feeInAsset: number;
98
+ feeUsd: number;
99
+ effectivePercentage: number;
100
+ };
101
+ /**
102
+ * Get the current asset to USD exchange rate
103
+ */
104
+ getAssetToUsdRate(): number;
105
+ /**
106
+ * Get the current asset precision
107
+ */
108
+ getAssetPrecision(): number;
109
+ /**
110
+ * Get the fee rate (0.1%)
111
+ */
112
+ getFeeRate(): number;
113
+ /**
114
+ * Get the minimum fee ($0.50)
115
+ */
116
+ getMinFee(): number;
117
+ /**
118
+ * Get the maximum fee ($10.00)
119
+ */
120
+ getMaxFee(): number;
121
+ }
122
+ /**
123
+ * Create a default fee calculator instance
124
+ *
125
+ * @returns FeeCalculator instance
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * import { createFeeCalculator } from './FeeCalculator';
130
+ *
131
+ * const calculator = createFeeCalculator();
132
+ * const fee = calculator.estimateFeeInAsset(100000000); // 100 TUSDT
133
+ * console.log(`Fee: $${fee.feeUsd}`); // $0.50 (minimum applies)
134
+ * ```
135
+ */
136
+ export declare function createFeeCalculator(): FeeCalculator;
137
+ //# sourceMappingURL=FeeCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeeCalculator.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/utils/FeeCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAG5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC;;OAEG;;IAKH;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAqB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACI,kBAAkB,CACvB,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE;IAkDtE;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,SAAS,IAAI,MAAM;CAG3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -6,4 +6,5 @@
6
6
  export { MiningUTXOSchema, MiningChangeUTXOSchema, FeeQuoteSchema, FeeQuoteRequestSchema, SubmitPSBTRequestSchema, VerifyTransferRequestSchema, GasFreeTransferStatusSchema, GasFreeResultSchema, SubmitResultSchema, VerificationResultSchema, validateFeeQuote, validateFeeQuoteRequest, validateSubmitResult, validateVerificationResult, validatePSBT, validateRGBAmount, } from './validation';
7
7
  export type { RetryConfig } from './retry';
8
8
  export { DEFAULT_RETRY_CONFIG, calculateRetryDelay, defaultShouldRetry, sleep, retryWithBackoff, withRetry, } from './retry';
9
+ export { FeeCalculator, createFeeCalculator } from './FeeCalculator';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,EACL,gBAAgB,EAChB,SAAS,GACV,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,EACL,gBAAgB,EAChB,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -141,22 +141,25 @@ export declare const FeeQuoteSchema: z.ZodObject<{
141
141
  */
142
142
  export declare const FeeQuoteRequestSchema: z.ZodObject<{
143
143
  userId: z.ZodString;
144
- assetId: z.ZodOptional<z.ZodString>;
144
+ assetId: z.ZodString;
145
145
  numInputs: z.ZodNumber;
146
146
  numOutputs: z.ZodNumber;
147
147
  recipientInvoice: z.ZodString;
148
+ transferAmount: z.ZodNumber;
148
149
  }, "strip", z.ZodTypeAny, {
149
150
  userId: string;
151
+ assetId: string;
150
152
  numInputs: number;
151
153
  numOutputs: number;
152
154
  recipientInvoice: string;
153
- assetId?: string | undefined;
155
+ transferAmount: number;
154
156
  }, {
155
157
  userId: string;
158
+ assetId: string;
156
159
  numInputs: number;
157
160
  numOutputs: number;
158
161
  recipientInvoice: string;
159
- assetId?: string | undefined;
162
+ transferAmount: number;
160
163
  }>;
161
164
  /**
162
165
  * Schema for Submit PSBT Request
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,YAAY,EAEZ,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAWK,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;EAGK,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BK,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAYK,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAMK,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMK,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,2BAA2B,+CAAsC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBK,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAgBK,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAOK,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAexD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAetE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAehE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAe5E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBlD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAiBzD"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/gas-free/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,YAAY,EAEZ,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAWK,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;EAGK,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BK,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAsBK,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAMK,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMK,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,2BAA2B,+CAAsC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBK,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAgBK,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAOK,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAexD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAetE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAehE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAe5E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBlD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAiBzD"}
@@ -20,6 +20,7 @@ export { Logger, createLogger } from './utils/logger';
20
20
  export { WatchTowerModule } from './features/watch-tower';
21
21
  export type { WatchTowerConfig, AddToWatchTowerParams, AddToWatchTowerResponse, AddToWatchTowerResponseData, AddToWatchTowerWebPushEcho, WatchTowerWebPushKeys, WatchTowerWebPushSubscription, } from './features/watch-tower';
22
22
  export { GasFreeModule, createGasFreeModule } from './features/gas-free';
23
+ export { FeeCalculator, createFeeCalculator } from './features/gas-free';
23
24
  export type { GasFreeConfig, GasFreeTransferRequest, GasFreeTransferResult, FeeQuote, PSBTBuildResult, PSBTSubmitResult, BroadcastResult, TransferState, } from './features/gas-free/types';
24
25
  export { GasFreeError, GasFreeErrorCode } from './features/gas-free/errors';
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orbis1-sdk-rn",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Orbis1 SDK for React Native with RGB core, Watch Tower, and Gas-Free transfers.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -161,7 +161,7 @@ export class GasFreeModule implements IFeatureModule<GasFreeConfig> {
161
161
  async requestFeeQuote(request: GasFreeTransferRequest): Promise<FeeQuote> {
162
162
  this.logger?.debug('Requesting fee quote', {
163
163
  assetId: request.assetId,
164
- amount: request.amount,
164
+ transferAmount: request.transferAmount,
165
165
  });
166
166
 
167
167
  // Check module is ready
@@ -230,7 +230,7 @@ export class GasFreeModule implements IFeatureModule<GasFreeConfig> {
230
230
  this.logger?.debug('Confirming transfer with quote', {
231
231
  quoteId: feeQuote.quoteId,
232
232
  assetId: request.assetId,
233
- amount: request.amount,
233
+ transferAmount: request.transferAmount,
234
234
  });
235
235
 
236
236
  // Check module is ready
@@ -339,6 +339,7 @@ export class GasFreeModule implements IFeatureModule<GasFreeConfig> {
339
339
  numInputs: request.numInputs || 1, // defaults to 1 inputs if not provided (1 user input)
340
340
  numOutputs: request.numOutputs || 2, // defaults to 2 outputs if not provided (1 OP_RETURN, 1 user change <equal val as input>)
341
341
  recipientInvoice: request.recipientInvoice,
342
+ transferAmount: request.transferAmount,
342
343
  });
343
344
 
344
345
  // Check quote expiration
@@ -465,8 +466,8 @@ export class GasFreeModule implements IFeatureModule<GasFreeConfig> {
465
466
  assignment: {
466
467
  // Use FUNGIBLE type for asset transfers (invoice may have 'ANY' wildcard type)
467
468
  type: 'FUNGIBLE',
468
- // Use amount from request (in base units (w/ precision), as integer)
469
- amount: parseInt(request.amount, 10),
469
+ // transferAmount is already in base units (with precision included)
470
+ amount: request.transferAmount,
470
471
  },
471
472
  transportEndpoints: decodedRecipientInvoice.transportEndpoints,
472
473
  },
@@ -10,5 +10,8 @@ export { GasFreeModule, createGasFreeModule } from './GasFreeModule';
10
10
  // Types
11
11
  export * from './types';
12
12
 
13
+ // Utilities
14
+ export { FeeCalculator, createFeeCalculator } from './utils';
15
+
13
16
  // Errors
14
17
  export * from './errors';
@@ -74,14 +74,16 @@ export interface FeeQuote {
74
74
  export interface FeeQuoteRequest {
75
75
  /** Unique identifier for the user */
76
76
  userId: string;
77
- /** RGB asset ID for the service fee invoice (optional) */
78
- assetId?: string;
77
+ /** RGB asset ID for the transfer */
78
+ assetId: string;
79
79
  /** Number of USER's transaction inputs (excludes service's mining UTXO) */
80
80
  numInputs: number;
81
81
  /** Number of USER's transaction outputs (INCLUDES OP_RETURN, must be >= 2) */
82
82
  numOutputs: number;
83
83
  /** RGB invoice for the recipient (mandatory) */
84
84
  recipientInvoice: string;
85
+ /** Amount being transferred in base units with precision included (e.g., 100250000 for 100.25 TUSDT with precision 6) */
86
+ transferAmount: number;
85
87
  }
86
88
 
87
89
  /**
@@ -17,8 +17,8 @@ export interface GasFreeTransferRequest {
17
17
  /** Asset ID being transferred */
18
18
  assetId: string;
19
19
 
20
- /** Amount of RGB asset to send */
21
- amount: string;
20
+ /** Amount being transferred in base units with precision included (e.g., 100250000 for 100.25 TUSDT with precision 6) */
21
+ transferAmount: number;
22
22
 
23
23
  /** Recipient RGB invoice (blinded UTXO or witness output) */
24
24
  recipientInvoice: string;
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Fee Calculator
3
+ *
4
+ * Provides local fee calculation for gas-free transfers.
5
+ * Calculates service fees based on transfer amounts using a simple percentage-based model.
6
+ *
7
+ * Fee Structure:
8
+ * - Base rate: 0.1% (0.001)
9
+ * - Minimum fee: $0.50 (floor dominates until $500)
10
+ * - Maximum fee: $10.00 (cap applies above $10,000)
11
+ *
12
+ * Assumptions:
13
+ * - 1 asset unit (no precision) = 1 USD (will be fetched dynamically in the future)
14
+ * - Default precision: 6 decimals
15
+ *
16
+ * Examples:
17
+ * - Transfer $100: $0.50 fee (minimum applies)
18
+ * - Transfer $500: $0.50 fee (0.1% × $500 = $0.50 exactly)
19
+ * - Transfer $1,000: $1.00 fee (0.1% applies)
20
+ * - Transfer $10,000: $10.00 fee (0.1% × $10,000 = $10.00, cap reached)
21
+ * - Transfer $50,000: $10.00 fee (maximum cap applies)
22
+ *
23
+ * @module features/gas-free/utils/FeeCalculator
24
+ */
25
+
26
+ /**
27
+ * Fee calculator for gas-free transfers
28
+ *
29
+ * Uses a simple percentage-based pricing model with floor and cap.
30
+ */
31
+ export class FeeCalculator {
32
+ private readonly assetToUsdRate: number = 1; // 1 asset unit (no precision) = 1 USD
33
+ private readonly assetPrecision: number = 6; // Default precision
34
+
35
+ // Fee calculation parameters
36
+ private readonly FEE_RATE = 0.001; // 0.1%
37
+ private readonly MIN_FEE = 0.5; // $0.50 minimum (floor)
38
+ private readonly MAX_FEE = 10.0; // $10.00 maximum (cap)
39
+
40
+ /**
41
+ * Create a fee estimator with default parameters
42
+ */
43
+ constructor() {
44
+ // No configuration needed - fixed parameters
45
+ }
46
+
47
+ /**
48
+ * Calculate service fee in USD based on transfer amount
49
+ *
50
+ * Uses a simple percentage-based model with floor and cap:
51
+ * - 0.1% of transfer amount
52
+ * - Minimum: $0.50 (applies for amounts < $500)
53
+ * - Maximum: $10.00 (applies for amounts > $10,000)
54
+ *
55
+ * @param amountUsd - Transfer amount in USD
56
+ * @returns Fee in USD
57
+ * @throws Error if amount is invalid
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const calculator = new FeeCalculator();
62
+ * console.log(calculator.calculateFee(100)); // $0.50 (minimum)
63
+ * console.log(calculator.calculateFee(500)); // $0.50 (0.1% × $500)
64
+ * console.log(calculator.calculateFee(1000)); // $1.00 (0.1% × $1000)
65
+ * console.log(calculator.calculateFee(10000)); // $10.00 (0.1% × $10000, cap reached)
66
+ * console.log(calculator.calculateFee(50000)); // $10.00 (maximum cap)
67
+ * ```
68
+ */
69
+ public calculateFee(amountUsd: number): number {
70
+ if (amountUsd < 0) {
71
+ throw new Error('Amount cannot be negative');
72
+ }
73
+
74
+ if (!Number.isFinite(amountUsd)) {
75
+ throw new Error('Amount must be a valid number');
76
+ }
77
+
78
+ // Calculate percentage-based fee
79
+ const percentageFee = amountUsd * this.FEE_RATE;
80
+
81
+ // Apply floor (minimum) and cap (maximum)
82
+ const feeUsd = Math.max(
83
+ this.MIN_FEE,
84
+ Math.min(this.MAX_FEE, percentageFee)
85
+ );
86
+
87
+ return feeUsd;
88
+ }
89
+
90
+ /**
91
+ * Estimate service fee in RGB asset base units
92
+ *
93
+ * This method uses hardcoded parameters (1:1 USD rate, precision 6) to estimate fees.
94
+ *
95
+ * Steps:
96
+ * 1. Converts transfer amount from base units to asset units
97
+ * 2. Converts asset units to USD (1:1 rate)
98
+ * 3. Calculates fee in USD (0.1% with $0.50 min, $10 max)
99
+ * 4. Converts fee back to asset base units
100
+ *
101
+ * @param transferAmount - Amount being transferred in base units (e.g., 100250000 for 100.25 TUSDT with precision 6)
102
+ * @param assetToUsdRate - Conversion rate from asset to USD (optional, defaults to 1)
103
+ * @param assetPrecision - Asset precision exponent (optional, defaults to 6)
104
+ * @returns Object with fee in asset base units, USD, and effective percentage
105
+ * @throws Error if inputs are invalid
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const calculator = new FeeCalculator();
110
+ *
111
+ * // Transfer 100 TUSDT (100000000 base units with precision 6)
112
+ * const result1 = calculator.estimateFeeInAsset(100000000, 1, 6);
113
+ * console.log(`Fee: ${result1.feeInAsset} base units`); // 500000 ($0.50 minimum)
114
+ * console.log(`Fee: $${result1.feeUsd}`); // $0.50
115
+ *
116
+ * // Transfer 1,000 TUSDT (1000000000 base units)
117
+ * const result2 = calculator.estimateFeeInAsset(1000000000, 1, 6);
118
+ * console.log(`Fee: ${result2.feeInAsset} base units`); // 1000000 ($1.00)
119
+ * console.log(`Fee: $${result2.feeUsd}`); // $1.00
120
+ * console.log(`Rate: ${result2.effectivePercentage}%`); // 0.1%
121
+ * ```
122
+ */
123
+ public estimateFeeInAsset(
124
+ transferAmount: number,
125
+ assetToUsdRate?: number,
126
+ assetPrecision?: number
127
+ ): { feeInAsset: number; feeUsd: number; effectivePercentage: number } {
128
+ // Use provided values or defaults
129
+ const rate = assetToUsdRate ?? this.assetToUsdRate;
130
+ const precision = assetPrecision ?? this.assetPrecision;
131
+
132
+ // Validate inputs
133
+ if (transferAmount < 0) {
134
+ throw new Error('Transfer amount cannot be negative');
135
+ }
136
+
137
+ if (!Number.isFinite(transferAmount)) {
138
+ throw new Error('Transfer amount must be a valid number');
139
+ }
140
+
141
+ if (rate <= 0) {
142
+ throw new Error('Asset to USD rate must be positive');
143
+ }
144
+
145
+ if (!Number.isFinite(rate)) {
146
+ throw new Error('Asset to USD rate must be a valid number');
147
+ }
148
+
149
+ if (precision <= 0 || !Number.isInteger(precision)) {
150
+ throw new Error('Asset precision must be a positive integer');
151
+ }
152
+
153
+ // Step 1: Convert transfer amount from base units to asset units
154
+ const transferAmountInAssetUnits = transferAmount / Math.pow(10, precision);
155
+
156
+ // Step 2: Convert to USD
157
+ const transferAmountUsd = transferAmountInAssetUnits * rate;
158
+
159
+ // Step 3: Calculate fee in USD using amount-based formula
160
+ const feeUsd = this.calculateFee(transferAmountUsd);
161
+
162
+ // Step 4: Convert USD fee to asset base units
163
+ // USD → asset units → base units (with precision)
164
+ const feeInAssetUnits = feeUsd / rate;
165
+ const feeInAsset = Math.round(feeInAssetUnits * Math.pow(10, precision));
166
+
167
+ // Calculate effective percentage for tracking
168
+ const effectivePercentage = (feeUsd / transferAmountUsd) * 100;
169
+
170
+ return {
171
+ feeInAsset,
172
+ feeUsd,
173
+ effectivePercentage,
174
+ };
175
+ }
176
+
177
+ /**
178
+ * Get the current asset to USD exchange rate
179
+ */
180
+ public getAssetToUsdRate(): number {
181
+ return this.assetToUsdRate;
182
+ }
183
+
184
+ /**
185
+ * Get the current asset precision
186
+ */
187
+ public getAssetPrecision(): number {
188
+ return this.assetPrecision;
189
+ }
190
+
191
+ /**
192
+ * Get the fee rate (0.1%)
193
+ */
194
+ public getFeeRate(): number {
195
+ return this.FEE_RATE;
196
+ }
197
+
198
+ /**
199
+ * Get the minimum fee ($0.50)
200
+ */
201
+ public getMinFee(): number {
202
+ return this.MIN_FEE;
203
+ }
204
+
205
+ /**
206
+ * Get the maximum fee ($10.00)
207
+ */
208
+ public getMaxFee(): number {
209
+ return this.MAX_FEE;
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Create a default fee calculator instance
215
+ *
216
+ * @returns FeeCalculator instance
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * import { createFeeCalculator } from './FeeCalculator';
221
+ *
222
+ * const calculator = createFeeCalculator();
223
+ * const fee = calculator.estimateFeeInAsset(100000000); // 100 TUSDT
224
+ * console.log(`Fee: $${fee.feeUsd}`); // $0.50 (minimum applies)
225
+ * ```
226
+ */
227
+ export function createFeeCalculator(): FeeCalculator {
228
+ return new FeeCalculator();
229
+ }
@@ -35,3 +35,6 @@ export {
35
35
  retryWithBackoff,
36
36
  withRetry,
37
37
  } from './retry';
38
+
39
+ // Fee Calculation
40
+ export { FeeCalculator, createFeeCalculator } from './FeeCalculator';
@@ -85,17 +85,27 @@ export const FeeQuoteSchema = z.object({
85
85
  * Schema for Fee Quote Request
86
86
  */
87
87
  export const FeeQuoteRequestSchema = z.object({
88
- userId: z.string().min(1, 'User ID must not be empty'),
89
- assetId: z.string().optional(),
90
- numInputs: z.number().int().positive('Number of inputs must be positive'),
88
+ userId: z.string().min(1, 'User ID cannot be empty'),
89
+ assetId: z
90
+ .string()
91
+ .min(1, 'Asset ID cannot be empty')
92
+ .regex(/^rgb:/, 'Asset ID must start with rgb: prefix'),
93
+ numInputs: z
94
+ .number()
95
+ .int()
96
+ .positive('Number of inputs must be a positive integer'),
91
97
  numOutputs: z
92
98
  .number()
93
99
  .int()
94
- .min(2, 'Number of outputs must be at least 2 (includes OP_RETURN)'),
100
+ .positive('Number of outputs must be a positive integer'),
95
101
  recipientInvoice: z
96
102
  .string()
97
103
  .min(1, 'Recipient invoice cannot be empty')
98
104
  .regex(/^rgb1?:/, 'Recipient invoice must start with rgb: or rgb1:'),
105
+ transferAmount: z
106
+ .number()
107
+ .positive('Transfer amount must be positive')
108
+ .finite('Transfer amount must be finite'),
99
109
  }) satisfies z.ZodType<FeeQuoteRequest>;
100
110
 
101
111
  /**
package/src/index.ts CHANGED
@@ -42,6 +42,7 @@ export type {
42
42
 
43
43
  // Gas-Free feature
44
44
  export { GasFreeModule, createGasFreeModule } from './features/gas-free';
45
+ export { FeeCalculator, createFeeCalculator } from './features/gas-free';
45
46
  export type {
46
47
  GasFreeConfig,
47
48
  GasFreeTransferRequest,