/**
 * Bootstrap module for single-token SDK initialization.
 *
 * Usage:
 * ```typescript
 * import { Syntro } from '@syntrologie/runtime-sdk';
 *
 * const { canvas, runtime } = await Syntro.init({
 *   token: "syn_eyJ2IjoxLCJleHAiOnsiayI6InNkay14eHgiLCJwIjoiZ3Jvd3RoYm9vayJ9fQ"
 * });
 *
 * // Access runtime providers
 * runtime.telemetry?.trackAction(...);
 * runtime.context.subscribe((ctx, prev) => { ... });
 * runtime.events.subscribe({ names: ['ui.click'] }, (event) => { ... });
 * runtime.state.dismissals.mark('my-tile');
 * ```
 */
import type { appRegistry } from './apps';
import type { AppLoader, AppLoadResult } from './apps/AppLoader';
import type { SmartCanvasRuntime } from './runtime';
import type { InterventionTracker } from './telemetry/InterventionTracker';
import { decodeToken, encodeToken } from './token';
export { collectBrowserMetadata, computeInitialAttrs, fetchGeo, loadCached, writeCached, } from './bootstrap-init';
export type { SyntroInitOptions, SyntroInitResult } from './bootstrap-types';
/**
 * Initialize the Syntro SDK with a single token.
 *
 * Environment variable overrides (for dev):
 *   SYNTRO_EXPERIMENT_HOST - Override experiment server URL
 *   SYNTRO_TELEMETRY_HOST  - Override telemetry server URL
 *
 * In editor mode (when editor_token is in URL), the token is optional.
 * The editor SDK handles its own authentication.
 *
 * @param options - Initialization options
 * @returns The initialized SDK components
 */
declare function init(options: import('./bootstrap-types').SyntroInitOptions): Promise<import('./bootstrap-types').SyntroInitResult | undefined>;
/**
 * Emit a custom event through the SDK.
 *
 * Events flow through the EventBus (tile notification rule matching)
 * and PostHog (analytics). Event names must use the `app:` prefix.
 *
 * @param eventName - Event name (e.g., 'app:setup:sdk_connected')
 * @param props - Optional event properties
 */
declare function emit(eventName: string, props?: Record<string, unknown>): void;
/**
 * Lazy-load an adaptive package from CDN.
 *
 * Wraps the runtime's internal AppLoader so consumers (e.g. the Telegram
 * canvas mini-app, custom pages embedding the SDK) can request adaptives
 * that aren't statically bundled — `adaptive-mcp` is the canonical example.
 *
 * Requires `Syntro.init(...)` to have completed first; the AppLoader is
 * created during init and exposed on `window.SynOS.appLoader`.
 *
 * Resolves with `{ success, manifest? }`. On `success: false`, callers
 * should treat the adaptive as unavailable — the rest of the page should
 * keep working without it.
 */
declare function loadAdaptive(appId: string): Promise<AppLoadResult>;
/**
 * The Syntro namespace for single-token initialization.
 */
export declare const Syntro: {
    init: typeof init;
    loadAdaptive: typeof loadAdaptive;
    encodeToken: typeof encodeToken;
    decodeToken: typeof decodeToken;
    events: {
        emit: typeof emit;
    };
};
declare global {
    interface Window {
        Syntro?: typeof Syntro;
        SynOS?: {
            appRegistry: typeof appRegistry;
            appLoader?: AppLoader;
            runtime: SmartCanvasRuntime;
            version: string;
            interventionTracker?: InterventionTracker;
        };
    }
}
