import type { Workspace } from '../../pm/index.ts';
import type { ApiExposureConfig, DeplintClassifier, DeplintPackagePlacement } from '../package/index.ts';
import type { PeerBoundType } from './packageJsonEditor.ts';
import type { DeplintPackagePolicy } from './packagePolicy.ts';
import type { DeplintWorkspaceContext } from './types.ts';
export interface DeplintContextPhases {
    findFilesMs: number;
    importsMs: number;
    packageMetaMs: number;
}
export interface BuildWorkspaceContextOptions {
    /** Packages whose declarations may be retained without detected usage. */
    allowedPackages?: Set<string>;
    /** Config for the AEI classifier (`commands.apiExposure`), when `classifier` is `aei` or `aei-next`. */
    apiExposureConfig?: ApiExposureConfig;
    /** Dep-vs-peer classifier to attach to the context. Default: `legacy`. */
    classifier?: DeplintClassifier;
    exclude?: Set<string>;
    forceDeps?: Set<string>;
    forceDevs?: Set<string>;
    forcePeerOptional?: Map<string, boolean>;
    forcePeerWithDefault?: Set<string>;
    forcePeers?: Set<string>;
    /** Path to this workspace's own xy config file, when present. */
    localConfigPath?: string;
    /** Package policies from this workspace's own xy config only (not root merge). */
    localPackagePolicies?: Map<string, DeplintPackagePolicy>;
    peerRangeBound?: PeerBoundType;
    peerRangeForm?: 'broad' | 'shorthand';
    /** When provided, filled with phase timings for `--profile`. */
    phases?: DeplintContextPhases;
    /** Packages that must be declared, keyed by their required placement. */
    requiredPackages?: Map<string, DeplintPackagePlacement>;
    sourceExclude?: string[];
    terminalOverride?: boolean;
    workspaceNames?: Set<string>;
}
export declare function buildWorkspaceContext(workspace: Workspace, options?: BuildWorkspaceContextOptions): DeplintWorkspaceContext;
//# sourceMappingURL=snapshot.d.ts.map