@sip-protocol/sdk 0.7.3 → 0.7.4

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 (264) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +267 -0
  3. package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
  4. package/dist/browser.d.mts +10 -4
  5. package/dist/browser.d.ts +10 -4
  6. package/dist/browser.js +47556 -19603
  7. package/dist/browser.mjs +628 -48
  8. package/dist/chunk-4GRJ5MAW.mjs +152 -0
  9. package/dist/chunk-5D7A3L3W.mjs +717 -0
  10. package/dist/chunk-64AYA5F5.mjs +7834 -0
  11. package/dist/chunk-GMDGB22A.mjs +379 -0
  12. package/dist/chunk-I534WKN7.mjs +328 -0
  13. package/dist/chunk-IBZVA5Y7.mjs +1003 -0
  14. package/dist/chunk-PRRZAWJE.mjs +223 -0
  15. package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
  16. package/dist/{chunk-3M3HNQCW.mjs → chunk-YWGJ77A2.mjs} +28656 -13103
  17. package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
  18. package/dist/constants-LHAAUC2T.mjs +51 -0
  19. package/dist/dist-2OGQ7FED.mjs +3957 -0
  20. package/dist/dist-IFHPYLDX.mjs +254 -0
  21. package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
  22. package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
  23. package/dist/{index-DIBZHOOQ.d.ts → index-DXh2IGkz.d.ts} +21239 -10304
  24. package/dist/{index-8MQz13eJ.d.mts → index-DeE1ZzA4.d.mts} +21239 -10304
  25. package/dist/index.d.mts +9 -3
  26. package/dist/index.d.ts +9 -3
  27. package/dist/index.js +48396 -19623
  28. package/dist/index.mjs +537 -19
  29. package/dist/interface-Bf7w1PLW.d.mts +679 -0
  30. package/dist/interface-Bf7w1PLW.d.ts +679 -0
  31. package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
  32. package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
  33. package/dist/proofs/halo2.d.mts +151 -0
  34. package/dist/proofs/halo2.d.ts +151 -0
  35. package/dist/proofs/halo2.js +350 -0
  36. package/dist/proofs/halo2.mjs +11 -0
  37. package/dist/proofs/kimchi.d.mts +160 -0
  38. package/dist/proofs/kimchi.d.ts +160 -0
  39. package/dist/proofs/kimchi.js +431 -0
  40. package/dist/proofs/kimchi.mjs +13 -0
  41. package/dist/proofs/noir.d.mts +1 -1
  42. package/dist/proofs/noir.d.ts +1 -1
  43. package/dist/proofs/noir.js +74 -18
  44. package/dist/proofs/noir.mjs +84 -24
  45. package/dist/solana-U3MEGU7W.mjs +280 -0
  46. package/dist/validity_proof-3POXLPNY.mjs +21 -0
  47. package/package.json +54 -21
  48. package/src/adapters/index.ts +41 -0
  49. package/src/adapters/jupiter.ts +571 -0
  50. package/src/adapters/near-intents.ts +135 -0
  51. package/src/advisor/advisor.ts +653 -0
  52. package/src/advisor/index.ts +54 -0
  53. package/src/advisor/tools.ts +303 -0
  54. package/src/advisor/types.ts +164 -0
  55. package/src/chains/ethereum/announcement.ts +536 -0
  56. package/src/chains/ethereum/bnb-optimizations.ts +474 -0
  57. package/src/chains/ethereum/commitment.ts +522 -0
  58. package/src/chains/ethereum/constants.ts +462 -0
  59. package/src/chains/ethereum/deployment.ts +596 -0
  60. package/src/chains/ethereum/gas-estimation.ts +538 -0
  61. package/src/chains/ethereum/index.ts +268 -0
  62. package/src/chains/ethereum/optimizations.ts +614 -0
  63. package/src/chains/ethereum/privacy-adapter.ts +855 -0
  64. package/src/chains/ethereum/registry.ts +584 -0
  65. package/src/chains/ethereum/rpc.ts +905 -0
  66. package/src/chains/ethereum/stealth.ts +491 -0
  67. package/src/chains/ethereum/token.ts +790 -0
  68. package/src/chains/ethereum/transfer.ts +637 -0
  69. package/src/chains/ethereum/types.ts +456 -0
  70. package/src/chains/ethereum/viewing-key.ts +455 -0
  71. package/src/chains/near/commitment.ts +608 -0
  72. package/src/chains/near/constants.ts +284 -0
  73. package/src/chains/near/function-call.ts +871 -0
  74. package/src/chains/near/history.ts +654 -0
  75. package/src/chains/near/implicit-account.ts +840 -0
  76. package/src/chains/near/index.ts +393 -0
  77. package/src/chains/near/native-transfer.ts +658 -0
  78. package/src/chains/near/nep141.ts +775 -0
  79. package/src/chains/near/privacy-adapter.ts +889 -0
  80. package/src/chains/near/resolver.ts +971 -0
  81. package/src/chains/near/rpc.ts +1016 -0
  82. package/src/chains/near/stealth.ts +419 -0
  83. package/src/chains/near/types.ts +317 -0
  84. package/src/chains/near/viewing-key.ts +876 -0
  85. package/src/chains/solana/anchor-transfer.ts +386 -0
  86. package/src/chains/solana/commitment.ts +577 -0
  87. package/src/chains/solana/constants.ts +126 -12
  88. package/src/chains/solana/ephemeral-keys.ts +543 -0
  89. package/src/chains/solana/index.ts +252 -1
  90. package/src/chains/solana/key-derivation.ts +418 -0
  91. package/src/chains/solana/kit-compat.ts +334 -0
  92. package/src/chains/solana/optimizations.ts +560 -0
  93. package/src/chains/solana/privacy-adapter.ts +605 -0
  94. package/src/chains/solana/providers/generic.ts +47 -6
  95. package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
  96. package/src/chains/solana/providers/helius-enhanced.ts +623 -0
  97. package/src/chains/solana/providers/helius.ts +186 -33
  98. package/src/chains/solana/providers/index.ts +31 -0
  99. package/src/chains/solana/providers/interface.ts +61 -18
  100. package/src/chains/solana/providers/quicknode.ts +409 -0
  101. package/src/chains/solana/providers/triton.ts +426 -0
  102. package/src/chains/solana/providers/webhook.ts +338 -67
  103. package/src/chains/solana/rpc-client.ts +1150 -0
  104. package/src/chains/solana/scan.ts +83 -66
  105. package/src/chains/solana/sol-transfer.ts +732 -0
  106. package/src/chains/solana/spl-transfer.ts +886 -0
  107. package/src/chains/solana/stealth-scanner.ts +703 -0
  108. package/src/chains/solana/sunspot-verifier.ts +453 -0
  109. package/src/chains/solana/transaction-builder.ts +755 -0
  110. package/src/chains/solana/transfer.ts +74 -5
  111. package/src/chains/solana/types.ts +57 -6
  112. package/src/chains/solana/utils.ts +110 -0
  113. package/src/chains/solana/viewing-key.ts +807 -0
  114. package/src/compliance/fireblocks.ts +921 -0
  115. package/src/compliance/index.ts +23 -0
  116. package/src/compliance/range-sas.ts +398 -33
  117. package/src/config/endpoints.ts +100 -0
  118. package/src/crypto.ts +11 -8
  119. package/src/errors.ts +82 -0
  120. package/src/evm/erc4337-relayer.ts +830 -0
  121. package/src/evm/index.ts +47 -0
  122. package/src/fees/calculator.ts +396 -0
  123. package/src/fees/index.ts +87 -0
  124. package/src/fees/near-contract.ts +429 -0
  125. package/src/fees/types.ts +268 -0
  126. package/src/index.ts +686 -1
  127. package/src/intent.ts +6 -3
  128. package/src/logger.ts +324 -0
  129. package/src/network/index.ts +80 -0
  130. package/src/network/proxy.ts +691 -0
  131. package/src/optimizations/index.ts +541 -0
  132. package/src/oracle/types.ts +1 -0
  133. package/src/privacy-backends/arcium-types.ts +727 -0
  134. package/src/privacy-backends/arcium.ts +719 -0
  135. package/src/privacy-backends/combined-privacy.ts +866 -0
  136. package/src/privacy-backends/cspl-token.ts +595 -0
  137. package/src/privacy-backends/cspl-types.ts +512 -0
  138. package/src/privacy-backends/cspl.ts +907 -0
  139. package/src/privacy-backends/health.ts +488 -0
  140. package/src/privacy-backends/inco-types.ts +323 -0
  141. package/src/privacy-backends/inco.ts +616 -0
  142. package/src/privacy-backends/index.ts +254 -4
  143. package/src/privacy-backends/interface.ts +649 -6
  144. package/src/privacy-backends/lru-cache.ts +343 -0
  145. package/src/privacy-backends/magicblock.ts +458 -0
  146. package/src/privacy-backends/mock.ts +258 -0
  147. package/src/privacy-backends/privacycash.ts +13 -17
  148. package/src/privacy-backends/private-swap.ts +570 -0
  149. package/src/privacy-backends/rate-limiter.ts +683 -0
  150. package/src/privacy-backends/registry.ts +414 -2
  151. package/src/privacy-backends/router.ts +283 -3
  152. package/src/privacy-backends/shadowwire.ts +449 -0
  153. package/src/privacy-backends/sip-native.ts +3 -0
  154. package/src/privacy-logger.ts +191 -0
  155. package/src/production-safety.ts +373 -0
  156. package/src/proofs/aggregator.ts +1029 -0
  157. package/src/proofs/browser-composer.ts +1150 -0
  158. package/src/proofs/browser.ts +113 -25
  159. package/src/proofs/cache/index.ts +127 -0
  160. package/src/proofs/cache/interface.ts +545 -0
  161. package/src/proofs/cache/key-generator.ts +188 -0
  162. package/src/proofs/cache/lru-cache.ts +481 -0
  163. package/src/proofs/cache/multi-tier-cache.ts +575 -0
  164. package/src/proofs/cache/persistent-cache.ts +788 -0
  165. package/src/proofs/compliance-proof.ts +872 -0
  166. package/src/proofs/composer/base.ts +923 -0
  167. package/src/proofs/composer/index.ts +25 -0
  168. package/src/proofs/composer/interface.ts +518 -0
  169. package/src/proofs/composer/types.ts +383 -0
  170. package/src/proofs/converters/halo2.ts +452 -0
  171. package/src/proofs/converters/index.ts +208 -0
  172. package/src/proofs/converters/interface.ts +363 -0
  173. package/src/proofs/converters/kimchi.ts +462 -0
  174. package/src/proofs/converters/noir.ts +451 -0
  175. package/src/proofs/fallback.ts +888 -0
  176. package/src/proofs/halo2.ts +42 -0
  177. package/src/proofs/index.ts +471 -0
  178. package/src/proofs/interface.ts +13 -0
  179. package/src/proofs/kimchi.ts +42 -0
  180. package/src/proofs/lazy.ts +1004 -0
  181. package/src/proofs/mock.ts +25 -1
  182. package/src/proofs/noir.ts +110 -29
  183. package/src/proofs/orchestrator.ts +960 -0
  184. package/src/proofs/parallel/concurrency.ts +297 -0
  185. package/src/proofs/parallel/dependency-graph.ts +602 -0
  186. package/src/proofs/parallel/executor.ts +420 -0
  187. package/src/proofs/parallel/index.ts +131 -0
  188. package/src/proofs/parallel/interface.ts +685 -0
  189. package/src/proofs/parallel/worker-pool.ts +644 -0
  190. package/src/proofs/providers/halo2.ts +560 -0
  191. package/src/proofs/providers/index.ts +34 -0
  192. package/src/proofs/providers/kimchi.ts +641 -0
  193. package/src/proofs/validator.ts +881 -0
  194. package/src/proofs/verifier.ts +867 -0
  195. package/src/quantum/index.ts +112 -0
  196. package/src/quantum/winternitz-vault.ts +639 -0
  197. package/src/quantum/wots.ts +611 -0
  198. package/src/settlement/backends/direct-chain.ts +1 -0
  199. package/src/settlement/index.ts +9 -0
  200. package/src/settlement/router.ts +732 -46
  201. package/src/solana/index.ts +72 -0
  202. package/src/solana/jito-relayer.ts +687 -0
  203. package/src/solana/noir-verifier-types.ts +430 -0
  204. package/src/solana/noir-verifier.ts +816 -0
  205. package/src/stealth/address-derivation.ts +193 -0
  206. package/src/stealth/ed25519.ts +431 -0
  207. package/src/stealth/index.ts +233 -0
  208. package/src/stealth/meta-address.ts +221 -0
  209. package/src/stealth/secp256k1.ts +368 -0
  210. package/src/stealth/utils.ts +194 -0
  211. package/src/stealth.ts +50 -1504
  212. package/src/sync/index.ts +106 -0
  213. package/src/sync/manager.ts +504 -0
  214. package/src/sync/mock-provider.ts +318 -0
  215. package/src/sync/oblivious.ts +625 -0
  216. package/src/tokens/index.ts +15 -0
  217. package/src/tokens/registry.ts +301 -0
  218. package/src/utils/deprecation.ts +94 -0
  219. package/src/utils/index.ts +9 -0
  220. package/src/wallet/ethereum/index.ts +68 -0
  221. package/src/wallet/ethereum/metamask-privacy.ts +420 -0
  222. package/src/wallet/ethereum/multi-wallet.ts +646 -0
  223. package/src/wallet/ethereum/privacy-adapter.ts +700 -0
  224. package/src/wallet/ethereum/types.ts +3 -1
  225. package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
  226. package/src/wallet/hardware/index.ts +10 -0
  227. package/src/wallet/hardware/ledger-privacy.ts +414 -0
  228. package/src/wallet/index.ts +71 -0
  229. package/src/wallet/near/adapter.ts +626 -0
  230. package/src/wallet/near/index.ts +86 -0
  231. package/src/wallet/near/meteor-wallet.ts +1153 -0
  232. package/src/wallet/near/my-near-wallet.ts +790 -0
  233. package/src/wallet/near/wallet-selector.ts +702 -0
  234. package/src/wallet/solana/adapter.ts +6 -4
  235. package/src/wallet/solana/index.ts +13 -0
  236. package/src/wallet/solana/privacy-adapter.ts +567 -0
  237. package/src/wallet/sui/types.ts +6 -4
  238. package/src/zcash/rpc-client.ts +13 -6
  239. package/dist/chunk-2XIVXWHA.mjs +0 -1930
  240. package/dist/chunk-3INS3PR5.mjs +0 -884
  241. package/dist/chunk-3OVABDRH.mjs +0 -17096
  242. package/dist/chunk-7RFRWDCW.mjs +0 -1504
  243. package/dist/chunk-DLDWZFYC.mjs +0 -1495
  244. package/dist/chunk-E6SZWREQ.mjs +0 -57
  245. package/dist/chunk-F6F73W35.mjs +0 -16166
  246. package/dist/chunk-G33LB27A.mjs +0 -16166
  247. package/dist/chunk-HGU6HZRC.mjs +0 -231
  248. package/dist/chunk-L2K34JCU.mjs +0 -1496
  249. package/dist/chunk-OFDBEIEK.mjs +0 -16166
  250. package/dist/chunk-SF7YSLF5.mjs +0 -1515
  251. package/dist/chunk-SN4ZDTVW.mjs +0 -16166
  252. package/dist/chunk-WWUSGOXE.mjs +0 -17129
  253. package/dist/constants-VOI7BSLK.mjs +0 -27
  254. package/dist/index-B71aXVzk.d.ts +0 -13264
  255. package/dist/index-BYZbDjal.d.ts +0 -11390
  256. package/dist/index-CHB3KuOB.d.mts +0 -11859
  257. package/dist/index-CzWPI6Le.d.ts +0 -11859
  258. package/dist/index-pOIIuwfV.d.mts +0 -13264
  259. package/dist/index-xbWjohNq.d.mts +0 -11390
  260. package/dist/solana-4O4K45VU.mjs +0 -46
  261. package/dist/solana-5EMCTPTS.mjs +0 -46
  262. package/dist/solana-NDABAZ6P.mjs +0 -56
  263. package/dist/solana-Q4NAVBTS.mjs +0 -46
  264. package/dist/solana-ZYO63LY5.mjs +0 -46
