/**
 * Row Level Security (RLS) システム - ksqlDB用アクセス制御
 */
import { UserPayload } from './jwt-auth';
/**
 * RLSポリシーのタイプ
 */
export declare enum PolicyType {
    SELECT = "SELECT",
    INSERT = "INSERT",
    UPDATE = "UPDATE",
    DELETE = "DELETE",
    ALL = "ALL"
}
/**
 * RLSポリシー定義
 */
export interface RLSPolicy {
    id: string;
    name: string;
    tableName: string;
    policyType: PolicyType;
    roles: string[];
    condition: string;
    description: string;
    isActive: boolean;
    createdAt: Date;
    updatedAt: Date;
}
/**
 * RLSマネージャー
 */
export declare class RLSManager {
    private static instance;
    private policies;
    private tableRLSEnabled;
    private constructor();
    /**
     * シングルトンインスタンスを取得
     */
    static getInstance(): RLSManager;
    /**
     * デフォルトポリシーを初期化
     */
    private initializeDefaultPolicies;
    /**
     * ポリシーを作成
     */
    createPolicy(policy: Omit<RLSPolicy, 'createdAt' | 'updatedAt'>): void;
    /**
     * ポリシーを更新
     */
    updatePolicy(id: string, updates: Partial<RLSPolicy>): boolean;
    /**
     * ポリシーを削除
     */
    deletePolicy(id: string): boolean;
    /**
     * テーブルのRLSを有効化
     */
    enableRLS(tableName: string): void;
    /**
     * テーブルのRLSを無効化
     */
    disableRLS(tableName: string): void;
    /**
     * テーブルのRLS状態を確認
     */
    isRLSEnabled(tableName: string): boolean;
    /**
     * クエリを分析
     */
    private analyzeQuery;
    /**
     * 適用可能なポリシーを取得
     */
    private getApplicablePolicies;
    /**
     * 条件をクエリに適用
     */
    private applyConditionsToQuery;
    /**
     * ユーザーコンテキストを条件に適用
     */
    private applyUserContext;
    /**
     * クエリにRLSを適用
     */
    applyRLS(sql: string, user: UserPayload): string;
    /**
     * ポリシー一覧を取得
     */
    listPolicies(): RLSPolicy[];
    /**
     * テーブル固有のポリシーを取得
     */
    getTablePolicies(tableName: string): RLSPolicy[];
    /**
     * ポリシーを取得
     */
    getPolicy(id: string): RLSPolicy | undefined;
    /**
     * RLS統計情報を取得
     */
    getStatistics(): {
        totalPolicies: number;
        activePolicies: number;
        enabledTables: number;
        policiesByType: Record<string, number>;
    };
}
/**
 * Express.js ミドルウェア: RLS適用
 */
export declare function rlsMiddleware(): (req: any, res: any, next: any) => void;
/**
 * RLSヘルパー関数
 */
export declare const rls: {
    /**
     * マネージャーインスタンスを取得
     */
    manager: () => RLSManager;
    /**
     * ポリシーを作成
     */
    createPolicy: (policy: Omit<RLSPolicy, "createdAt" | "updatedAt">) => void;
    /**
     * テーブルのRLSを有効化
     */
    enableTableRLS: (tableName: string) => void;
    /**
     * テーブルのRLSを無効化
     */
    disableTableRLS: (tableName: string) => void;
    /**
     * クエリにRLSを適用
     */
    applyToQuery: (sql: string, user: UserPayload) => string;
    /**
     * ポリシー一覧を取得
     */
    listPolicies: () => RLSPolicy[];
    /**
     * 統計情報を取得
     */
    getStatistics: () => {
        totalPolicies: number;
        activePolicies: number;
        enabledTables: number;
        policiesByType: Record<string, number>;
    };
};
//# sourceMappingURL=row-level-security.d.ts.map