/**
 * Auth0対応 Supabase風クライアント（stub実装）
 * @todo [P2] Full implementation when Auth0Integration is complete
 */
import { PullQueryOptions, UserPayload } from './types';
import { RealtimeClient } from './realtime-client';
/**
 * Auth0クライアント設定
 */
export interface Auth0ClientConfig {
    ksqlDbUrl: string;
    auth0Token?: string;
    auth0Config?: {
        domain?: string;
        audience?: string;
        clientId?: string;
        jwksUri?: string;
    };
    options?: {
        realtime?: {
            url?: string;
            autoReconnect?: boolean;
        };
        db?: {
            schema?: string;
        };
    };
}
/**
 * Auth0認証状態
 */
export interface Auth0AuthState {
    user: UserPayload | null;
    isAuthenticated: boolean;
    auth0Token: string | null;
    error: string | null;
    extensionAccessAvailable: boolean;
    userGroups?: string[];
    userRoles?: string[];
    userPermissions?: string[];
}
/**
 * Extension用の型定義
 */
export interface ExtensionGroup {
    _id: string;
    name: string;
    description: string;
    members?: string[];
    roles?: string[];
}
export interface ExtensionRole {
    _id: string;
    name: string;
    description: string;
    applicationId: string;
    permissions?: string[];
}
export interface ExtensionPermission {
    _id: string;
    name: string;
    description: string;
    applicationId: string;
}
export interface ExtensionPolicy {
    groups: string[];
    roles: string[];
    permissions: string[];
}
/**
 * Auth0 GFTD クライアント（stub実装）
 * @todo [P2] Full implementation when Auth0Integration is complete
 */
export declare class Auth0GftdClient {
    private config;
    private authState;
    private realtimeClient?;
    private auth0Manager?;
    constructor(config: Auth0ClientConfig);
    /**
     * トークンによる認証（stub実装）
     */
    authenticateWithToken(token: string): Promise<{
        success: boolean;
        error?: string;
    }>;
    /**
     * 認証状態を取得
     */
    get auth(): Auth0AuthState;
    /**
     * Auth0トークンを設定
     */
    setAuth0Token(token: string): Promise<{
        success: boolean;
        error?: string;
    }>;
    /**
     * SQLクエリの実行（stub実装）
     */
    query(sql: string, options?: PullQueryOptions): Promise<{
        data: any[];
        error: any;
    }>;
    /**
     * ストリーミングクエリ（stub実装）
     */
    stream(sql: string, onData: (data: any) => void, onError?: (error: Error) => void): Promise<{
        terminate: () => void;
    }>;
    /**
     * 権限チェック（stub実装）
     */
    hasPermission(permission: string): boolean;
    /**
     * ロールチェック（stub実装）
     */
    hasRole(role: string): boolean;
    /**
     * グループチェック（stub実装）
     */
    hasGroup(groupName: string): boolean;
    /**
     * すべてのメソッドをstub実装として定義
     * @todo [P2] Replace with actual implementations
     */
    getGroups(): Promise<ExtensionGroup[]>;
    getGroup(groupId: string): Promise<ExtensionGroup>;
    createGroup(name: string, description?: string): Promise<ExtensionGroup>;
    updateGroup(groupId: string, updates: Partial<ExtensionGroup>): Promise<ExtensionGroup>;
    deleteGroup(groupId: string): Promise<void>;
    getRoles(): Promise<ExtensionRole[]>;
    getRole(roleId: string): Promise<ExtensionRole>;
    createRole(name: string, description?: string, applicationId?: string): Promise<ExtensionRole>;
    updateRole(roleId: string, updates: Partial<ExtensionRole>): Promise<ExtensionRole>;
    deleteRole(roleId: string): Promise<void>;
    addUserToGroups(userId: string, groupIds: string[]): Promise<void>;
    removeUserFromGroups(userId: string, groupIds: string[]): Promise<void>;
    addUserToRoles(userId: string, roleIds: string[]): Promise<void>;
    removeUserFromRoles(userId: string, roleIds: string[]): Promise<void>;
    executeAuthorizationPolicy(userId: string, clientId: string, connectionName: string, groups?: string[]): Promise<ExtensionPolicy>;
    getMyAuthorizationPolicy(): Promise<ExtensionPolicy | null>;
    buildLoginUrl(options: any): string;
    buildSignupUrl(options: any): string;
    buildLogoutUrl(options: any): string;
    buildPasswordResetUrl(options: any): string;
    exchangeCodeForToken(options: any): Promise<any>;
    refreshAccessToken(refreshToken: string): Promise<any>;
    signUp(options: any): Promise<any>;
    updateProfile(updates: any): Promise<any>;
    deleteAccount(): Promise<void>;
    sendPasswordResetEmail(email: string, connection?: string): Promise<void>;
    sendEmailVerification(): Promise<void>;
    getProfile(): Promise<any>;
    getUsers(options?: any): Promise<any[]>;
    generatePKCEChallenge(): {
        codeVerifier: string;
        codeChallenge: string;
    };
    redirectToLogin(options: any): void;
    redirectToSignup(options: any): void;
    logout(options: any): void;
    handleCallback(options: any): Promise<{
        success: boolean;
        error?: string;
    }>;
    createRealtimeClient(options?: {
        autoReconnect?: boolean;
    }): RealtimeClient;
    signOut(): void;
    dispose(): void;
}
/**
 * Auth0クライアント作成関数
 */
export declare function createAuth0Client(ksqlDbUrl: string, auth0Token?: string, options?: any): Auth0GftdClient;
/**
 * Auth0ミドルウェア作成関数（stub実装）
 */
export declare function createAuth0Middleware(options?: any): (req: any, res: any, next: any) => void;
//# sourceMappingURL=auth0-supabase-client.d.ts.map