orbis1-sdk-rn 0.2.1 → 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.
- package/README.md +6 -9
- package/lib/module/features/gas-free/GasFreeModule.js +6 -5
- package/lib/module/features/gas-free/GasFreeModule.js.map +1 -1
- package/lib/module/features/gas-free/index.js +3 -0
- package/lib/module/features/gas-free/index.js.map +1 -1
- package/lib/module/features/gas-free/types/FeeQuote.js.map +1 -1
- package/lib/module/features/gas-free/utils/FeeCalculator.js +218 -0
- package/lib/module/features/gas-free/utils/FeeCalculator.js.map +1 -0
- package/lib/module/features/gas-free/utils/index.js +3 -0
- package/lib/module/features/gas-free/utils/index.js.map +1 -1
- package/lib/module/features/gas-free/utils/validation.js +6 -5
- package/lib/module/features/gas-free/utils/validation.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/features/gas-free/GasFreeModule.d.ts.map +1 -1
- package/lib/typescript/src/features/gas-free/index.d.ts +1 -0
- package/lib/typescript/src/features/gas-free/index.d.ts.map +1 -1
- package/lib/typescript/src/features/gas-free/types/FeeQuote.d.ts +4 -2
- package/lib/typescript/src/features/gas-free/types/FeeQuote.d.ts.map +1 -1
- package/lib/typescript/src/features/gas-free/types/GasFreeRequest.d.ts +2 -2
- package/lib/typescript/src/features/gas-free/types/GasFreeRequest.d.ts.map +1 -1
- package/lib/typescript/src/features/gas-free/utils/FeeCalculator.d.ts +137 -0
- package/lib/typescript/src/features/gas-free/utils/FeeCalculator.d.ts.map +1 -0
- package/lib/typescript/src/features/gas-free/utils/index.d.ts +1 -0
- package/lib/typescript/src/features/gas-free/utils/index.d.ts.map +1 -1
- package/lib/typescript/src/features/gas-free/utils/validation.d.ts +6 -3
- package/lib/typescript/src/features/gas-free/utils/validation.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/gas-free/GasFreeModule.ts +5 -4
- package/src/features/gas-free/index.ts +3 -0
- package/src/features/gas-free/types/FeeQuote.ts +4 -2
- package/src/features/gas-free/types/GasFreeRequest.ts +2 -2
- package/src/features/gas-free/utils/FeeCalculator.ts +229 -0
- package/src/features/gas-free/utils/index.ts +3 -0
- package/src/features/gas-free/utils/validation.ts +14 -4
- 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
|
|
89
|
+
const transferRequest = {
|
|
90
90
|
userId: 'user-123',
|
|
91
91
|
assetId: 'rgb:...',
|
|
92
|
-
|
|
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`);
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
383
|
-
amount:
|
|
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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,SAASA,aAAa,QAAQ,2BAAwB;AAEtD,SAASC,iBAAiB,QAAQ,oCAAiC;AAGnE,SAASC,oBAAoB,QAAQ,0BAAuB;AAc5D,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,0BAAuB;AAEtE,SAASC,OAAO,QAAQ,wBAAqB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,CAA0C;EAClDC,IAAI,GAAGF,OAAO,CAACG,QAAQ;EACvBC,OAAO,GAAG,OAAO;EAOzBC,KAAK,GAAG,KAAK;EACbC,YAAY,GAAkB;IAAEC,MAAM,EAAE;EAAO,CAAC;EAExDC,WAAWA,CAACC,MAAqB,EAAE;IACjC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,UAAUA,CAACC,MAAe,EAAEC,MAAe,EAAiB;IAChE,IAAI,CAACD,MAAM,EAAE;MACX,MAAMb,YAAY,CAACe,oBAAoB,CACrC,2CACF,CAAC;IACH;;IAEA;IACA,IAAI,CAACD,MAAM,GAAGA,MAAM,EAAEE,KAAK,CAAC,SAAS,CAAC;IAEtC,MAAMC,UAAU,GAAGlB,oBAAoB,CAAC,IAAI,CAACY,MAAM,CAACO,WAAW,CAAC;IAEhE,IAAI,CAACJ,MAAM,EAAEK,KAAK,CAAC,0BAA0B,EAAE;MAC7CC,OAAO,EAAEH,UAAU;MACnBI,OAAO,EAAE,IAAI,CAACV,MAAM,CAACU;IACvB,CAAC,CAAC;IAEF,IAAI;MACF;MACA,IAAI,CAACC,cAAc,CAAC,IAAI,CAACX,MAAM,CAAC;;MAEhC;MACA,IAAI,CAACE,MAAM,GAAGA,MAAM;;MAEpB;MACA,IAAI,CAACU,aAAa,GAAG,IAAI1B,aAAa,CACpC;QACE2B,MAAM,EAAE,IAAI,CAACb,MAAM,CAACa,MAAM,IAAI,EAAE;QAChCJ,OAAO,EAAEH,UAAU;QACnBI,OAAO,EAAE,IAAI,CAACV,MAAM,CAACU,OAAO,IAAI;MAClC,CAAC,EACD,IAAI,CAACP,MACP,CAAC;;MAED;MACA,IAAI,CAACW,iBAAiB,GAAG,IAAI3B,iBAAiB,CAACe,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;MAEnE,IAAI,CAACP,KAAK,GAAG,IAAI;MACjB,IAAI,CAACO,MAAM,EAAEK,KAAK,CAAC,0BAA0B,CAAC;IAChD,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd,IAAI,CAACZ,MAAM,EAAEY,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAClD,MAAM1B,YAAY,CAACe,oBAAoB,CACrCW,KAAK,YAAYC,KAAK,GAAGD,KAAK,CAACE,OAAO,GAAGC,MAAM,CAACH,KAAK,CACvD,CAAC;IACH;EACF;;EAEA;AACF;AACA;EACE,MAAMI,OAAOA,CAAA,EAAkB;IAC7B,MAAM,IAAI,CAACC,OAAO,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;EACEC,SAASA,CAAA,EAAiE;IACxE,OAAO;MACLC,OAAO,EAAE,IAAI,CAACtB,MAAM,CAACsB,OAAO;MAC5B1B,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,YAAY,EAAE,IAAI,CAACA,YAAY,CAACC;IAClC,CAAC;EACH;;EAEA;AACF;AACA;EACEyB,OAAOA,CAAA,EAAY;IACjB,OAAO,IAAI,CAAC3B,KAAK,IAAI,CAAC,CAAC,IAAI,CAACM,MAAM,IAAI,CAAC,CAAC,IAAI,CAACU,aAAa;EAC5D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMY,eAAeA,CAACC,OAA+B,EAAqB;IACxE,IAAI,CAACtB,MAAM,EAAEK,KAAK,CAAC,sBAAsB,EAAE;MACzCkB,OAAO,EAAED,OAAO,CAACC,OAAO;MACxBC,cAAc,EAAEF,OAAO,CAACE;IAC1B,CAAC,CAAC;;IAEF;IACA,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAC,CAAC,EAAE;MACnB,MAAMlC,YAAY,CAACuC,cAAc,CAAC,CAAC;IACrC;;IAEA;IACA,IAAI,CAAC/B,YAAY,GAAG;MAAEC,MAAM,EAAE;IAAO,CAAC;IAEtC,IAAI;MACF,MAAM+B,QAAQ,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACL,OAAO,CAAC;MACrD,IAAI,CAACtB,MAAM,EAAEK,KAAK,CAAC,kCAAkC,EAAE;QACrDuB,OAAO,EAAEF,QAAQ,CAACE;MACpB,CAAC,CAAC;MACF,OAAOF,QAAQ;IACjB,CAAC,CAAC,OAAOd,KAAK,EAAE;MACd,IAAI,CAAClB,YAAY,CAACC,MAAM,GAAG,QAAQ;MACnC,IAAI,CAACD,YAAY,CAACkB,KAAK,GACrBA,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACE,MAAM,CAACH,KAAK,CAAC,CAAC;MAE3D,IAAI,CAACZ,MAAM,EAAEY,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;MAErD,IAAIA,KAAK,YAAY1B,YAAY,EAAE;QACjC,MAAM0B,KAAK;MACb;MAEA,MAAM,IAAI1B,YAAY,CACpB,8BAA8B,EAC9BC,gBAAgB,CAAC0C,OAAO,EACxBjB,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAGkB,SACnC,CAAC;IACH;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;EACE,MAAMC,eAAeA,CACnBT,OAA+B,EAC/BI,QAAkB,EACc;IAChC,IAAI,CAAC1B,MAAM,EAAEK,KAAK,CAAC,gCAAgC,EAAE;MACnDuB,OAAO,EAAEF,QAAQ,CAACE,OAAO;MACzBL,OAAO,EAAED,OAAO,CAACC,OAAO;MACxBC,cAAc,EAAEF,OAAO,CAACE;IAC1B,CAAC,CAAC;;IAEF;IACA,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAC,CAAC,EAAE;MACnB,MAAMlC,YAAY,CAACuC,cAAc,CAAC,CAAC;IACrC;IAEA,IAAI;MACF;MACA,MAAMO,SAAS,GAAG,IAAIC,IAAI,CAACP,QAAQ,CAACM,SAAS,CAAC,CAACE,OAAO,CAAC,CAAC;MACxD,IAAIF,SAAS,GAAGC,IAAI,CAACE,GAAG,CAAC,CAAC,EAAE;QAC1B,MAAM,IAAIjD,YAAY,CACpB,aAAawC,QAAQ,CAACE,OAAO,cAAc,EAC3CzC,gBAAgB,CAACiD,aAAa,EAC9BN,SAAS,EACT;UAAEF,OAAO,EAAEF,QAAQ,CAACE;QAAQ,CAC9B,CAAC;MACH;;MAEA;MACA,MAAMS,UAAU,GAAG,MAAM,IAAI,CAACC,SAAS,CAAChB,OAAO,EAAEI,QAAQ,CAAC;;MAE1D;MACA;MACA;MACA;MACA;MACA,MAAMa,YAAY,GAAG,MAAM,IAAI,CAACC,UAAU,CACxCd,QAAQ,CAACE,OAAO,EAChBS,UAAU,EACVf,OAAO,CAACC,OACV,CAAC;;MAED;MACA;MACA;MACA;MACA,MAAM;QAAEkB,IAAI;QAAEC;MAAe,CAAC,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAC3DJ,YAAY,CAACK,gBACf,CAAC;;MAED;MACA,MAAM,IAAI,CAACC,cAAc,CAACnB,QAAQ,CAACE,OAAO,EAAEa,IAAI,EAAEC,cAAc,CAAC;;MAEjE;MACA,IAAI,CAAChD,YAAY,CAACC,MAAM,GAAG,UAAU;MAErC,IAAI,CAACK,MAAM,EAAEK,KAAK,CAAC,iCAAiC,EAAE;QAAEoC;MAAK,CAAC,CAAC;MAE/D,OAAO;QACLA,IAAI;QACJK,WAAW,EAAEP,YAAY,CAACQ,iBAAiB;QAC3CC,UAAU,EAAEtB,QAAQ,CAACuB,gBAAgB;QACrCrB,OAAO,EAAEF,QAAQ,CAACE;MACpB,CAAC;IACH,CAAC,CAAC,OAAOhB,KAAK,EAAE;MACd,IAAI,CAAClB,YAAY,CAACC,MAAM,GAAG,QAAQ;MACnC,IAAI,CAACD,YAAY,CAACkB,KAAK,GACrBA,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACE,MAAM,CAACH,KAAK,CAAC,CAAC;MAE3D,IAAI,CAACZ,MAAM,EAAEY,KAAK,CAAC,8BAA8B,EAAEA,KAAK,CAAC;;MAEzD;MACA,IAAIA,KAAK,YAAY1B,YAAY,EAAE;QACjC,MAAM0B,KAAK;MACb;;MAEA;MACA,MAAM,IAAI1B,YAAY,CACpB,0BAA0B,EAC1BC,gBAAgB,CAAC0C,OAAO,EACxBjB,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAGkB,SACnC,CAAC;IACH;EACF;;EAEA;AACF;AACA;EACEoB,QAAQA,CAAA,EAAkB;IACxB,OAAO;MAAE,GAAG,IAAI,CAACxD;IAAa,CAAC;EACjC;;EAEA;AACF;AACA;EACE,MAAMuB,OAAOA,CAAA,EAAkB;IAC7B,IAAI,CAACjB,MAAM,EAAEK,KAAK,CAAC,kBAAkB,CAAC;IAEtC,IAAI,CAACN,MAAM,GAAG+B,SAAS;IACvB,IAAI,CAAC9B,MAAM,GAAG8B,SAAS;IACvB,IAAI,CAACrB,aAAa,GAAGqB,SAAS;IAC9B,IAAI,CAACrC,KAAK,GAAG,KAAK;IAClB,IAAI,CAACC,YAAY,GAAG;MAAEC,MAAM,EAAE;IAAO,CAAC;EACxC;;EAEA;AACF;AACA;EACE,MAAcgC,gBAAgBA,CAACL,OAA+B,EAAE;IAC9D,IAAI,CAACtB,MAAM,EAAEK,KAAK,CAAC,8BAA8B,CAAC;IAElD,MAAMqB,QAAQ,GAAG,MAAM,IAAI,CAACjB,aAAa,CAAEkB,gBAAgB,CAAC;MAC1DwB,MAAM,EAAE7B,OAAO,CAAC6B,MAAM;MACtB5B,OAAO,EAAED,OAAO,CAACC,OAAO;MACxB6B,SAAS,EAAE9B,OAAO,CAAC8B,SAAS,IAAI,CAAC;MAAE;MACnCC,UAAU,EAAE/B,OAAO,CAAC+B,UAAU,IAAI,CAAC;MAAE;MACrCC,gBAAgB,EAAEhC,OAAO,CAACgC,gBAAgB;MAC1C9B,cAAc,EAAEF,OAAO,CAACE;IAC1B,CAAC,CAAC;;IAEF;IACA,MAAMQ,SAAS,GAAG,IAAIC,IAAI,CAACP,QAAQ,CAACM,SAAS,CAAC,CAACE,OAAO,CAAC,CAAC;IACxD,IAAIF,SAAS,GAAGC,IAAI,CAACE,GAAG,CAAC,CAAC,EAAE;MAC1B,MAAM,IAAIjD,YAAY,CACpB,aAAawC,QAAQ,CAACE,OAAO,cAAc,EAC3CzC,gBAAgB,CAACiD,aAAa,EAC9BN,SAAS,EACT;QAAEF,OAAO,EAAEF,QAAQ,CAACE;MAAQ,CAC9B,CAAC;IACH;IAEA,IAAI,CAAClC,YAAY,CAACC,MAAM,GAAG,iBAAiB;IAC5C,IAAI,CAACD,YAAY,CAACkC,OAAO,GAAGF,QAAQ,CAACE,OAAO;IAC5C,IAAI,CAAClC,YAAY,CAAC6D,cAAc,GAAGvB,SAAS;IAE5C,IAAI,CAAChC,MAAM,EAAEK,KAAK,CAAC,qBAAqB,EAAE;MACxCuB,OAAO,EAAEF,QAAQ,CAACE,OAAO;MACzB4B,SAAS,EAAE9B,QAAQ,CAAC+B,aAAa;MACjCT,UAAU,EAAEtB,QAAQ,CAACuB,gBAAgB;MACrCjB,SAAS,EAAEN,QAAQ,CAACM;IACtB,CAAC,CAAC;IAEF,OAAON,QAAQ;EACjB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMY,SAASA,CACbhB,OAA+B,EAC/BI,QAAkB,EACQ;IAC1B,IAAI,CAAC1B,MAAM,EAAEK,KAAK,CAAC,4CAA4C,CAAC;;IAEhE;IACA,MAAM2B,SAAS,GAAG,IAAIC,IAAI,CAACP,QAAQ,CAACM,SAAS,CAAC,CAACE,OAAO,CAAC,CAAC;IACxD,IAAIF,SAAS,GAAGC,IAAI,CAACE,GAAG,CAAC,CAAC,EAAE;MAC1B,MAAM,IAAIjD,YAAY,CACpB,aAAawC,QAAQ,CAACE,OAAO,cAAc,EAC3CzC,gBAAgB,CAACiD,aAAa,EAC9BN,SAAS,EACT;QAAEF,OAAO,EAAEF,QAAQ,CAACE;MAAQ,CAC9B,CAAC;IACH;IAEA,MAAM8B,cAAc,GAAG,CACrB;MACEjB,IAAI,EAAEf,QAAQ,CAACiC,UAAU,CAAClB,IAAI;MAC9BmB,IAAI,EAAElC,QAAQ,CAACiC,UAAU,CAACC,IAAI;MAC9BC,KAAK,EAAEnC,QAAQ,CAACiC,UAAU,CAACE,KAAK;MAChCC,YAAY,EAAEpC,QAAQ,CAACiC,UAAU,CAACI;IACpC,CAAC,CACF;;IAED;IACA,MAAMC,eAAe,GAAGtC,QAAQ,CAACuC,gBAAgB,GAC7C,CACE;MACEC,OAAO,EAAExC,QAAQ,CAACuC,gBAAgB,CAACC,OAAO;MAC1CL,KAAK,EAAEnC,QAAQ,CAACuC,gBAAgB,CAACJ;IACnC,CAAC,CACF,GACD/B,SAAS;;IAEb;IACA,MAAMqC,uBAAuB,GAAG,MAAM,IAAI,CAACpE,MAAM,CAAEqE,aAAa,CAC9D9C,OAAO,CAACgC,gBACV,CAAC;IACD,MAAMe,qBAAqB,GAAG,MAAM,IAAI,CAACtE,MAAM,CAAEqE,aAAa,CAC5D1C,QAAQ,CAAC4C,iBACX,CAAC;IACD,IAAI,CAACtE,MAAM,EAAEK,KAAK,CAAC,sBAAsB,EAAE;MACzCkE,SAAS,EAAEJ,uBAAuB;MAClCK,OAAO,EAAEH;IACX,CAAC,CAAC;IAEF,MAAMI,kBAAkB,GAAG/C,QAAQ,CAACgD,sBAAsB,GAAG,CAAC;;IAE9D;IACA;IACA;IACA;IACA,MAAMC,YAQL,GAAG;MACF,CAACrD,OAAO,CAACC,OAAO,GAAG,CACjB;QACE;QACAqD,WAAW,EAAET,uBAAuB,CAACS,WAAW;QAChD,IAAIH,kBAAkB,IAAI;UACxBI,WAAW,EAAE;YACXC,SAAS,EAAEpD,QAAQ,CAACgD,sBAAsB;YAC1CK,QAAQ,EAAE,CAAC,CAAE;UACf;QACF,CAAC,CAAC;QACFC,UAAU,EAAE;UACV;UACAC,IAAI,EAAE,UAAU;UAChB;UACAC,MAAM,EAAE5D,OAAO,CAACE;QAClB,CAAC;QACD2D,kBAAkB,EAAEhB,uBAAuB,CAACgB;MAC9C,CAAC,EACD;QACE;QACA;QACAP,WAAW,EAAEP,qBAAqB,CAACO,WAAW;QAC9CI,UAAU,EAAE;UACV;UACAC,IAAI,EAAE,UAAU;UAChB;UACAC,MAAM,EAAExD,QAAQ,CAACuB,gBAAgB,CAAE;QACrC,CAAC;QACDkC,kBAAkB,EAAEd,qBAAqB,CAACc;MAC5C,CAAC;IAEL,CAAC;;IAED;IACA;IACA,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACrF,MAAM,CAAEsF,SAAS,CAC/CV,YAAY,EACZ,IAAI;IAAE;IACNrD,OAAO,CAACgE,OAAO,IAAI,CAAC,EACpBhE,OAAO,CAACiE,gBAAgB,IAAI,CAAC,EAC7B7B,cAAc,EACdM,eACF,CAAC;IAED,IAAI,CAAChE,MAAM,EAAEK,KAAK,CAAC,0BAA0B,EAAE;MAC7CqD,cAAc,EAAEA,cAAc,CAAC8B,MAAM;MACrChC,SAAS,EAAE9B,QAAQ,CAAC+B;IACtB,CAAC,CAAC;IAEF,IAAI,CAAC/D,YAAY,CAACC,MAAM,GAAG,YAAY;IAEvC,OAAO;MACLyF,YAAY;MACZ5B,SAAS,EAAE9B,QAAQ,CAAC+B,aAAa;MACjCC;IACF,CAAC;EACH;;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;EACE,MAAMlB,UAAUA,CACdZ,OAAe,EACfS,UAA2B,EAC3Bd,OAAe,EACY;IAC3B,IAAI,CAACvB,MAAM,EAAEK,KAAK,CAAC,uDAAuD,CAAC;IAE3E,MAAM0C,iBAAiB,GAAG,MAAM,IAAI,CAACpC,iBAAiB,CAAE8E,YAAY,CAClElE,OAAO,EACPc,UAAU,CAAC+C,YACb,CAAC;IAED,MAAM7C,YAAY,GAAG,MAAM,IAAI,CAAC9B,aAAa,CAAEiF,QAAQ,CAAC;MACtD9D,OAAO;MACP+D,UAAU,EAAEtD,UAAU,CAAC+C,YAAY;MACnCrC;IACF,CAAC,CAAC;IAEF,IAAI,CAACrD,YAAY,CAACC,MAAM,GAAG,WAAW;IACtC,IAAI,CAACD,YAAY,CAAC+C,IAAI,GAAGF,YAAY,CAACqD,aAAa;IAEnD,IAAI,CAAC5F,MAAM,EAAEK,KAAK,CAAC,6BAA6B,EAAE;MAChDoC,IAAI,EAAEF,YAAY,CAACqD;IACrB,CAAC,CAAC;IAEF,OAAO;MAAE,GAAGrD,YAAY;MAAEQ;IAAkB,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMJ,iBAAiBA,CAACkD,iBAAyB,EAA4B;IAC3E,IAAI,CAAC7F,MAAM,EAAEK,KAAK,CAChB,0DACF,CAAC;;IAED;IACA,MAAMqC,cAAc,GAAG,MAAM,IAAI,CAAC3C,MAAM,CAAE2F,QAAQ,CAACG,iBAAiB,CAAC;IAErE,IAAI,CAAC7F,MAAM,EAAEK,KAAK,CAAC,wBAAwB,EAAE;MAAEqC;IAAe,CAAC,CAAC;;IAEhE;IACA,MAAMoD,eAAe,GAAG,MAAM,IAAI,CAAC/F,MAAM,CAAEgG,OAAO,CAACrD,cAAc,CAAC;IAElE,IAAI,CAAC1C,MAAM,EAAEK,KAAK,CAAC,mCAAmC,EAAE;MACtDyF;IACF,CAAC,CAAC;IAEF,IAAI,CAACpG,YAAY,CAACC,MAAM,GAAG,aAAa;IACxC,IAAI,CAACD,YAAY,CAAC+C,IAAI,GAAGqD,eAAe,CAACrD,IAAI;IAE7C,IAAI,CAACzC,MAAM,EAAEK,KAAK,CAAC,mCAAmC,EAAE;MACtDoC,IAAI,EAAEqD,eAAe,CAACrD,IAAI;MAC1BuD,gBAAgB,EAAEF,eAAe,CAACE;IACpC,CAAC,CAAC;IAEF,OAAO;MAAEvD,IAAI,EAAEqD,eAAe,CAACrD,IAAI;MAAEC;IAAe,CAAC;EACvD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMG,cAAcA,CAClBjB,OAAe,EACfa,IAAY,EACZG,gBAAwB,EACK;IAC7B,IAAI,CAAC5C,MAAM,EAAEK,KAAK,CAAC,4BAA4B,CAAC;IAEhD,MAAM4F,YAAY,GAAG,MAAM,IAAI,CAACxF,aAAa,CAAEoC,cAAc,CAAC;MAC5DjB,OAAO;MACPsE,eAAe,EAAE,IAAI;MACrBzD,IAAI;MACJG;IACF,CAAC,CAAC;IAEF,IAAI,CAAC5C,MAAM,EAAEK,KAAK,CAAC,mBAAmB,EAAE;MACtCoC,IAAI,EAAEwD,YAAY,CAACL,aAAa;MAChCjG,MAAM,EAAEsG,YAAY,CAACtG;IACvB,CAAC,CAAC;IAEF,IAAI,CAACD,YAAY,CAACC,MAAM,GAAG,UAAU;IAErC,OAAOsG,YAAY;EACrB;;EAEA;AACF;AACA;EACUzF,cAAcA,CAACX,MAAqB,EAAQ;IAClD,IAAI,CAACA,MAAM,CAACa,MAAM,IAAIb,MAAM,CAACa,MAAM,CAACyF,IAAI,CAAC,CAAC,CAACX,MAAM,KAAK,CAAC,EAAE;MACvD,MAAM,IAAItG,YAAY,CACpB,qBAAqB,EACrBC,gBAAgB,CAACiH,eACnB,CAAC;IACH;IAEA,IAAIvG,MAAM,CAACU,OAAO,IAAIV,MAAM,CAACU,OAAO,GAAG,IAAI,EAAE;MAC3C,MAAM,IAAIrB,YAAY,CACpB,iCAAiC,EACjCC,gBAAgB,CAACiH,eACnB,CAAC;IACH;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACxG,MAAqB,EAAiB;EACxE,OAAO,IAAIR,aAAa,CAACQ,MAAM,CAAC;AAClC","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;;
|
|
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
|
|
60
|
-
assetId: z.string().
|
|
61
|
-
numInputs: z.number().int().positive('Number of inputs must be positive'),
|
|
62
|
-
numOutputs: z.number().int().
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
|
@@ -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
|
|
74
|
-
assetId
|
|
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,
|
|
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
|
|
18
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
469
|
-
amount:
|
|
469
|
+
// transferAmount is already in base units (with precision included)
|
|
470
|
+
amount: request.transferAmount,
|
|
470
471
|
},
|
|
471
472
|
transportEndpoints: decodedRecipientInvoice.transportEndpoints,
|
|
472
473
|
},
|
|
@@ -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
|
|
78
|
-
assetId
|
|
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
|
|
21
|
-
|
|
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
|
+
}
|
|
@@ -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
|
|
89
|
-
assetId: z
|
|
90
|
-
|
|
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
|
-
.
|
|
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