import type { Readable } from 'svelte/store'; export type AsyncValue = Promise; export type Updater = (value: T) => AsyncValue | T; export type Stores = Readable | [Readable, ...Array>]; export type StoresValues = T extends Readable ? U : never; export interface Asyncable extends Readable> { get: () => AsyncValue; set: (value: T) => void; update: (updater: Updater) => void; } export declare function asyncable( getter: () => AsyncValue | T, setter?: ((newValue: T, oldValue: T) => AsyncValue | T) | unknown ): Asyncable; export declare function asyncable( getter: (...values: StoresValues[]) => AsyncValue | T, setter: ((newValue: T, oldValue: T) => AsyncValue | T) | unknown, stores: S ): Asyncable; export declare function syncable( stores: Stores, initialValue?: T ): Readable;