import { type Registry } from '@effect-atom/atom-react';
import type * as Layer from 'effect/Layer';
import type * as Schema from 'effect/Schema';
import { type FC, type PropsWithChildren } from 'react';
import { type AiService } from '@dxos/ai';
import type * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
import { type BuilderExtensions, type GraphBuilder } from '@dxos/app-graph';
import { type GenericToolkit } from '@dxos/assistant';
import { type Blueprint } from '@dxos/blueprints';
import { type Space } from '@dxos/client-protocol';
import { type FunctionDefinition } from '@dxos/functions';
import { type RootSettingsStore } from '@dxos/local-storage';
import { type AnchoredTo } from '@dxos/types';
import { type PluginManager } from '../core';
import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
import { type FileInfo } from './file';
import { type NodeSerializer } from './graph';
import { type SurfaceDefinition } from './surface';
export declare namespace Capabilities {
    /**
     * @category Capability
     */
    const Null: import("..").InterfaceDef<null>;
    /**
     * @category Capability
     */
    const PluginManager: import("..").InterfaceDef<PluginManager>;
    /**
     * @category Capability
     */
    const AtomRegistry: import("..").InterfaceDef<Registry.Registry>;
    type ReactContext = Readonly<{
        id: string;
        dependsOn?: string[];
        context: FC<PropsWithChildren>;
    }>;
    /**
     * @category Capability
     */
    const ReactContext: import("..").InterfaceDef<Readonly<{
        id: string;
        dependsOn?: string[];
        context: FC<PropsWithChildren>;
    }>>;
    type ReactRoot = Readonly<{
        id: string;
        root: FC<PropsWithChildren>;
    }>;
    /**
     * @category Capability
     */
    const ReactRoot: import("..").InterfaceDef<Readonly<{
        id: string;
        root: FC<PropsWithChildren>;
    }>>;
    type ReactSurface = SurfaceDefinition | readonly SurfaceDefinition[];
    /**
     * @category Capability
     */
    const ReactSurface: import("..").InterfaceDef<ReactSurface>;
    type IntentResolver = AnyIntentResolver | readonly AnyIntentResolver[];
    /**
     * @category Capability
     */
    const IntentResolver: import("..").InterfaceDef<IntentResolver>;
    /**
     * @category Capability
     */
    const IntentDispatcher: import("..").InterfaceDef<IntentContext>;
    type Layout = Readonly<{
        mode: string;
        dialogOpen: boolean;
        sidebarOpen: boolean;
        complementarySidebarOpen: boolean;
        /**
         * The id of the active workspace, where a workspace is a set of active items.
         */
        workspace: string;
        /**
         * Identifiers of items which are currently active in the application.
         */
        active: string[];
        /**
         * Identifiers of items which were previously active in the application.
         */
        inactive: string[];
        /**
         * Identifier of the item which should be scrolled into view.
         */
        scrollIntoView: string | undefined;
    }>;
    /**
     * @category Capability
     */
    const Layout: import("..").InterfaceDef<Readonly<{
        mode: string;
        dialogOpen: boolean;
        sidebarOpen: boolean;
        complementarySidebarOpen: boolean;
        /**
         * The id of the active workspace, where a workspace is a set of active items.
         */
        workspace: string;
        /**
         * Identifiers of items which are currently active in the application.
         */
        active: string[];
        /**
         * Identifiers of items which were previously active in the application.
         */
        inactive: string[];
        /**
         * Identifier of the item which should be scrolled into view.
         */
        scrollIntoView: string | undefined;
    }>>;
    /**
     * @category Capability
     */
    const Translations: import("..").InterfaceDef<readonly {
        readonly [x: string]: {
            readonly [x: string]: string | {
                readonly [x: string]: any;
            };
        };
    }[]>;
    /**
     * @category Capability
     */
    const AppGraph: import("..").InterfaceDef<Readonly<Pick<GraphBuilder, "graph" | "explore">>>;
    /**
     * @category Capability
     */
    const AppGraphBuilder: import("..").InterfaceDef<BuilderExtensions>;
    /**
     * @category Capability
     */
    const AppGraphSerializer: import("..").InterfaceDef<NodeSerializer[]>;
    /**
     * @category Capability
     */
    const SettingsStore: import("..").InterfaceDef<RootSettingsStore>;
    type Settings = {
        prefix: string;
        schema: Schema.Schema.All;
        value?: Record<string, any>;
    };
    /**
     * @category Capability
     */
    const Settings: import("..").InterfaceDef<Settings>;
    type Metadata = Readonly<{
        id: string;
        metadata: Record<string, any>;
    }>;
    /**
     * @category Capability
     */
    const Metadata: import("..").InterfaceDef<Readonly<{
        id: string;
        metadata: Record<string, any>;
    }>>;
    /**
     * @category Capability
     */
    const Toolkit: import("..").InterfaceDef<GenericToolkit.GenericToolkit<never, never, never>>;
    /**
     * @category Capability
     */
    const BlueprintDefinition: import("..").InterfaceDef<Blueprint.Blueprint>;
    type AiServiceLayer = Layer.Layer<AiService.AiService>;
    const AiServiceLayer: import("..").InterfaceDef<AiServiceLayer>;
    /**
     * Plugins can contribute them to provide model resolvers.
     */
    const AiModelResolver: import("..").InterfaceDef<Layer.Layer<AiServiceRouter.AiModelResolver, never, never>>;
    /**
     * @category Capability
     */
    const Functions: import("..").InterfaceDef<FunctionDefinition.Any[]>;
    type FileUploader = (space: Space, file: File) => Promise<FileInfo | undefined>;
    /**
     * @category Capability
     */
    const FileUploader: import("..").InterfaceDef<FileUploader>;
    type AnchorSort = {
        key: string;
        sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => number;
    };
    /**
     * @category Capability
     */
    const AnchorSort: import("..").InterfaceDef<AnchorSort>;
}
//# sourceMappingURL=capabilities.d.ts.map