import { type Ref, type ComputedRef } from '#imports'; import type { AdaptersProvider } from './adapters.js'; import type { StateProvider } from './state.js'; import type { UiProvider } from './ui.js'; import type { ReadabilityProvider } from './readability.js'; import type { AdapterContext } from '#blokkli/editor/adapter'; import type { TextProvider } from './texts.js'; import type { AnalyzeNode, AnalyzeResult, Analyzer, AnalyzerType } from '../features/analyze/analyzers/types.js'; import { AnalyzerContext } from '../features/analyze/analyzers/helpers/Context.js'; export type AnalyzeProvider = { /** * All available analyzers, fetched once from adapters. * Empty array until initialized. */ analyzers: Readonly>; /** * Whether analyzers have been fetched and initialized. */ isInitialized: Readonly>; /** * Fetch analyzers and call init() on each one. Idempotent. */ ensureInitialized: () => Promise; /** * Create an AnalyzerContext scoped to the given element. */ createContext: (element: HTMLElement, signal?: AbortSignal) => AnalyzerContext; /** * Run a single analyzer and return its results as a flat array. */ runAnalyzer: (analyzer: Analyzer, context: AnalyzerContext) => Promise; /** * Run analyzeText on all analyzers that support it. * Optionally filter by analyzer type. * Returns nodes per analyzer per text. */ runOnTexts: (texts: string[], analyzerType?: AnalyzerType) => Promise>; }; export default function analyzeProvider(adapters: AdaptersProvider, state: StateProvider, ui: UiProvider, context: ComputedRef, $t: TextProvider, readability: ReadabilityProvider): AnalyzeProvider;