import type { CanonicalEntry } from '../../../engine/index.js';
import { type MaterializationApplyResult, type MaterializationContext, type MaterializationExtension, type MaterializationOperation, type MaterializationPlan, type MaterializationWriteOperation } from '../../shared/index.js';
import { type CursorModelPinMapping } from './catalog.js';
import { type CursorRoleOwner } from './shared.js';
export type CursorExtensionTarget = 'role';
export interface CursorExtensionOperation extends MaterializationOperation<'cursor', CursorExtensionTarget> {
    roleName?: string;
}
export interface CursorExtensionWriteOperation extends MaterializationWriteOperation<'cursor', CursorExtensionTarget> {
    roleName?: string;
}
export interface CursorExtensionPlanMetadata {
    cleanupOwners: CursorRoleOwner[];
    isPartialSync: boolean;
}
export interface CursorExtensionPlan extends MaterializationPlan<'cursor', CursorExtensionTarget, CursorExtensionPlanMetadata> {
    operations: CursorExtensionWriteOperation[];
}
export type CursorExtensionApplyResult = MaterializationApplyResult;
export interface CursorMaterializationTargetOptions {
    userConfigDir?: string;
    projectPath?: string | null;
    env?: NodeJS.ProcessEnv;
    enabled?: boolean;
    modelMappings?: readonly CursorModelPinMapping[];
    supportedTargets?: readonly CursorModelPinMapping[];
}
export declare function computeCursorProjectExtensionPlan(scopeRoot: string, canonicalEntries: CanonicalEntry[], allowedCanonicalPaths?: string[], options?: CursorMaterializationTargetOptions): Promise<CursorExtensionPlan>;
export declare function applyCursorProjectExtensionPlan(scopeRoot: string, plan: CursorExtensionPlan): Promise<CursorExtensionApplyResult>;
export declare function hasCursorExtensionChanges(plan: CursorExtensionPlan): boolean;
export declare function summarizeCursorExtension(plan: CursorExtensionPlan): {
    plannedOperations: number;
    skipped: number;
};
export declare function toCursorExtensionOperations(plan: CursorExtensionPlan): CursorExtensionOperation[];
export declare const cursorMaterializationExtension: MaterializationExtension<CursorExtensionPlan, MaterializationContext<CursorMaterializationTargetOptions>>;
//# sourceMappingURL=sync-extension.d.ts.map