import type { Arr, Merged } from '@toolbox-ts/types/defs/array';
import type { AnyDefined, DefinedPrimitive } from '@toolbox-ts/types';
import type { StringRecord } from '@toolbox-ts/types/defs/object';
import type { CombineOptions } from './types.js';
export declare const mergeConcat: (a: A, b: B) => Merged;
export declare const mergePrepend: (a: A, b: B) => Merged;
export interface MergeUniqueOpts {
keyFn?: (item: Merged[number]) => K;
end?: 'concat' | 'prepend';
}
export declare const mergeUnique: (a: A, b: B, { end, keyFn }?: MergeUniqueOpts) => Merged;
export interface CombineHandlers {
primitive: (curr: AnyDefined, next: DefinedPrimitive) => unknown;
array: (curr: Arr, next: Arr) => unknown;
object: (curr: StringRecord, next: StringRecord) => unknown;
objectType: (curr: AnyDefined, next: object) => unknown;
}
export declare const mergeCombine: (a: A, b: B, { handlers: handle, clone: cl }?: CombineOptions) => R;