@@ -43,6 +43,7 @@ import { ed25519PublicKeyToAptosAddress } from '../move/aptos'
43
43
  import { ed25519PublicKeyToSuiAddress } from '../move/sui'
44
44
  import { ValidationError } from '../errors'
45
45
  import { isAddressValidForChain, getChainAddressType } from '../validation'
46
+ import { FeeCalculator, DEFAULT_CHAIN_FEES } from '../fees/calculator'
46
47
 
47
48
  /**
48
49
  * Swap request parameters (simplified interface for adapter)
@@ -82,6 +83,8 @@ export interface PreparedSwap {
82
83
  curve?: StealthCurve
83
84
  /** Native recipient address (converted from stealth public key) */
84
85
  nativeRecipientAddress?: string
86
+ /** Estimated fee disclosure */
87
+ estimatedFees?: SwapFeeDisclosure
85
88
  }
86
89
 
87
90
  /**
@@ -108,6 +111,26 @@ export interface SwapResult {
108
111
  stealthRecipient?: string
109
112
  /** Ephemeral public key (for recipient to derive stealth key) */
110
113
  ephemeralPublicKey?: string
114
+ /** Fee disclosure (if fees enabled) */
115
+ fees?: SwapFeeDisclosure
116
+ }
117
+
118
+ /**
119
+ * Fee disclosure in swap results
120
+ */
121
+ export interface SwapFeeDisclosure {
122
+ /** Protocol fee amount in source token */
123
+ protocolFee: bigint
124
+ /** Protocol fee in USD */
125
+ protocolFeeUsd: number
126
+ /** Fee rate in basis points */
127
+ feeBps: number
128
+ /** Fee tier (if tiered pricing) */
129
+ tierName?: string
130
+ /** Discount applied (if viewing key disclosed) */
131
+ discountBps: number
132
+ /** Treasury account receiving fee */
133
+ treasuryAccount: string
111
134
  }
