/**
 * App Bootstrap Manager
 *
 * Orchestrates the initialization of Vue app with different authentication modes
 * and plugin registration.
 */
import type { App } from 'vue';
import { type KeycloakConfig } from './KeycloakInitializer';
import { type JwtConfig } from './JwtInitializer';
import { type InitializerModeConfig } from './InitializerModeInitializer';
import type { AuthMode } from './AuthModeInitializer';
export interface PluginConfig {
    router?: any;
    perfectScrollbar?: any;
    print?: any;
    vueApexCharts?: any;
    vue3PersianDatetimePicker?: any;
    vuetify?: any;
    customPlugins?: Array<{
        plugin: any;
        options?: any;
    }>;
}
export interface DirectiveConfig {
    digitLimit?: any;
    permission?: any;
    customDirectives?: Array<{
        name: string;
        directive: any;
    }>;
}
export interface ComponentConfig {
    vue3PersianDatetimePicker?: any;
    customComponents?: Array<{
        name: string;
        component: any;
    }>;
}
export interface AppBootstrapConfig {
    app: App;
    authMode: AuthMode | string;
    authConfig: KeycloakConfig | JwtConfig | InitializerModeConfig;
    plugins?: PluginConfig;
    directives?: DirectiveConfig;
    components?: ComponentConfig;
    onBootstrapStart?: () => void;
    onBootstrapComplete?: () => void;
    onBootstrapError?: (error: unknown) => void;
}
export declare class AppBootstrap {
    private app;
    private authMode;
    private authConfig;
    private plugins?;
    private directives?;
    private components?;
    private onBootstrapStart?;
    private onBootstrapComplete?;
    private onBootstrapError?;
    constructor(config: AppBootstrapConfig);
    /**
     * Start the bootstrap process
     */
    bootstrap(): Promise<void>;
    /**
     * Initialize authentication based on mode
     */
    private initializeAuth;
    /**
     * Register Vue plugins
     */
    private registerPlugins;
    /**
     * Register Vue directives
     */
    private registerDirectives;
    /**
     * Register Vue components
     */
    private registerComponents;
    /**
     * Mount the Vue app
     */
    private mountApp;
}
/**
 * Convenience function to create and run bootstrap
 */
export declare function bootstrapApp(config: AppBootstrapConfig): Promise<void>;
//# sourceMappingURL=AppBootstrap.d.ts.map