import { Accessor } from 'solid-js'; import { Pausable, MaybeAccessor } from '@solidjs-use/shared'; type UseTimeAgoFormatter = (value: T, isPast: boolean) => string; type UseTimeAgoUnitNamesDefault = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year'; interface UseTimeAgoMessagesBuiltIn { justNow: string; past: string | UseTimeAgoFormatter; future: string | UseTimeAgoFormatter; invalid: string; } type UseTimeAgoMessages = UseTimeAgoMessagesBuiltIn & Record; interface FormatTimeAgoOptions { /** * Maximum unit (of diff in milliseconds) to display the full date instead of relative * * @default undefined */ max?: UnitNames | number; /** * Formatter for full date */ fullDateFormatter?: (date: Date) => string; /** * Messages for formatting the string */ messages?: UseTimeAgoMessages; /** * Minimum display time unit (default is minute) * * @default false */ showSecond?: boolean; /** * Rounding method to apply. * * @default 'round' */ rounding?: 'round' | 'ceil' | 'floor' | number; /** * Custom units */ units?: UseTimeAgoUnit[]; } interface UseTimeAgoOptions extends FormatTimeAgoOptions { /** * Expose more controls * * @default false */ controls?: Controls; /** * Intervals to update, set 0 to disable auto update * * @default 30_000 */ updateInterval?: number; } interface UseTimeAgoUnit { max: number; value: number; name: Unit; } type UseTimeAgoReturn = Controls extends true ? { timeAgo: Accessor; } & Pausable : Accessor; /** * Reactive time ago formatter. * * @see https://solidjs-use.github.io/solidjs-use/core/useTimeAgo */ declare function useTimeAgo(time: MaybeAccessor, options?: UseTimeAgoOptions): UseTimeAgoReturn; declare function useTimeAgo(time: MaybeAccessor, options: UseTimeAgoOptions): UseTimeAgoReturn; declare function formatTimeAgo(from: Date, options?: FormatTimeAgoOptions, now?: Date | number): string; export { FormatTimeAgoOptions, UseTimeAgoFormatter, UseTimeAgoMessages, UseTimeAgoMessagesBuiltIn, UseTimeAgoOptions, UseTimeAgoReturn, UseTimeAgoUnit, UseTimeAgoUnitNamesDefault, formatTimeAgo, useTimeAgo };