import { Effect, EffectTarget } from "../core/schema"; export declare const RULE_TRIGGER_TYPE_OPTIONS: readonly ["immediate", "event", "interact", "collisionEnter", "entityInRange", "timeElapsed", "die", "primaryAction", "secondaryAction", "time", "interval", "proximity"]; export type RuleTriggerType = typeof RULE_TRIGGER_TYPE_OPTIONS[number]; export type RuleContextValueName = "self" | "other" | "user"; export type RuleContextAvailability = "guaranteed" | "optional" | "unavailable"; export type TriggerContextContract = { trigger: RuleTriggerType; description: string; context: Record; }; export type RuleTargetValidationIssue = { trigger: RuleTriggerType; target: EffectTarget; path: string; reason: "target_unavailable_for_trigger"; message: string; }; export type RuntimeRuleContext = { self: number; other?: number; user?: number; }; export type RuntimeTargetAssertion = { valid: true; target: EffectTarget; contextKey: RuleContextValueName; } | { valid: false; target: EffectTarget; contextKey: RuleContextValueName; reason: "target_unavailable_for_trigger" | "missing_context_value"; message: string; }; export declare const RULE_TRIGGER_CONTEXT_CONTRACTS: Record; export declare function getTargetContextKey(target: EffectTarget | string | undefined): RuleContextValueName; export declare function validateRuleTargetsForTrigger(triggerType: RuleTriggerType, effects: Effect[] | undefined, pathPrefix: string): RuleTargetValidationIssue[]; export declare function assertRuleEffectTargetAtRuntime(triggerType: RuleTriggerType, effect: Effect, context: RuntimeRuleContext): RuntimeTargetAssertion; //# sourceMappingURL=ruleContextContracts.d.ts.map