refactor confirmation tiers to shared crypto-agnostic types and validation

This commit is contained in:
2026-09-03 00:28:17 +02:00
parent 5db64ea905
commit a7282a1888
11 changed files with 27 additions and 31 deletions
@@ -1,21 +0,0 @@
import { resolveMinConfirmations } from './resolveMinConfirmations';
const tiers = [
{ upToTotalFiat: '25', minConfirmations: 0 },
{ upToTotalFiat: '250', minConfirmations: 5 },
{ minConfirmations: 10 }
] as const;
describe('resolveMinConfirmations', () => {
it('returns 0 for small orders (tx-detected tier)', () => {
expect(resolveMinConfirmations(10, [...tiers])).toBe(0);
});
it('returns the middle tier for medium orders', () => {
expect(resolveMinConfirmations(100, [...tiers])).toBe(5);
});
it('returns the catch-all tier for large orders', () => {
expect(resolveMinConfirmations(500, [...tiers])).toBe(10);
});
});
@@ -1,16 +0,0 @@
import Decimal from 'decimal.js';
import type { MoneroConfirmationTier } from '../../types/MoneroConfirmationTier';
export const resolveMinConfirmations = (totalFiat: number, tiers: MoneroConfirmationTier[]): number => {
for (const tier of tiers) {
if (tier.upToTotalFiat === undefined) {
return tier.minConfirmations;
}
if (new Decimal(totalFiat).lte(tier.upToTotalFiat)) {
return tier.minConfirmations;
}
}
return tiers[tiers.length - 1].minConfirmations;
};