import { types as t } from "@marko/compiler"; import { AccessorPrefix, AccessorProp } from "../../common/types"; import { type OneMany, type Opt } from "./optional"; import { type Binding, type InputBinding, type ParamBinding, type ReferencedBindings, type Sources } from "./references"; import type { Section } from "./sections"; export type SerializeReasons = true | [Sources, ...Sources[]]; export type SerializeReason = true | Sources; export declare function isSameReason(a: SerializeReason | undefined, b: SerializeReason | undefined): boolean; export declare function isForceSerialized(section: Section, prop?: Binding | AccessorProp | symbol, prefix?: AccessorPrefix | symbol): boolean; export declare function addSerializeReason(section: Section, reason: undefined | false | SerializeReason, prop?: Binding | AccessorProp | symbol, prefix?: AccessorPrefix | symbol): void; export declare function addSerializeExpr(section: Section, expr: boolean | Opt, prop?: Binding | AccessorProp | symbol, prefix?: AccessorPrefix | symbol): void; export declare function addOwnerSerializeReason(from: Section, to: Section, reason: undefined | boolean | SerializeReason): void; export declare function isReasonDynamic(reason: undefined | SerializeReason): reason is { state: undefined; param: OneMany; }; export declare function getSerializeReason(section: Section, prop?: Binding | AccessorProp | symbol, prefix?: AccessorPrefix | symbol): SerializeReason | undefined; export declare function getSerializeSourcesForExpr(expr: t.NodeExtra): Sources | undefined; export declare function getSerializeSourcesForExprs(exprs: Opt | boolean): true | Sources | undefined; export declare function getSerializeSourcesForRef(ref: ReferencedBindings): Sources | undefined; export declare function mergeSerializeReasons(a: SerializeReason, b: undefined | SerializeReason): SerializeReason; export declare function mergeSerializeReasons(a: undefined | SerializeReason, b: SerializeReason): SerializeReason; export declare function mergeSerializeReasons(a: undefined | SerializeReason, b: undefined | SerializeReason): SerializeReason | undefined; export declare function applySerializeExprs(section: Section): void; export declare function finalizeSerializeReason(section: Section): void;