import { Writable, Readable, Updater } from 'svelte/store'; /** The minimal requirements of the * [writable store contract](https://svelte.dev/docs#component-format-script-4-prefix-stores-with-$-to-access-their-values-store-contract). */ import type { MinimalWritable } from '@typhonjs-fvtt/runtime/svelte/store/util'; /** Stores that may be used as origins. */ export type Stores = MinimalWritable | [Readable, ...Array>] | Array>; /** Values retrieved from origin stores. */ export type StoresValues = T extends Readable ? U : { [K in keyof T]: T[K] extends Readable ? U : never }; /** Values sent to origin stores. */ export type SetValues = T extends MinimalWritable ? U : { [K in keyof T]?: T[K] extends MinimalWritable ? U : never }; /** * Create a store similar to [Svelte's `derived`](https://svelte.dev/docs#run-time-svelte-store-writable), but which * has its own `set` and `update` methods and can send values back to the origin stores. * [Read more...](https://github.com/PixievoltNo1/svelte-writable-derived#default-export-writablederived) * * @param origins One or more stores to derive from. Same as * [`derived`](https://svelte.dev/docs#run-time-svelte-store-writable)'s 1st parameter. * @param derive The callback to determine the derived value. Same as * [`derived`](https://svelte.dev/docs#run-time-svelte-store-writable)'s 2nd parameter. * @param reflect Called when the * derived store gets a new value via its `set` or `update` methods, and determines new values for * the origin stores. [Read more...](https://github.com/PixievoltNo1/svelte-writable-derived#new-parameter-reflect) * @param [initial] The new store's initial value. Same as * [`derived`](https://svelte.dev/docs#run-time-svelte-store-writable)'s 3rd parameter. * * @returns A writable store. */ declare function writableDerived( origins: S, derive: (values: StoresValues) => T, reflect: (reflecting: T, old: StoresValues) => SetValues, initial?: T, ): Writable; declare function writableDerived( origins: S, derive: (values: StoresValues, set: (value: T) => void, update: (fn: Updater) => void) => void, reflect: (reflecting: T, old: StoresValues) => SetValues, initial?: T, ): Writable; /** * Create a store for a property value in an object contained in another store. * [Read more...](https://github.com/PixievoltNo1/svelte-writable-derived#named-export-propertystore) * * @param origin The store containing the object to get/set from. * @param propName The property to get/set, or a path of * properties in nested objects. * * @returns A writable store. */ declare function propertyStore( origin: MinimalWritable, propName: K | [K], ): Writable; declare function propertyStore( origin: MinimalWritable, propName: [K1, K2], ): Writable; declare function propertyStore< O extends object, K1 extends keyof O, K2 extends keyof O[K1], K3 extends keyof O[K1][K2], >(origin: MinimalWritable, propName: [K1, K2, K3]): Writable; declare function propertyStore< O extends object, K1 extends keyof O, K2 extends keyof O[K1], K3 extends keyof O[K1][K2], K4 extends keyof O[K1][K2][K3], >(origin: MinimalWritable, propName: [K1, K2, K3, K4]): Writable; declare function propertyStore( origin: MinimalWritable, propName: string | number | symbol | Array, ): Writable; export { propertyStore, writableDerived };