import { NyaxContext } from "./context"; import { ModelClass, NamespacedModelClass } from "./model"; export declare type ContainerPropertyKey = "state" | "getters" | "actions"; export declare type ExtractContainerProperty = InstanceType[TPropertyKey]; export interface ContainerLite { state: ExtractContainerProperty; getters: ExtractContainerProperty; actions: ExtractContainerProperty; } export interface Container extends ContainerLite { modelClass: TModelClass; namespace: string; key: string | undefined; isRegistered: boolean; register(): void; unregister(): void; } export declare class ContainerImpl implements Container { private readonly _nyaxContext; readonly modelClass: TModelClass; readonly key: string | undefined; readonly namespace: string; private get _model(); constructor(_nyaxContext: NyaxContext, modelClass: TModelClass, key: string | undefined); get isRegistered(): boolean; get state(): ExtractContainerProperty; get getters(): ExtractContainerProperty; get actions(): ExtractContainerProperty; register(): void; unregister(): void; } export interface GetContainer { (modelClassOrNamespace: TModelClass | string): TModelClass extends NamespacedModelClass ? never : Container; (modelClassOrNamespace: TModelClass | string, key: string): TModelClass extends NamespacedModelClass ? never : Container; } export declare function createGetContainer(nyaxContext: NyaxContext): GetContainer; export interface SubContainer { state: TState; getters: TGetters; actions: TActionHelpers; } export declare function createSubContainer, TSubKey extends string>(container: TContainer, subKey: TSubKey): SubContainer; export declare type GetContainers = (namespace?: string) => Container[]; export declare function createGetContainers(nyaxContext: NyaxContext): GetContainers;