import { types as t } from "@marko/compiler";
import { type Binding } from "../../util/bindings";
import { type ParamsTree } from "../../util/params-tree";
import { preAnalyze } from "./pre-analyze";
declare module "@marko/compiler/dist/types" {
    interface ProgramExtra {
        /** Client code reads something of its own after resume (a section, or a
         * renderer it registers), so a page bundles it. */
        hasResumes?: boolean;
        /** What the template reads of its params (its input is the first), the
         * contract its callers keep. */
        paramsTree?: ParamsTree;
        /** The names every compile of the template exports its parts under. */
        exportNames?: {
            template: string;
            walks: string;
            setup: string;
            /** The signal of each of the template's param bindings, a property of
             * one included. */
            params: Map<Binding, string>;
            /** The `_dynamic_tag_content` signal of each binding only a name-only
             * dynamic tag reads. */
            directContent: Map<Binding, string>;
        };
        styleFile?: string;
    }
}
declare const _default: {
    migrate: {
        enter(this: unknown, program: t.NodePath<t.Program>): void;
        exit(this: unknown, program: t.NodePath<t.Program>): void;
    };
    transform: {
        exit: typeof preAnalyze;
    };
    analyze: {
        enter(this: unknown, program: t.NodePath<t.Program>): void;
        exit(this: unknown, program: t.NodePath<t.Program>): void;
    };
    translate: {
        enter(this: unknown, program: t.NodePath<t.Program>): void;
        exit(this: unknown, program: t.NodePath<t.Program>): void;
    };
};
export default _default;
