/**
 * @file Public type surface for `packages/*` modules — the `PackageJson` shape
 *   (npm-extended with a `socket` field) plus option bags consumed across
 *   `edit` / `manifest` / `normalize` / `operations` / `provenance` /
 *   `licenses`. Pure types, no runtime side effects.
 */
import type { CategoryString } from '../eco/types';
type PackageExports = {
    [path: string]: unknown;
};
export type EditablePackageJson = import('./edit').EditablePackageJsonInstance;
/**
 * Extended PackageJson type based on NPMCliPackageJson.Content with
 * Socket-specific additions.
 *
 * @extends NPMCliPackageJson.Content (from @npmcli/package-json)
 *
 * @property socket - Optional Socket.dev specific configuration.
 */
export type PackageJson = {
    [key: string]: unknown;
    name?: string | undefined;
    version?: string | undefined;
    description?: string | undefined;
    main?: string | undefined;
    module?: string | undefined;
    types?: string | undefined;
    typings?: string | undefined;
    bin?: string | Record<string, string> | undefined;
    author?: string | {
        name?: string;
        email?: string;
        url?: string;
    } | undefined;
    contributors?: Array<string | {
        name?: string;
        email?: string;
        url?: string;
    }> | undefined;
    maintainers?: Array<string | {
        name?: string;
        email?: string;
        url?: string;
    }> | undefined;
    repository?: string | {
        type?: string;
        url?: string;
        directory?: string;
    } | undefined;
    homepage?: string | undefined;
    bugs?: string | {
        url?: string;
        email?: string;
    } | undefined;
    license?: string | undefined;
    licenses?: Array<{
        type?: string;
        url?: string;
    }> | undefined;
    scripts?: Record<string, string> | undefined;
    dependencies?: Record<string, string> | undefined;
    devDependencies?: Record<string, string> | undefined;
    peerDependencies?: Record<string, string> | undefined;
    optionalDependencies?: Record<string, string> | undefined;
    bundledDependencies?: string[] | undefined;
    bundleDependencies?: string[] | undefined;
    overrides?: Record<string, string> | undefined;
    resolutions?: Record<string, string> | undefined;
    pnpm?: Record<string, unknown> | undefined;
    exports?: PackageExports | string | string[] | undefined;
    imports?: Record<string, unknown> | undefined;
    type?: 'module' | 'commonjs' | undefined;
    private?: boolean | undefined;
    publishConfig?: Record<string, unknown> | undefined;
    files?: string[] | undefined;
    engines?: Record<string, string> | undefined;
    os?: string[] | undefined;
    cpu?: string[] | undefined;
    packageManager?: string | undefined;
    workspaces?: string[] | {
        packages?: string[];
    } | undefined;
    socket?: {
        categories?: CategoryString | CategoryString[];
        interop?: string | string[];
        [key: string]: unknown;
    } | undefined;
};
export type SaveOptions = {
    ignoreWhitespace?: boolean | undefined;
    sort?: boolean | undefined;
};
export type EditablePackageJsonOptions = {
    normalize?: boolean | undefined;
    path?: string | undefined;
    preserve?: string[] | readonly string[] | undefined;
    create?: boolean | undefined;
    data?: PackageJson | undefined;
};
export type ExtractOptions = {
    dest?: string | undefined;
    tmpPrefix?: string | undefined;
    signal?: AbortSignal | undefined;
    packumentCache?: Map<string, unknown> | undefined;
    preferOffline?: boolean | undefined;
};
export type NormalizeOptions = {
    preserve?: string[] | readonly string[] | undefined;
};
export type ReadPackageJsonOptions = NormalizeOptions & {
    editable?: boolean | undefined;
    normalize?: boolean | undefined;
    throws?: boolean | undefined;
};
export type ProvenanceOptions = {
    signal?: AbortSignal | undefined;
    timeout?: number | undefined;
};
export type LicenseNode = {
    license: string;
    exception?: string | undefined;
    inFile?: string | undefined;
    plus?: boolean | undefined;
};
export type PacoteOptions = {
    signal?: AbortSignal | undefined;
    packumentCache?: Map<string, unknown> | undefined;
    preferOffline?: boolean | undefined;
    fullMetadata?: boolean | undefined;
};
export {};
