import { TraitCategory, Trait, SExpr } from '@almadar/core/types';
export { Effect, Entity, Event, Expression, Guard, Orbital, OrbitalSchema, State, StateMachine, Trait, TraitCategory, TraitDataEntity, TraitEntityField, TraitTick, Transition } from '@almadar/core/types';

/**
 * Standard Behaviors Types
 *
 * Standard Behaviors are reusable OrbitalSchema definitions with a `std-` naming convention.
 * Each behavior is a self-contained .orb file that can function independently.
 *
 * @packageDocumentation
 */

/**
 * @deprecated Use OrbitalSchema directly. BehaviorTrait is kept for backward compatibility.
 */
type BehaviorTrait = Trait;
interface ItemAction {
    label: string;
    event?: string;
    navigatesTo?: string;
    placement?: 'row' | 'bulk' | 'card' | 'footer' | 'header';
    variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
    showWhen?: SExpr | string;
}
/**
 * Behavior metadata extracted from a Trait for documentation purposes
 */
interface BehaviorMetadata {
    name: string;
    category?: TraitCategory;
    description: string;
    states: string[];
    events: string[];
    tickCount: number;
    transitionCount: number;
    hasDataEntities: boolean;
}
/**
 * Extract metadata from a BehaviorTrait for documentation
 */
declare function getBehaviorMetadata(behavior: BehaviorTrait): BehaviorMetadata;
/**
 * Validate behavior structure
 */
declare function validateBehaviorStructure(behavior: BehaviorTrait): string[];
/**
 * Validate behavior events match transitions
 */
declare function validateBehaviorEvents(behavior: BehaviorTrait): string[];
/**
 * Validate behavior states match transitions
 */
declare function validateBehaviorStates(behavior: BehaviorTrait): string[];

export { type BehaviorMetadata, type BehaviorTrait, type ItemAction, getBehaviorMetadata, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure };
