type StateKey = string;
type ActionKey = string;
type MemeberKey = StateKey | ActionKey;
type ScopedState = `${string}:${StateKey}`;
type ScopedAction = `${string}:${ActionKey}`;
type ScopedMember = ScopedState | ScopedAction;
type StateValue = string | number | boolean | null | undefined | object | Array<unknown>;
/**
 * Stores the key and value of a state attribute. \
 * Ie: `data-state--disabled="false"` would be stored as `['disabled', 'false']`
 * @note the StateKey doesnt include the $ prefix here
 */
type StateDirectives = Map<StateKey, StateValue>;
type HandlerNamespace = string;
type HandlerSpecifier = string;
type HandlerSpecifiersMap = Map<HandlerSpecifier, Set<ScopedMember>>;
/**
 * Stores a Map of namespaces, their specifiers and all handlers members \
 * `data-handler--HandlerNamespace.HandlerSpecifier="ScopedMember"`
 */
type HandlerDirectives = Map<HandlerNamespace, HandlerSpecifiersMap>;
type BindAttributeName = string;
type BindStateDirectives = Map<StateKey, Set<BindAttributeName>>;
type BindActionDirectives = Map<ActionKey, Set<BindAttributeName>>;
type EffectDirectives = Set<string>;
type LoopDirectives = Set<ScopedMember>;

export type { ActionKey as A, BindAttributeName as B, EffectDirectives as E, HandlerNamespace as H, LoopDirectives as L, MemeberKey as M, StateKey as S, ScopedState as a, ScopedAction as b, ScopedMember as c, StateValue as d, StateDirectives as e, HandlerSpecifier as f, HandlerSpecifiersMap as g, HandlerDirectives as h, BindStateDirectives as i, BindActionDirectives as j };
