export type StyleName =
	'round' |
	'round-minute' |
	'mini' |
	'mini-now' |
	'mini-minute' |
	'mini-minute-now' |
	'twitter' |
	'twitter-now' |
	'twitter-minute' |
	'twitter-minute-now' |
	'twitter-first-minute'

export interface Step {
	formatAs?: string,
	minTime?: number,
	format?(date: typeof Date | number, locale: string, {
		formatAs(unit: string, value: number): string,
		now: number,
		future: boolean
	}): string?,
	getTimeToNextUpdate?(date: typeof Date | number, {
		getTimeToNextUpdateForUnit(unit: string): number,
		now: number,
		future: boolean
	}): number
}

export interface Style {
	steps: Step[],
	labels: string | string[]
}

export type Rounding = 'round' | 'floor'

interface FormatOptions {
	now?: number,
	future?: boolean,
	getTimeToNextUpdate?: boolean,
	round?: Rounding
}

export default class TimeAgo {
  constructor(locale: string | string[]);
  format(date: typeof Date | number, style?: StyleName | Style, options?: FormatOptions): string | [string, number?];
  format(date: typeof Date | number, options: FormatOptions): string | [string, number?];
}