/**
 * @module Collection
 */
import type { ISerderRegister, ISerializable } from "../../serde/contracts/_module-exports.js";
import { type ISerializedError, type OneOrMore } from "../../utilities/_module-exports.js";
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class CollectionError extends Error implements ISerializable<ISerializedError> {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
    serialize(): ISerializedError;
}
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class UnexpectedCollectionError extends CollectionError {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
}
/**
 * The error is thrown when the item is not found.
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class ItemNotFoundCollectionError extends CollectionError {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
}
/**
 * The error is thrown when multiple items are found.
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class MultipleItemsFoundCollectionError extends CollectionError {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
}
/**
 * The error is thrown when calling a method that needs all items to be of a specific type. For example, the `sum` method requires all items to be numbers.
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class TypeCollectionError extends CollectionError {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
}
/**
 * The error is thrown when calling a method that needs the collection not to be empty. For example, the `average` method requires the collection not to be empty.
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare class EmptyCollectionError extends CollectionError {
    static deserialize(deserializedValue: ISerializedError): CollectionError;
    constructor(message: string, cause?: unknown);
}
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare const COLLECTION_ERRORS: {
    readonly Base: typeof CollectionError;
    readonly Unexpected: typeof UnexpectedCollectionError;
    readonly ItemNotFound: typeof ItemNotFoundCollectionError;
    readonly MultipleItemsFound: typeof MultipleItemsFoundCollectionError;
    readonly Type: typeof TypeCollectionError;
    readonly Empty: typeof EmptyCollectionError;
};
/**
 * The `registerCollectionErrorsToSerde` function registers all `ICollection` related errors with `ISerderRegister`, ensuring they will properly be serialized and deserialized.
 *
 * IMPORT_PATH: `"@daiso-tech/core/collection/contracts"`
 * @group Errors
 */
export declare function registerCollectionErrorsToSerde(serde: OneOrMore<ISerderRegister>): void;
