/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import * as ts from 'typescript';
import { FileSystem, WorkspacePath } from './file-system';
import { LineAndCharacter } from './utils/line-mappings';
export interface ResolvedResource {
    /** Class declaration that contains this resource. */
    container: ts.ClassDeclaration | null;
    /** File content of the given template. */
    content: string;
    /** Start offset of the resource content (e.g. in the inline source file) */
    start: number;
    /** Whether the given resource is inline or not. */
    inline: boolean;
    /** Path to the file that contains this resource. */
    filePath: WorkspacePath;
    /**
     * Gets the character and line of a given position index in the resource.
     * If the resource is declared inline within a TypeScript source file, the line and
     * character are based on the full source file content.
     */
    getCharacterAndLineOfPosition: (pos: number) => LineAndCharacter;
}
/**
 * Collector that can be used to find Angular templates and stylesheets referenced within
 * given TypeScript source files (inline or external referenced files)
 */
export declare class ComponentResourceCollector {
    typeChecker: ts.TypeChecker;
    private _fileSystem;
    resolvedTemplates: ResolvedResource[];
    resolvedStylesheets: ResolvedResource[];
    constructor(typeChecker: ts.TypeChecker, _fileSystem: FileSystem);
    visitNode(node: ts.Node): void;
    private _visitClassDeclaration;
    /** Resolves an external stylesheet by reading its content and computing line mappings. */
    resolveExternalStylesheet(filePath: WorkspacePath, container: ts.ClassDeclaration | null): ResolvedResource | null;
}
