import { S as SiziumResponse, P as PackageInfo } from './shared/core.Cm22qaRF.mjs';
export { b as PackageJSON, R as RegistryPackageJSON, a as SiziumError } from './shared/core.Cm22qaRF.mjs';
export { SiziumLocal } from './search/local.mjs';
export { SiziumRegistry } from './search/registry.mjs';
import '@schemastore/package';

declare const getInputType: (value: string) => Promise<"url" | "json" | "path" | "string">;

declare const FILTER_ALPHABET_TYPE: {
    readonly ZTOA: "ztoa";
    readonly ATOZ: "atoz";
};
declare const FILTER_TYPE: {
    readonly SIZE: "size";
    readonly LEVEL: "level";
    readonly DEPENDENCES_SIZE: "dep-size";
    readonly DEPENDENCES_COUNT: "dep-count";
    readonly ZTOA: "ztoa";
    readonly ATOZ: "atoz";
};
type FilterType = typeof FILTER_TYPE[keyof typeof FILTER_TYPE];
type FilterAlphabetType = typeof FILTER_ALPHABET_TYPE[keyof typeof FILTER_ALPHABET_TYPE];
type SiziumFilteredResponse = SiziumResponse & {
    filtered: PackageInfo[];
};
/**
 * A class to filter and sort package information based on various criteria.
 */
declare class SiziumFilter {
    #private;
    /**
     * Type of filter
     */
    type: {
        readonly SIZE: "size";
        readonly LEVEL: "level";
        readonly DEPENDENCES_SIZE: "dep-size";
        readonly DEPENDENCES_COUNT: "dep-count";
        readonly ZTOA: "ztoa";
        readonly ATOZ: "atoz";
    };
    /**
     * NOTE: This VALUE must be getter and setter for return error if undefined
     */
    /**
     * The package information to be filtered and sorted.
     */
    set value(value: SiziumResponse);
    get value(): SiziumResponse;
    constructor(value?: SiziumResponse);
    /**
     * Sorts the packages by their unpacked size in descending order.
     *
     * @returns {this} The instance of `SiziumFilter` to allow method chaining.
     * @throws An error if `this.value` is undefined.
     */
    sortBySize(): this;
    /**
     * Sorts the packages alphabetically by name.
     *
     * @param   {FilterAlphabetType} type - The sorting order, either `'atoz'` (A-Z) or `'ztoa'` (Z-A). Default is `'atoz'`.
     * @returns {this}                    The instance of `SiziumFilter` to allow method chaining.
     * @throws An error if `this.value` is undefined.
     */
    sortByName(type?: FilterAlphabetType): this;
    /**
     * Sorts the packages by the total number of dependencies (both dependencies and devDependencies) in descending order.
     *
     * @returns {this} The instance of `SiziumFilter` to allow method chaining.
     * @throws An error if `this.value` is undefined.
     */
    sortByDependenceSize(): this;
    /**
     * Sorts the packages by the number of direct dependencies in descending order.
     *
     * @returns {this} The instance of `SiziumFilter` to allow method chaining.
     * @throws An error if `this.value` is undefined.
     */
    sortByDependenceCount(): this;
    /**
     * Sorts the packages by the level of dependencies in ascending order.
     *
     * @returns {this} The instance of `SiziumFilter` to allow method chaining.
     * @throws An error if `this.value` is undefined.
     */
    sortByDependenceLevel(): this;
    /**
     * Sorts the packages based on the given filter type.
     *
     * @param   {FilterType}    [type] - The filter type.
     * @returns {PackageInfo[]}        Resolves to an array of `PackageInfo` sorted by the given filter type.
     * @throws An error if `this.value` is undefined.
     */
    sort(type?: FilterType): this;
    /**
     * Filters the packages by the given filter string.
     * If no filter string is given, the original package list is returned.
     *
     * @param   {string}                 filter - The filter string.
     * @returns {SiziumFilteredResponse}        An object with the original package list and a filtered list of packages
     *                                          that have a name that matches the given filter string (case-insensitive).
     * @throws An error if `this.value` is undefined.
     */
    filter(filter: string): SiziumFilteredResponse;
    /**
     * Runs the filter and/or sort on the package list.
     *
     * @param   {object}                                  [opts]        - An object with options for the filter and/or sort.
     * @param   {string}                                  [opts.filter] - A string to filter the packages by name.
     * @param   {FilterType}                              [opts.sort]   - The type of sorting to apply to the package list.
     *                                                                  If not provided, the default sorting is by package size.
     * @returns {SiziumFilteredResponse | SiziumResponse}               An object with the filtered and/or sorted package list.
     */
    run(opts?: {
        filter?: string;
        sort?: FilterType;
    }): SiziumFilteredResponse | SiziumResponse;
    /**
     * Finds a package in the package list by its name and/or version.
     * If only the name is given, the first package with that name is returned.
     * If the version is also given, the package with that name and version is returned.
     * If no package is found, undefined is returned.
     *
     * @param   {object|string}         input - The input to search for. Can be a string with the name of the package or an object with the name and/or version.
     * @returns {PackageInfo|undefined}       The package that matches the input or undefined if no package is found.
     * @example
     * find( 'chalk' ) // finds the latest version of the chalk package
     * @example
     * find( 'chalk@^5' ) // finds the latest version of the chalk package that satisfies the version constraint
     * @example
     * find( { name: 'chalk', version: '5.0.0' } ) // finds the chalk package with version 5.0.0
     * @example
     * find( { name: 'chalk', version: '^4.0.0' } ) // finds the chalk package with a version that satisfies the version constraint
     */
    find(input: {
        name: string;
        version?: string;
    } | string): PackageInfo | undefined;
}

/**
 * Represents the main class for handling package size.
 *
 * @example
 * const size = new Sizium( 'chalk' )
 * const data = await size.get()
 *
 * console.log(data) // all data
 * console.log(data.size) // total size on bytes
 * @example
 * // Directory input
 * const size = new Sizium( './' )
 * const data = await size.get()
 * @example
 * // package.json input
 * const size = new Sizium( './package.json' )
 * const data = await size.get()
 * @example
 * // remote package.json input
 * const size = new Sizium( 'https://raw.githubusercontent.com/chalk/chalk/refs/heads/main/package.json' )
 * const data = await size.get()
 * @example
 * // package.json string input
 * const pkg = {name: 'chalk', ... }
 * const size = new Sizium(JSON.stringify(pkg) )
 * const data = await size.get()
 */
declare class Sizium {
    #private;
    input: string;
    inputType: Awaited<ReturnType<typeof getInputType>>;
    pkg: SiziumResponse | undefined;
    filter: SiziumFilter;
    constructor(input: string);
    /**
     * Retrieves the package information based on the input.
     * It uses either the registry or local search mechanism depending on the input type.
     *
     * @returns {Promise<SiziumResponse>} A promise that resolves with the package response data.
     * @see https://sizium.pigeonposse.com/guide/core/api#siziumresponse
     */
    get(): Promise<SiziumResponse>;
}
/**
 * Retrieves the size information of a given package.
 *
 * @param   {string}                  input - The input string representing a package name, path, or URL.
 * @returns {Promise<SiziumResponse>}       A promise that resolves with the package response data.
 * @example
 * const data = await getPackageSize( 'chalk' )
 *
 * console.log(data) // all data
 * console.log(data.size) // total size on bytes
 */
declare const getPackageSize: (input: string) => Promise<SiziumResponse>;

export { FILTER_TYPE, PackageInfo, Sizium, SiziumFilter, SiziumResponse, getPackageSize };
export type { FilterType };
