import { types as t } from "@marko/compiler";
import { type Section } from "./sections";
import { type SerializeReason, type SerializeReasons } from "./serialize-reasons";
export declare function getScopeReasonDeclaration(section: Section): t.VariableDeclaration;
export declare function getSerializeGuard(section: Section, reason: undefined | SerializeReason, optional: boolean): t.Expression | undefined;
export declare function getSerializeGuardForAny(section: Section, reasons: undefined | SerializeReasons, optional: boolean): t.Expression | undefined;
export declare function getExprIfSerialized<T extends undefined | SerializeReason, R extends T extends {} ? t.Expression : undefined>(section: Section, reason: T, expr: t.Expression): R;
