/**
 * Sharing module for multi-contributor .cleo/ state management.
 *
 * Controls which .cleo/ files are committed to the project git repo
 * via a config-driven allowlist. Provides status reporting and
 * .gitignore auto-management.
 *
 * @task T4883
 */
/**
 * Result of a sharing status check.
 *
 * @remarks
 * Provides a complete view of which `.cleo/` files are tracked vs ignored under
 * the current sharing config, plus git sync state for Nexus multi-project visibility.
 * The `hasGit`, `remotes`, `pendingChanges`, and `lastSync` fields are populated
 * only when a `.cleo/.git` repo exists; otherwise they carry safe defaults.
 *
 * @example
 * ```typescript
 * const status = await getSharingStatus();
 * if (status.hasGit && status.pendingChanges) {
 *   console.log('Uncommitted changes in .cleo/ — run: cleo checkpoint');
 * }
 * ```
 */
export interface SharingStatus {
    mode: string;
    allowlist: string[];
    denylist: string[];
    tracked: string[];
    ignored: string[];
    /** Whether the `.cleo/.git` isolated repo exists and is initialized. */
    hasGit: boolean;
    /** Git remote names configured in `.cleo/.git` (e.g. `['origin']`). */
    remotes: string[];
    /** Whether the `.cleo/.git` working tree has uncommitted changes. */
    pendingChanges: boolean;
    /**
     * ISO 8601 timestamp of the last push or pull to/from a remote, or `null`
     * if no remote sync has ever occurred.
     */
    lastSync: string | null;
}
/**
 * Match a file path against a glob-like pattern.
 * Supports: '*' (single segment wildcard), '**' (recursive wildcard),
 * and trailing '/' for directory matching.
 * @task T4883
 */
export declare function matchesPattern(filePath: string, pattern: string): boolean;
/**
 * Get the sharing status: which .cleo/ files are tracked vs ignored,
 * plus git sync state for Nexus multi-project visibility.
 *
 * @remarks
 * Populates `hasGit`, `remotes`, `pendingChanges`, and `lastSync` by inspecting
 * the `.cleo/.git` isolated repo when it exists. All git operations are
 * non-fatal — if the repo is absent or a command fails, the fields carry safe
 * defaults (`false`, `[]`, `null`).
 *
 * @example
 * ```typescript
 * const status = await getSharingStatus('/path/to/project');
 * console.log(status.mode);           // 'project'
 * console.log(status.hasGit);         // true
 * console.log(status.remotes);        // ['origin']
 * console.log(status.pendingChanges); // false
 * console.log(status.lastSync);       // '2026-03-21T18:00:00.000Z'
 * ```
 *
 * @task T4883
 * @task T110
 */
export declare function getSharingStatus(cwd?: string): Promise<SharingStatus>;
/**
 * Sync the project .gitignore to match the sharing config.
 * Adds/updates a managed section between CLEO markers.
 * @task T4883
 */
export declare function syncGitignore(cwd?: string): Promise<{
    updated: boolean;
    entriesCount: number;
}>;
//# sourceMappingURL=index.d.ts.map