import type { FileProcessor } from './cached-process-file'; import type { Diagnostics } from './diagnostics'; import type { StylableMeta } from './stylable-meta'; import { ImportSymbol, ClassSymbol, ElementSymbol, Imported, StylableSymbol, STSymbol, VarSymbol, CSSVarSymbol, KeyframesSymbol, LayerSymbol, ContainerSymbol, STStructure } from './features'; import type { ModuleResolver } from './types'; import { CustomValueExtension } from './custom-values'; export type JsModule = { default?: unknown; [key: string]: unknown; }; export interface InvalidCachedModule { kind: 'js' | 'css'; value: null; error: unknown; request: string; context: string; resolvedPath: string | undefined; } export interface CachedStylableMeta { resolvedPath: string; kind: 'css'; value: StylableMeta; } export interface CachedJsModule { resolvedPath: string; kind: 'js'; value: JsModule; } export interface ResolveOnly { resolvedPath: string; kind: 'resolve'; value: null; } export type CachedModuleEntity = InvalidCachedModule | CachedStylableMeta | CachedJsModule | ResolveOnly; export type StylableResolverCache = Map; export interface CSSResolveMaybe { _kind: 'css'; symbol: T | undefined; meta: StylableMeta; } export interface CSSResolve { _kind: 'css'; symbol: T; meta: StylableMeta; } export declare function isValidCSSResolve(resolved: CSSResolveMaybe): resolved is CSSResolve; export type CSSResolvePath = Array>; export interface JSResolve { _kind: 'js'; symbol: unknown; meta: null; } export interface MetaResolvedSymbols { mainNamespace: Record; class: Record>>; element: Record>>; var: Record>; js: Record; customValues: Record>; cssVar: Record>; keyframes: Record>; layer: Record>; container: Record>; import: Record>; } export type ReportError = (res: CSSResolveMaybe | JSResolve | null, extend: ImportSymbol | ClassSymbol | ElementSymbol, extendPath: Array>, meta: StylableMeta, name: string, isElement: boolean) => void; export declare class StylableResolver { protected fileProcessor: FileProcessor; protected requireModule: (resolvedPath: string) => any; protected moduleResolver: ModuleResolver; protected cache?: StylableResolverCache | undefined; constructor(fileProcessor: FileProcessor, requireModule: (resolvedPath: string) => any, moduleResolver: ModuleResolver, cache?: StylableResolverCache | undefined); getModule({ context, request, }: Pick): CachedModuleEntity; analyze(filePath: string): StylableMeta; resolvePath(directoryPath: string, request: string): string; resolveImported(imported: Imported, name: string, subtype?: 'mappedSymbols' | 'mappedKeyframes' | STSymbol.Namespaces): CSSResolveMaybe | JSResolve | null; resolveImport(importSymbol: ImportSymbol): CSSResolveMaybe | JSResolve | null; resolve(maybeImport: StylableSymbol | undefined): CSSResolveMaybe | JSResolve | null; deepResolve(maybeImport: StylableSymbol | undefined, path?: StylableSymbol[]): CSSResolveMaybe | JSResolve | null; resolveSymbolOrigin(symbol: StylableSymbol | undefined, meta: StylableMeta, path?: StylableSymbol[]): CSSResolve | null; resolveSymbols(meta: StylableMeta, diagnostics: Diagnostics): MetaResolvedSymbols; resolveExtends(meta: StylableMeta, nameOrSymbol: string | ClassSymbol | ElementSymbol, isElement?: boolean, reportError?: ReportError): CSSResolvePath; } export declare function createSymbolResolverWithCache(resolver: StylableResolver, diagnostics: Diagnostics): (meta: StylableMeta) => MetaResolvedSymbols; //# sourceMappingURL=stylable-resolver.d.ts.map