/**
 * ADO Permission Gate
 *
 * Validates that sync permissions are enabled before allowing ADO write operations.
 * This ensures manual ADO commands respect the same permission settings as the
 * sync-coordinator.
 *
 * Usage:
 * ```typescript
 * const gate = await createAdoPermissionGate();
 * const result = gate.checkWritePermission();
 * if (!result.allowed) {
 *   console.log(result.reason);
 *   return;
 * }
 * ```
 *
 * @module ado-permission-gate
 */
/**
 * Permission check result
 */
export interface PermissionCheckResult {
    /**
     * Whether the operation is allowed
     */
    allowed: boolean;
    /**
     * Human-readable reason for the decision
     */
    reason: string;
    /**
     * Suggested action if permission denied
     */
    suggestedAction?: string;
    /**
     * Which setting controls this permission
     */
    settingPath?: string;
}
/**
 * Sync settings from config.json
 */
export interface SyncSettings {
    canUpsertInternalItems: boolean;
    canUpdateExternalItems: boolean;
    canUpdateStatus: boolean;
}
/**
 * Default settings (all disabled for safety)
 */
export declare const DEFAULT_SYNC_SETTINGS: SyncSettings;
/**
 * ADO Permission Gate
 *
 * Checks permission settings before allowing ADO write operations.
 */
export declare class AdoPermissionGate {
    private settings;
    private configPath;
    constructor(settings: SyncSettings, configPath: string);
    /**
     * Check if write operations (create/update work items) are allowed
     *
     * Requires: canUpdateExternalItems = true
     */
    checkWritePermission(): PermissionCheckResult;
    /**
     * Check if status updates are allowed
     *
     * Requires: canUpdateStatus = true
     */
    checkStatusPermission(): PermissionCheckResult;
    /**
     * Check if internal item creation is allowed
     *
     * Requires: canUpsertInternalItems = true
     */
    checkCreateInternalPermission(): PermissionCheckResult;
    /**
     * Get current settings
     */
    getSettings(): SyncSettings;
    /**
     * Get human-readable permission summary
     */
    getPermissionSummary(): string;
}
/**
 * Create an AdoPermissionGate from config.json
 *
 * @param projectRoot - Project root directory (defaults to cwd)
 * @returns AdoPermissionGate instance
 */
export declare function createAdoPermissionGate(projectRoot?: string): Promise<AdoPermissionGate>;
/**
 * Quick check: Are ADO write operations allowed?
 *
 * Convenience function for simple permission checks.
 *
 * @param projectRoot - Project root directory
 * @returns Permission check result
 */
export declare function canWriteToAdo(projectRoot?: string): Promise<PermissionCheckResult>;
/**
 * Quick check: Are ADO status updates allowed?
 *
 * @param projectRoot - Project root directory
 * @returns Permission check result
 */
export declare function canUpdateAdoStatus(projectRoot?: string): Promise<PermissionCheckResult>;
export default AdoPermissionGate;
//# sourceMappingURL=ado-permission-gate.d.ts.map