import { InlineToggleDirective, MarkKey } from '../../../../../../document-api/src/index.js';
interface PmMark {
    type: {
        name: string;
        create: (attrs?: Record<string, unknown> | null) => PmMark;
    };
    attrs: Record<string, unknown>;
    eq: (other: PmMark) => boolean;
}
interface PmMarkType {
    create: (attrs?: Record<string, unknown> | null) => PmMark;
}
interface ToggleMarkSpec {
    schemaName: string;
    isOff: (mark: PmMark) => boolean;
    isOn: (mark: PmMark) => boolean;
    offAttrs: Record<string, unknown>;
    createOn: (markType: PmMarkType, existingMark?: PmMark) => PmMark;
}
/**
 * Core-4 toggle OFF values seen across import paths:
 * - canonical string token: `'0'`
 * - legacy/strict parser boolean token: `false`
 * - numeric token from permissive decoders: `0`
 */
export declare function isSimpleToggleOffValue(value: unknown): boolean;
/** Canonical mark spec table for core-4 toggle marks. */
export declare const TOGGLE_MARK_SPECS: Record<MarkKey, ToggleMarkSpec>;
/**
 * Derives the direct toggle state of a mark from the PM mark set.
 *
 * - Mark present with ON attrs → `'on'`
 * - Mark present with OFF attrs → `'off'`
 * - Mark absent → `'clear'`
 */
export declare function deriveToggleState(marks: readonly PmMark[], markKey: MarkKey): InlineToggleDirective;
/**
 * Applies an inline toggle directive to a mark array, returning the new mark set.
 * This is the shared logic used by both the executor and style-resolver.
 */
export declare function applyDirectiveToMarks(marks: readonly PmMark[], markKey: MarkKey, directive: InlineToggleDirective, markType: PmMarkType): PmMark[];
export {};
//# sourceMappingURL=mark-directives.d.ts.map