import type { NodePath, Node } from '@babel/traverse';
import type { Package } from '@embroider/shared-internals';
import { RewrittenPackageCache } from '@embroider/shared-internals';
import { ImportUtil } from 'babel-import-util';
import type * as Babel from '@babel/core';
export default interface State {
    importUtil: ImportUtil;
    generatedRequires: Set<Node>;
    removed: Set<Node>;
    calledIdentifiers: Set<Node>;
    jobs: (() => void)[];
    packageCache: RewrittenPackageCache;
    sourceFile: string;
    pathToOurAddon(moduleName: string): string;
    owningPackage(): Package;
    originalOwningPackage(): Package;
    cloneDeep(node: Node): Node;
    opts: {
        userConfigs: {
            [pkgRoot: string]: unknown;
        };
        globalConfig: {
            [key: string]: unknown;
        };
        owningPackageRoot: string | undefined;
        isDevelopingPackageRoots: string[];
        appPackageRoot: string;
        embroiderMacrosConfigMarker: true;
        importSyncImplementation: 'cjs' | 'eager';
        mode: 'compile-time' | 'run-time';
    };
}
export declare function initState(t: typeof Babel, path: NodePath<Babel.types.Program>, state: State): void;
