/**
 * GFTD ORM Core Types
 */
/**
 * ユーザーペイロード
 */
export interface UserPayload {
    sub: string;
    email?: string;
    role: 'anon' | 'authenticated' | 'service_role';
    tenant_id: string;
    metadata?: {
        auth0_user_id?: string;
        email_verified?: boolean;
        name?: string;
        picture?: string;
        nickname?: string;
        roles?: string[];
        permissions?: string[];
        [key: string]: any;
    };
    app_metadata?: {
        provider?: string;
        domain?: string;
        client_id?: string;
        picture?: string;
        [key: string]: any;
    };
    user_metadata?: {
        email?: string;
        name?: string;
        picture?: string;
        [key: string]: any;
    };
}
/**
 * 監査ログレベル
 */
export declare enum AuditLogLevel {
    DEBUG = "DEBUG",
    INFO = "INFO",
    WARN = "WARN",
    ERROR = "ERROR",
    CRITICAL = "CRITICAL"
}
/**
 * 監査イベントタイプ
 */
export declare enum AuditEventType {
    AUTH_LOGIN = "AUTH_LOGIN",
    AUTH_LOGOUT = "AUTH_LOGOUT",
    AUTH_FAILED = "AUTH_FAILED",
    DATA_READ = "DATA_READ",
    DATA_WRITE = "DATA_WRITE",
    DATA_DELETE = "DATA_DELETE",
    ADMIN_ACTION = "ADMIN_ACTION",
    ADMIN_USER_CREATE = "ADMIN_USER_CREATE",
    ADMIN_USER_DELETE = "ADMIN_USER_DELETE",
    ADMIN_POLICY_CHANGE = "ADMIN_POLICY_CHANGE",
    UNAUTHORIZED_ACCESS = "UNAUTHORIZED_ACCESS",
    SECURITY_EVENT = "SECURITY_EVENT"
}
/**
 * 監査ログエントリ
 */
export interface AuditLogEntry {
    level: AuditLogLevel;
    eventType: AuditEventType;
    userId?: string;
    tenantId?: string;
    result: 'SUCCESS' | 'FAILURE';
    message: string;
    details?: Record<string, any>;
    timestamp?: Date;
}
/**
 * 監査ログマネージャー
 */
export declare class AuditLogManager {
    static log(entry: AuditLogEntry): void;
    static logRateLimitViolation(userId: string, details: any): void;
    static logSecurityViolation(userId: string, violationType: string, details: any): void;
}
/**
 * 認証結果
 */
export interface AuthResult {
    user: UserPayload;
    accessToken: string;
    refreshToken?: string;
    expiresIn: number;
    expiresAt?: number;
    tokenType: string;
}
/**
 * Pull Query Options
 */
export interface PullQueryOptions {
    limit?: number;
    offset?: number;
    where?: Record<string, any>;
    orderBy?: string;
    timeout?: number;
}
export declare const jwtAuth: {
    authenticate: (user: UserPayload) => AuthResult;
    verifyToken: (token: string) => UserPayload | null;
};
export declare const rls: {
    enable: () => void;
    disable: () => void;
    setUser: (user: UserPayload) => void;
    applyToQuery: (query: string, user: UserPayload | null) => string;
};
export declare const executePullQuery: (query: string, options?: PullQueryOptions) => Promise<{
    data: any[];
}>;
export declare const executePushQuery: (query: string, onData?: any, onError?: any) => Promise<any>;
//# sourceMappingURL=types.d.ts.map