import { Predicate } from "./logic"; declare type Metadata = number; export declare enum SimulationGoalTag { ACTION_QUIESCENCE = 1, EVENT_QUIESCENCE = 2, TOTAL_QUIESCENCE = 3, PREDICATE = 4 } export declare type SimulationGoal = SGActionQuiescence | SGEventQuiescence | SGTotalQuiescence | SGPredicate; export declare abstract class SimulationGoalBase { abstract tag: SimulationGoalTag; } export declare class SGActionQuiescence extends SimulationGoalBase { readonly meta: Metadata; readonly tag = SimulationGoalTag.ACTION_QUIESCENCE; constructor(meta: Metadata); } export declare class SGEventQuiescence extends SimulationGoalBase { readonly meta: Metadata; readonly tag = SimulationGoalTag.EVENT_QUIESCENCE; constructor(meta: Metadata); } export declare class SGTotalQuiescence extends SimulationGoalBase { readonly meta: Metadata; readonly tag = SimulationGoalTag.TOTAL_QUIESCENCE; constructor(meta: Metadata); } export declare class SGPredicate extends SimulationGoalBase { readonly meta: Metadata; readonly predicate: Predicate; readonly tag = SimulationGoalTag.PREDICATE; constructor(meta: Metadata, predicate: Predicate); } export {};