///
import type { Writable } from 'svelte/store';
import type { CalendarDate, ZonedDateTime, CalendarDateTime, DateDuration, DateFields, DateTimeDuration, DateValue, Disambiguation, TimeFields } from '@internationalized/date';
type AnyDateTime = ZonedDateTime | CalendarDateTime;
type DerivedDuration = T extends AnyDateTime ? DateTimeDuration : T extends CalendarDate ? DateDuration : never;
type DerivedFields = T extends AnyDateTime ? DateFields & TimeFields : T extends CalendarDate ? DateFields : never;
/**
* A higher order store that encapsulates a writable store holding a `DateValue` from the
* '@internationalized/date' library. It provides some convenience methods for common
* date manipulations.
*
* @see [@internationalized/date](https://react-spectrum.adobe.com/internationalized/date/index.html)
*/
export declare function dateStore(store: Writable, defaultValue: T): {
get: () => T;
set: (this: void, value: T) => void;
update: (this: void, updater: import("svelte/store").Updater) => void;
subscribe: (this: void, run: import("svelte/store").Subscriber, invalidate?: import("svelte/store").Invalidator | undefined) => import("svelte/store").Unsubscriber;
add: (duration: DerivedDuration) => void;
subtract: (duration: DerivedDuration) => void;
setDate: (fields: DerivedFields, disambiguation?: T extends ZonedDateTime ? Disambiguation : never) => void;
reset: () => void;
toWritable: () => {
set: (this: void, value: T) => void;
subscribe: (this: void, run: import("svelte/store").Subscriber, invalidate?: import("svelte/store").Invalidator | undefined) => import("svelte/store").Unsubscriber;
update: (this: void, updater: import("svelte/store").Updater) => void;
get: () => T;
};
nextPage: (amount: number) => void;
prevPage: (amount: number) => void;
};
export type DateStore = Writable & {
add: (duration: DerivedDuration) => void;
subtract: (duration: DerivedDuration) => void;
setDate: (fields: DerivedFields, disambiguation?: T extends ZonedDateTime ? Disambiguation : never) => void;
reset: () => void;
nextPage: (amount: number) => void;
prevPage: (amount: number) => void;
};
export {};