import { Account, DateRange, Recurrence, RecurringCopy, RepeatingTransaction, Transaction, Frequency } from '../types'; export type GroupedRecurrence = { recurrences: Recurrence[]; id: string; date: Date; }; export declare const buildInstitutionName: (account?: Account) => string; export declare const buildAllRecurrences: (repeatingTransactions: RepeatingTransaction[], dateRange: DateRange) => Recurrence[]; export declare const augmentRepeatingTransactions: (accounts: Account[], repeatingTransactions: RepeatingTransaction[], transactions: Transaction[]) => RepeatingTransaction[]; export declare const groupRecurrencesByDate: (recurrences: Recurrence[]) => GroupedRecurrence[]; export declare const getFrequencyLabel: (copy: RecurringCopy, repeatingTransaction: RepeatingTransaction, showOrdinal: boolean) => string; export declare const getNextPaymentDate: (frequency: Frequency, date: Date, recurrenceDay?: number, secondRecurrenceDay?: number) => Date; export declare const getNextUpcomingDate: (recurringTransaction: RepeatingTransaction, recurrences: Recurrence[]) => Date; /** * Mirrors Sherlock's recurrence eligibility (`RepeatingTransaction#has_detectable_recurrences` + * `Sherlock::Recurrence`): a supported account type, plus either a merchant or a description with * an allowlisted leaf bill category or income main class. Only the leaf category counts, so * `top_level_category_guid` is deliberately ignored. * * Description is `payee || description || feed_description` — the value the create flows send and * Sherlock validates — so checking the bare `description` would wrongly hide eligible transactions. * * `account` is required (may be undefined) so a caller can't forget it and silently fail everything; * an unresolved account returns false, as Sherlock would never see such a transaction. */ export declare const isEligibleRepeatingTransaction: (transaction: Transaction, account: Account | undefined) => boolean;