import { types as t } from "@marko/compiler"; import { AccessorPrefix, AccessorProp } from "../../common/types"; import { type OneMany, type Opt, Sorted } from "./optional"; import { type Binding, type KnownExprs, type ReferencedBindings, type Sources } from "./references"; import type { Section } from "./sections"; export type SerializeReasons = true | OneMany; export declare const sourcesUtil: Sorted; export type SerializeReason = true | Sources; export type SerializeKey = symbol & { __serialize_key__: 1; }; 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 Sources & { state: undefined; }; export declare function isStaticSerializeReason(reason: undefined | SerializeReason): reason is SerializeReason; export declare function isStateSerializeReason(reason: undefined | SerializeReason): reason is Sources; 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 mapCrossProgramReason(program: Section, reason: Sources, exprs: KnownExprs | undefined): SerializeReason | undefined; export declare function mapDownstreamReason(program: Section, reason: Sources, exprs: KnownExprs): SerializeReason | 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; export declare function getSerializeProvenance(section: Section, prop?: Binding | AccessorProp | symbol, prefix?: AccessorPrefix | symbol): Sources | undefined;