import type { Workspace } from '../core/workspace.js';
import type { RepoConfig, WorkspaceConfig } from '../core/types.js';
/**
 * The reserved, workspace-wide, undeletable "Assets" system folder.
 *
 * This is the default home for assets that aren't scoped to a specific
 * folder (global asset manager uploads, prompt-box "save to library"). It is:
 *   - `workspace_wide: true` — readable + uploadable by every member (no
 *     per-user folder_access grant), honored in services/access-control.ts.
 *   - `system: true` — excluded from the sidebar + knowledge surfaces (see
 *     WorkspaceManager.getContentRepoConfigs) and **undeletable / unrenamable**
 *     (guarded in the folder DELETE/PATCH routes).
 *
 * Provisioning is **lazy + one-time**, never a per-boot sweep: call it at
 * workspace setup (new workspaces) and on first write to the asset store
 * (existing workspaces backfill themselves on first use). Because the folder
 * is undeletable, once created it always exists — so the idempotent
 * "create if missing" check never fights a user's deletion the way the
 * removed personal-folder sweep did. See
 * ~/.claude/plans/workspace-asset-rearchitecture.md.
 */
export declare const WORKSPACE_ASSETS_REPO = "workspace-assets";
export declare const WORKSPACE_ASSETS_DISPLAY = "Assets";
/** The reserved system asset folder's repo name, or undefined if not yet
 *  provisioned. Identified by the `system` + `workspace_wide` pair, not the
 *  literal name, so a name-collision suffix (workspace-assets-2) still
 *  resolves. */
export declare function findWorkspaceAssetsRepo(config: WorkspaceConfig): RepoConfig | undefined;
/**
 * Ensure the reserved Workspace Assets system folder exists. Idempotent:
 * returns the existing folder's name when already provisioned (no I/O beyond
 * a config read). Handles name collision: if a non-system folder already owns
 * `workspace-assets`, the system folder claims `workspace-assets-2` (etc.).
 * Returns the resolved repo name.
 */
export declare function ensureWorkspaceAssetsFolder(workspace: Workspace): Promise<string>;
/**
 * Lazy accessor for upload consumers (global asset manager, prompt-box "save
 * to library"): ensure the store exists and return its repo name, refreshing
 * the in-memory WorkspaceManager config so a freshly-created folder is
 * immediately mountable. This is how EXISTING workspaces backfill the store —
 * on first write, not via a boot sweep. Idempotent.
 */
export declare function resolveWorkspaceAssetsRepo(workspace: Workspace, workspaceManager?: {
    reloadConfig: () => void;
}): Promise<string>;
