import type { Description, Layout, PropertyValidationError, Property, LayoutName, TableLayout } from '@aeriajs/types'; import { type ComputedRef } from 'vue'; import { type UnwrapGetters, type StoreContext, type GlobalStateManager } from '@aeria-ui/state-management'; import { useStoreActions } from './actions.js'; import { type NormalizedActions } from './helpers.js'; export type CollectionStoreItem = Record & { _id: any; }; export type CollectionStoreState = InitialState & UnwrapGetters>; export type CollectionStore = CollectionStoreState & { $id: string; $functions: Record unknown>(...args: Parameters) => ReturnType>; $actions: ReturnType; }; export type InitialState = { rawDescription: Description; item: TItem; referenceItem: TItem; freshItem: TItem; diffedItem: Partial; items: TItem[]; filters: Record; freshFilters: Record; activeFilters: Record; filtersPreset: Record; preferredTableProperties: string[]; selected: TItem[] | string[]; currentLayout?: LayoutName; validationErrors: Record; loading: Record; textQuery: string; pagination: { offset: number; limit: number; recordsCount: number; recordsTotal: number; }; transformers: Record unknown>; }; export type CollectionGetters = { $currentLayout: LayoutName; $filters: Record; $freshItem: TItem; actions: NormalizedActions; condensedItem: unknown; description: Description; diffedItem: Partial; filtersCount: number; hasActiveFilters: boolean; hasSelectionActions: boolean; individualActions: NormalizedActions; isInsertReady: boolean; itemsCount: number; layout: Layout; properties: Description['properties']; references: [string, Property][]; tableLayout: TableLayout; tableProperties: Record; } extends infer InferredGetters ? { [P in keyof InferredGetters]: ComputedRef; } : never; export declare const createCollectionStore: unknown) | ComputedRef> | {}, TStoreActions extends Record unknown> | {}>(newer: { $id: TStoreId; state?: TStoreState; getters?: (state: CollectionStoreState & TStoreState, actions: ReturnType & TStoreActions) => TStoreGetters; actions?: (state: CollectionStoreState & TStoreState, actions: ReturnType) => TStoreActions; }, context: StoreContext) => { $id: TStoreId; state: InitialState & (keyof TStoreState extends never ? {} : TStoreState); getters: keyof TStoreGetters extends never ? undefined : TStoreGetters & ReturnType<(state: InitialState>, storeActions: Record unknown>) => { $currentLayout: ComputedRef<"tabular" | "grid" | "list">; $filters: ComputedRef>; $freshItem: ComputedRef>; actions: ComputedRef; condensedItem: ComputedRef; description: ComputedRef; diffedItem: ComputedRef>>; filtersCount: ComputedRef; hasActiveFilters: ComputedRef; hasSelectionActions: ComputedRef; individualActions: ComputedRef; isInsertReady: ComputedRef; itemsCount: ComputedRef; layout: ComputedRef; properties: ComputedRef>; references: ComputedRef<[string, Property][]>; tableLayout: ComputedRef>; tableProperties: ComputedRef>; }>; actions: keyof TStoreActions extends never ? { setItem(item: CollectionStoreItem): CollectionStoreItem; setItems(items: CollectionStoreItem[]): CollectionStoreItem[]; insertItem(_item: CollectionStoreItem, options?: { merge: boolean; }): Partial & Record & { _id: any; }; removeItem({ error, result: subject }: import("@aeriajs/types").Result.Either): { readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: CollectionStoreItem; }; clearItem(): CollectionStoreItem; clearItems(): CollectionStoreItem[]; custom(verb: string | null, payload?: unknown, options?: import("./actions.js").CustomOptions): Promise; count(payload: import("@aeriajs/types").CountPayload): Promise; get(payload: import("@aeriajs/types").GetPayload, options?: import("./actions.js").CustomOptions): Promise>; retrieveItems(payload?: import("@aeriajs/types").GetAllPayload): Promise>; getAll(_payload?: import("@aeriajs/types").GetAllPayload): Promise>; insert(payload?: import("@aeriajs/types").InsertPayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: Partial & Record & { _id: any; }; }>; deepInsert(payload?: import("@aeriajs/types").InsertPayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: Partial & Record & { _id: any; }; }>; remove(payload: import("@aeriajs/types").RemovePayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: CollectionStoreItem; }>; removeAll(payload: import("@aeriajs/types").RemoveAllPayload, options?: import("./actions.js").CustomOptions): Promise>; filter(props?: import("@aeriajs/types").GetAllPayload): Promise>; updateItems(): Promise>; clearFilters(): Record; useProperties(properties: (string)[]): {}; usePropertiesExcept(properties: (string)[]): { [k: string]: Property; }; formatValue(args: { value: unknown; key: string; form?: boolean; property: Property; index?: string; }): unknown; select(properties: (string)[], item?: CollectionStoreItem): {}; selectManyItems(items: CollectionStoreItem[], value?: boolean): CollectionStoreItem[]; selectAllItems(state?: boolean): CollectionStoreItem[]; } : { setItem(item: CollectionStoreItem): CollectionStoreItem; setItems(items: CollectionStoreItem[]): CollectionStoreItem[]; insertItem(_item: CollectionStoreItem, options?: { merge: boolean; }): Partial & Record & { _id: any; }; removeItem({ error, result: subject }: import("@aeriajs/types").Result.Either): { readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: CollectionStoreItem; }; clearItem(): CollectionStoreItem; clearItems(): CollectionStoreItem[]; custom(verb: string | null, payload?: unknown, options?: import("./actions.js").CustomOptions): Promise; count(payload: import("@aeriajs/types").CountPayload): Promise; get(payload: import("@aeriajs/types").GetPayload, options?: import("./actions.js").CustomOptions): Promise>; retrieveItems(payload?: import("@aeriajs/types").GetAllPayload): Promise>; getAll(_payload?: import("@aeriajs/types").GetAllPayload): Promise>; insert(payload?: import("@aeriajs/types").InsertPayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: Partial & Record & { _id: any; }; }>; deepInsert(payload?: import("@aeriajs/types").InsertPayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: Partial & Record & { _id: any; }; }>; remove(payload: import("@aeriajs/types").RemovePayload, options?: import("./actions.js").CustomOptions): Promise<{ readonly _tag: "Error"; readonly error: import("@aeriajs/types").EndpointError; readonly result: undefined; } | { readonly _tag: "Result"; readonly error: undefined; readonly result: CollectionStoreItem; }>; removeAll(payload: import("@aeriajs/types").RemoveAllPayload, options?: import("./actions.js").CustomOptions): Promise>; filter(props?: import("@aeriajs/types").GetAllPayload): Promise>; updateItems(): Promise>; clearFilters(): Record; useProperties(properties: (string)[]): {}; usePropertiesExcept(properties: (string)[]): { [k: string]: Property; }; formatValue(args: { value: unknown; key: string; form?: boolean; property: Property; index?: string; }): unknown; select(properties: (string)[], item?: CollectionStoreItem): {}; selectManyItems(items: CollectionStoreItem[], value?: boolean): CollectionStoreItem[]; selectAllItems(state?: boolean): CollectionStoreItem[]; } & TStoreActions; }; export declare const useCollectionStore: (storeId: string, manager?: GlobalStateManager) => CollectionStore; export declare const useParentCollectionStore: (storeId?: string, manager?: GlobalStateManager) => CollectionStore;