type HeadersInitLike = Array<[string, string]> | Record<string, string> | Headers | null | undefined;
type IncomingHttpHeadersLike = Record<string, string | string[] | undefined> | undefined | null;
type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined> | undefined | null;
declare function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike, 
/**
 * Filter function to determine which headers from source to merge.
 *
 * Can be an array/iterable of header names to include, or a filter callback that takes a header name.
 */
sourceFilter?: Iterable<string> | null | undefined | ((headerName: string) => boolean)): Headers;
declare function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;
declare function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;

export { mergeHeaders, mergeNodeHttpHeaders };
export type { HeadersInitLike, IncomingHttpHeadersLike, OutgoingHttpHeadersLike };
