import { AuctionDisplayState } from '@fanfare-io/fanfare-sdk-core/internals'; /** The live price model, reached through the display state rather than a separate core export. */ export type AuctionPricing = NonNullable; export type EnglishPricing = Extract; export type DutchPricing = Extract; /** True when a string is a money value the panel may compute with. */ export declare function isWireMoney(value: string | undefined): value is string; /** * Reads a typed amount as a wire money string, or `null` when it is not one. * * A consumer types the separators their keyboard and locale give them — `245,00` across most of * Europe, `1,234.50` or `1 234,50` with grouping — and a bid that is refused as below the minimum * because of a comma is a bid the auction lost for no reason. Grouping is dropped and the decimal * separator is read from position. Exponent notation is refused rather than expanded: `1e5` is not * an amount anyone means to bid. * * `digits` is the currency's fraction digits, which decide what a lone comma before exactly three * digits means: grouping in a two-digit currency, the decimal in a three-digit one, where reading * it as grouping would multiply the bid a thousandfold. */ export declare function normalizeAmountInput(raw: string, digits?: number): string | null; /** Orders two wire money strings exactly at the eight-digit wire scale. */ export declare function compareMoney(left: string, right: string, _digits: number): number; /** * Moves `base` by `steps` whole increments, never below `floor`. * * The stepper and the quick-pick chips are the same operation at different step counts, so they * cannot disagree about what one increment is worth. */ export declare function stepAmount(base: string, increment: string, steps: number, digits: number, floor?: string): string; /** * True when `amount` is more than ten increments above the minimum next bid. The comparison stays * in minor units so a threshold past the wire money width cannot fail validation. */ export declare function exceedsObligationThreshold(amount: string, minNextBid: string, increment: string): boolean; /** One rung of the Dutch descent, in the order it is rendered. */ export interface DutchLadder { /** The price the ladder started from, when it is not also the live price. */ start?: string; /** Prices the ladder has already passed, newest last. */ passed: string[]; /** The price a clinch would pay right now. */ current: string; /** The price the next drop lands on, when another drop is still coming. */ next?: string; /** The price the ladder never falls below, when one is configured. */ floor?: string; } /** * Derives the descent from the ladder configuration and the live price. * * No drop history crosses the wire, so the passed rungs are recomputed as `startPrice − k × drop` * down to the live price. Returns `null` when the configuration needed to draw the ladder is * absent: the rows that survive are the ones the server actually stated. */ export declare function buildDutchLadder(pricing: DutchPricing, digits: number): DutchLadder | null; /** * Whether a Dutch clinch may be offered at all. * * Three independent gates, each of which alone makes the buy button a lie: Dutch never enters * `participating` or `settling`, so the phase must still be `enterable`; a sold-out auction has no * unit to sell; and `ended` closes the mechanism whatever the price says. */ export declare function canClinch(pricing: DutchPricing, sequencePhase: string): boolean;