import { DebugProtocol } from 'vscode-debugprotocol';
import { ISetBreakpointsArgs, ILaunchRequestArgs, IAttachRequestArgs, ISetBreakpointsResponseBody, IInternalStackTraceResponseBody, IScopesResponseBody, IInternalStackFrame } from '../debugAdapterInterfaces';
import { MappedPosition, ISourcePathDetails } from '../sourceMaps/sourceMap';
import { SourceMaps } from '../sourceMaps/sourceMaps';
import * as utils from '../utils';
import { ISourceContainer } from '../chrome/chromeDebugAdapter';
export interface ISourceLocation {
    source: DebugProtocol.Source;
    line: number;
    column: number;
    isSourceMapped?: boolean;
}
/**
 * If sourcemaps are enabled, converts from source files on the client side to runtime files on the target side
 */
export declare class BaseSourceMapTransformer {
    protected _sourceMaps: SourceMaps;
    protected _sourceHandles: utils.ReverseHandles<ISourceContainer>;
    private _enableSourceMapCaching;
    private _requestSeqToSetBreakpointsArgs;
    private _allRuntimeScriptPaths;
    private _authoredPathsToMappedBPs;
    private _authoredPathsToClientBreakpointIds;
    protected _preLoad: Promise<void>;
    private _processingNewSourceMap;
    caseSensitivePaths: boolean;
    protected _isVSClient: boolean;
    constructor(sourceHandles: utils.ReverseHandles<ISourceContainer>, enableSourceMapCaching?: boolean);
    readonly sourceMaps: SourceMaps;
    isVSClient: boolean;
    launch(args: ILaunchRequestArgs): void;
    attach(args: IAttachRequestArgs): void;
    protected init(args: ILaunchRequestArgs | IAttachRequestArgs): void;
    clearTargetContext(): void;
    /**
     * Apply sourcemapping to the setBreakpoints request path/lines.
     * Returns true if completed successfully, and setBreakpoint should continue.
     */
    setBreakpoints(args: ISetBreakpointsArgs, requestSeq: number, ids?: number[]): {
        args: ISetBreakpointsArgs;
        ids: number[];
    };
    /**
     * Apply sourcemapping back to authored files from the response
     */
    setBreakpointsResponse(response: ISetBreakpointsResponseBody, requestSeq: number): void;
    /**
     * Apply sourcemapping to the stacktrace response
     */
    stackTraceResponse(response: IInternalStackTraceResponseBody): Promise<void>;
    fixSourceLocation(sourceLocation: ISourceLocation | IInternalStackFrame): Promise<void>;
    /**
     * Get the existing handle for this script, identified by runtime scriptId, or create a new one
     */
    private getSourceReferenceForScriptPath(mappedPath, contents);
    scriptParsed(pathToGenerated: string, sourceMapURL: string): Promise<string[]>;
    breakpointResolved(bp: DebugProtocol.Breakpoint, scriptPath: string): void;
    scopesResponse(pathToGenerated: string, scopesResponse: IScopesResponseBody): void;
    private mapScopeLocations(pathToGenerated, scope);
    mapToGenerated(authoredPath: string, line: number, column: number): Promise<MappedPosition>;
    mapToAuthored(pathToGenerated: string, line: number, column: number): Promise<MappedPosition>;
    getGeneratedPathFromAuthoredPath(authoredPath: string): Promise<string>;
    allSources(pathToGenerated: string): Promise<string[]>;
    allSourcePathDetails(pathToGenerated: string): Promise<ISourcePathDetails[]>;
    private wait();
    private isRuntimeScript(scriptPath);
    private fixPathCasing(str);
}
