import { ParentClient, ParentCallbacks } from '../parent/parent-client';
import { ChildClient, ChildCallbacks } from '../child/child-client';
import { ParentClientConfig, ChildClientConfig, RouterAdapter, UserServiceAdapter, QuartalUser } from '../types';
export declare class VueRouterAdapter implements RouterAdapter {
    private router;
    constructor(router: any);
    navigate(route: string[] | string): Promise<boolean> | void;
    getCurrentUrl(): string;
    onUrlChange(callback: (url: string) => void): () => void;
}
export declare class VueUserServiceAdapter implements UserServiceAdapter {
    private userService;
    constructor(userService: any);
    getCurrentUser(): QuartalUser | null;
    onUserChange(callback: (user: QuartalUser | null) => void): () => void;
}
export declare class QuartalVueAdapter {
    private parentClient?;
    private childClient?;
    private router?;
    private userService?;
    private routerAdapter?;
    private userServiceAdapter?;
    private logger;
    constructor(router?: any, userService?: any, _storageService?: any);
    /**
     * Create parent client for Vue
     */
    createParentClient(config: ParentClientConfig, callbacks?: ParentCallbacks): ParentClient;
    /**
     * Create child client for Vue with URL-based transport configuration
     */
    createChildClient(config: ChildClientConfig, callbacks?: ChildCallbacks): ChildClient;
    /**
     * Create child client with explicit transport configuration (bypasses URL parsing)
     */
    createChildClientWithTransport(config: ChildClientConfig, callbacks?: ChildCallbacks, transportType?: 'iframe' | 'postmessage', transportConfig?: any): ChildClient;
    /**
     * Internal method to create child client with transport (shared logic)
     */
    private createChildClientInternal;
    /**
     * Get existing parent client
     */
    getParentClient(): ParentClient | undefined;
    /**
     * Get existing child client
     */
    getChildClient(): ChildClient | undefined;
    /**
     * Destroy clients and clean up
     */
    destroy(): Promise<void>;
}
export interface QuartalVuePluginOptions {
    router?: any;
    userService?: any;
    storageService?: any;
}
export declare const QuartalVuePlugin: {
    install(app: any, options?: QuartalVuePluginOptions): void;
};
export declare function useQuartal(): {
    createParentClient: (config: ParentClientConfig, _callbacks?: ParentCallbacks) => null;
    createChildClient: (config: ChildClientConfig, _callbacks?: ChildCallbacks) => null;
};
//# sourceMappingURL=vue-adapter.d.ts.map