/// <reference types="node" />
import { SourceUnit } from 'solidity-ast';
import { Node } from 'solidity-ast/node';
import { SolcInput, SolcOutput } from './solc/input-output';
import { SrcDecoder } from './solc/src-decoder';
import { LayoutGetter } from './solc/layout-getter';
import { Transformation, WithSrc } from './transformations/type';
import { ASTResolver } from './ast-resolver';
declare type Transformer = (sourceUnit: SourceUnit, tools: TransformerTools) => Generator<Transformation>;
interface ReadOriginal {
    (node: Node, type?: 'string'): string;
    (node: Node, type: 'buffer'): Buffer;
}
export interface TransformerTools {
    originalSource: string;
    originalSourceBuf: Buffer;
    readOriginal: ReadOriginal;
    resolver: ASTResolver;
    getData: (node: Node) => Partial<TransformData>;
    getLayout: LayoutGetter;
}
export interface TransformData {
}
interface TransformOptions {
    exclude?: (source: string) => boolean;
}
export declare class Transform {
    private state;
    private data;
    readonly decodeSrc: SrcDecoder;
    readonly getLayout: LayoutGetter;
    readonly resolver: ASTResolver;
    constructor(input: SolcInput, output: SolcOutput, options?: TransformOptions);
    apply(transform: Transformer): void;
    getData(node: Node): Partial<TransformData>;
    readOriginal(node: WithSrc, type?: 'string'): string;
    readOriginal(node: WithSrc, type: 'buffer'): Buffer;
    read(node: WithSrc): string;
    results(): {
        [file in string]: string;
    };
    asts(): SourceUnit[];
}
export {};
//# sourceMappingURL=transform.d.ts.map