import type { ContainerDirective, Directives, LeafDirective, TextDirective } from 'mdast-util-directive'; import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'; export type ContainerDirectiveTransformer = { name: string; aliases?: readonly string[]; transform: (node: ContainerDirective, options?: Options) => MdxJsxFlowElement; }; export type LeafDirectiveTransformer = { name: string; aliases?: readonly string[]; transform: (node: LeafDirective, options?: Options) => MdxJsxTextElement; }; export type TextDirectiveTransformer = { name: string; aliases?: readonly string[]; transform: (node: TextDirective, options?: Options) => MdxJsxTextElement; }; type FlattenDirectives = T extends Record ? D : never; type DirectiveName = T extends { name: infer N; } ? N : never; type DirectiveOptions = T extends { transform: (node: never, options?: infer O) => unknown; } ? O : never; type DirectiveByName = Directives extends { name: Name; } ? Directives : never; export type ExtractDirectivesOptions = { [K in DirectiveName> & string]?: DirectiveOptions, K>>; }; export type AnyDirectiveTransformer = { name: string; aliases?: readonly string[]; transform: (node: D, options?: any) => MdxJsxFlowElement | MdxJsxTextElement; }; export {};