import type { ReactNode } from 'react';
export interface ServerClientEffect {
    type: 'render-ui' | 'navigate' | 'notify';
    slot?: string;
    pattern?: Record<string, unknown>;
    route?: string;
    params?: Record<string, unknown>;
    message?: string;
    /**
     * Trait that emitted this effect. Used by `<TraitFrame>` to resolve
     * `@trait.X` bindings. Undefined when the server didn't tag the effect
     * (older servers that pre-date the per-trait sidecar).
     */
    traitName?: string;
}
/** Metadata about what the server returned, for debugger logging */
export interface ServerResponseMeta {
    success: boolean;
    clientEffects: number;
    dataEntities: Record<string, number>;
    /** Raw entity data from server response (for EntityStore advancement) */
    data?: Record<string, unknown[]>;
    emittedEvents: string[];
    error?: string;
}
export interface SendEventResult {
    effects: ServerClientEffect[];
    meta: ServerResponseMeta;
}
export interface ServerBridgeContextValue {
    connected: boolean;
    sendEvent: (orbitalName: string, event: string, payload?: Record<string, unknown>) => Promise<SendEventResult>;
}
/**
 * Access the server bridge. Returns a no-op stub when outside the provider.
 */
export declare function useServerBridge(): ServerBridgeContextValue;
export interface ServerBridgeProviderProps {
    schema: unknown;
    serverUrl: string;
    children: ReactNode;
}
export declare function ServerBridgeProvider({ schema, serverUrl, children, }: ServerBridgeProviderProps): import("react/jsx-runtime").JSX.Element;
