import { SqrlSlot } from "./SqrlSlot"; import { FeatureDefinition } from "../api/spec"; export interface SerializedSlotBase { class: string; name: string; } export interface SerializedConstantSlot extends SerializedSlotBase { class: "SqrlConstantSlot"; ast: any; } export interface SerializedIteratorSlot extends SerializedSlotBase { class: "SqrlIteratorSlot"; } export interface SerializedStatementSlot extends SerializedSlotBase { class: "SqrlStatementSlot"; referencedSlots: string[]; } export interface SerializedFixedSlot extends SerializedSlotBase { class: "SqrlFixedSlot"; ast: any; replaceable: boolean; } export interface SerializedFeatureSlot extends SerializedSlotBase { class: "SqrlFeatureSlot"; definitions: FeatureDefinition[]; final: boolean; ast: any; where: any; ruleSpec: any; } export interface SerializedRuleSlot extends SerializedSlotBase { class: "SqrlRuleSlot"; definition: FeatureDefinition; ast: any; where: any; ruleSpec: any; } export declare type SerializedSlot = SerializedConstantSlot | SerializedFixedSlot | SerializedIteratorSlot | SerializedFeatureSlot | SerializedRuleSlot | SerializedStatementSlot; export declare function registerSlotClass(classConstructor: any): void; export declare function deserializeSlot(serialized: SerializedSlot): SqrlSlot;