112
135
 
113
136
  /**
@@ -126,6 +149,17 @@ export interface NEARIntentsAdapterConfig {
126
149
  defaultDeadlineOffset?: number
127
150
  /** Custom asset mappings (merged with defaults) */
128
151
  assetMappings?: Record<string, DefuseAssetId>
152
+ /** Enable fee collection (default: true) */
153
+ enableFees?: boolean
154
+ /** Custom fee configuration */
155
+ feeConfig?: {
156
+ /** Override base fee in basis points */
157
+ baseBps?: number
158
+ /** Disable viewing key discount */
159
+ disableViewingKeyDiscount?: boolean
160
+ /** Custom treasury account */
161
+ treasuryAccount?: string
162
+ }
129
163
  }
130
164
 
131
165
  /**
@@ -210,6 +244,7 @@ const CHAIN_BLOCKCHAIN_MAP: Record<ChainId, string> = {
210
244
  celestia: 'cosmos',
211
245
  sei: 'cosmos',
212
246
  dydx: 'cosmos',
247
+ bsc: 'evm',
213
248
  }
214
249
 
215
250
  /**
@@ -246,6 +281,9 @@ export class NEARIntentsAdapter {
246
281
  private readonly defaultSlippage: number
247
282
  private readonly defaultDeadlineOffset: number
248
283
  private readonly assetMappings: Record<string, DefuseAssetId>
284
+ private readonly feesEnabled: boolean
285
+ private readonly feeCalculator: FeeCalculator
286
+ private readonly treasuryAccount: string
249
287
 
250
288
  constructor(config: NEARIntentsAdapterConfig = {}) {
251
289
  this.client = config.client ?? new OneClickClient({
@@ -258,6 +296,25 @@ export class NEARIntentsAdapter {
258
296
  ...DEFAULT_ASSET_MAPPINGS,
259
297
  ...config.assetMappings,
260
298
  }
299
+
300
+ // Fee configuration
301
+ this.feesEnabled = config.enableFees ?? true
302
+ this.treasuryAccount = config.feeConfig?.treasuryAccount ?? 'treasury.sip-protocol.near'
303
+
304
+ // Initialize fee calculator with custom config if provided
305
+ const chainConfigs = config.feeConfig?.baseBps
306
+ ? {
307
+ near: {
308
+ ...DEFAULT_CHAIN_FEES.near,
309
+ baseBps: config.feeConfig.baseBps,
310
+ viewingKeyDiscountBps: config.feeConfig.disableViewingKeyDiscount
311
+ ? 0
312
+ : DEFAULT_CHAIN_FEES.near.viewingKeyDiscountBps,
313
+ },
314
+ }
315
+ : undefined
316
+
317
+ this.feeCalculator = new FeeCalculator({ chainConfigs })
261
318
  }
262
319
 
263
320
  /**
@@ -503,6 +560,30 @@ export class NEARIntentsAdapter {
503
560
  // Build quote request
504
561
  const quoteRequest = this.buildQuoteRequest(request, recipientAddress, refundAddress)
505
562
 
563
+ // Calculate estimated fees
564
+ let estimatedFees: SwapFeeDisclosure | undefined
565
+ if (this.feesEnabled) {
566
+ // Estimate USD value (simplified - would use price oracle in production)
567
+ const amountUsd = Number(request.inputAmount) / 1e18 * 1 // Assume $1 per token for estimation
568
+ const isPrivate = request.privacyLevel !== PrivacyLevel.TRANSPARENT
569
+ const feeResult = this.feeCalculator.calculate({
570
+ amount: request.inputAmount,
571
+ amountUsd,
572
+ sourceChain: request.inputAsset.chain,
573
+ destinationChain: request.outputAsset.chain,
574
+ viewingKeyDisclosed: isPrivate, // Privacy modes get discount
575
+ })
576
+
577
+ estimatedFees = {
578
+ protocolFee: feeResult.protocolFee,
579
+ protocolFeeUsd: feeResult.protocolFeeUsd,
580
+ feeBps: feeResult.appliedBps,
581
+ tierName: feeResult.tierName,
582
+ discountBps: feeResult.discountBps,
583
+ treasuryAccount: this.treasuryAccount,
584
+ }
585
+ }
586
+
506
587
  return {
507
588
  request,
508
589
  quoteRequest,
@@ -510,6 +591,7 @@ export class NEARIntentsAdapter {
510
591
  sharedSecret,
511
592
  curve,
512
593
  nativeRecipientAddress,
594
+ estimatedFees,
513
595
  }
514
596
  }
515
597
 
@@ -613,9 +695,62 @@ export class NEARIntentsAdapter {
613
695
  status: OneClickSwapStatus.PENDING_DEPOSIT,
614
696
  stealthRecipient: prepared.stealthAddress?.address,
615
697
  ephemeralPublicKey: prepared.stealthAddress?.ephemeralPublicKey,
698
+ fees: prepared.estimatedFees,
616
699
  }
617
700
  }
618
701
 
702
+ // ─── Fee Estimation ──────────────────────────────────────────────────────────
703
+
704
+ /**
705
+ * Estimate fees for a swap (for UI display)
706
+ *
707
+ * @param amountUsd - Swap amount in USD
708
+ * @param sourceChain - Source chain
709
+ * @param isPrivate - Whether privacy mode is enabled
710
+ * @returns Fee estimate
711
+ */
712
+ estimateFees(
713
+ amountUsd: number,
714
+ sourceChain: ChainId = 'near',
715
+ isPrivate = true
716
+ ): SwapFeeDisclosure | null {
717
+ if (!this.feesEnabled) {
718
+ return null
719
+ }
720
+
721
+ const amount = BigInt(Math.floor(amountUsd * 1e18))
722
+ const feeResult = this.feeCalculator.calculate({
723
+ amount,
724
+ amountUsd,
725
+ sourceChain,
726
+ destinationChain: sourceChain,
727
+ viewingKeyDisclosed: isPrivate,
728
+ })
729
+
730
+ return {
731
+ protocolFee: feeResult.protocolFee,
732
+ protocolFeeUsd: feeResult.protocolFeeUsd,
733
+ feeBps: feeResult.appliedBps,
734
+ tierName: feeResult.tierName,
735
+ discountBps: feeResult.discountBps,
736
+ treasuryAccount: this.treasuryAccount,
737
+ }
738
+ }
739
+
740
+ /**
741
+ * Check if fees are enabled
742
+ */
743
+ areFeesEnabled(): boolean {
744
+ return this.feesEnabled
745
+ }
746
+
747
+ /**
748
+ * Get the fee calculator instance
749
+ */
750
+ getFeeCalculator(): FeeCalculator {
751
+ return this.feeCalculator
752
+ }
753
+
619
754
  // ─── Asset Mapping ────────────────────────────────────────────────────────────
620
755
 
621
756
  /**