import { AnyAddress, GbrAddress } from "./types";
import { SelectorNode, Targets, OutputFields, UsaOutputFields, LineCount, NamedFields } from "./types";
export declare const numberOfLines: (targets: Targets) => LineCount;
export declare const join: (list: (string | unknown)[]) => string;
export declare const charArrayLength: (arr: string[]) => number;
interface MaxLengthOptions extends MaxLineConfig {
    lineCount: number;
}
export declare const toMaxLengthLines: (l: string[], options: MaxLengthOptions) => [string, string, string];
export type MaxLengths = [number?, number?, number?];
interface MaxLengthOptions {
}
export declare const toAddressLines: (lineCount: LineCount, address: AnyAddress, options: MaxLineConfig) => [string, string, string];
type KeysOfUnion<T> = T extends unknown ? keyof T : never;
export declare const extract: (a: AnyAddress, attr: KeysOfUnion<AnyAddress>) => string;
export declare const getFields: (o: PopulateAddressOptions) => OutputFields;
export interface MaxLineConfig {
    lines?: LineCount;
    maxLineOne?: number;
    maxLineTwo?: number;
    maxLineThree?: number;
}
export interface PopulateConfig extends MaxLineConfig {
    scope: HTMLElement | Document;
    removeOrganisation?: boolean;
    populateCounty?: boolean;
}
export interface PopulateAddressOptions {
    outputFields: OutputFields;
    names?: NamedFields;
    labels?: NamedFields;
    address: AnyAddress;
    config: PopulateConfig;
}
export interface MutateConfig extends MaxLineConfig, Pick<PopulateConfig, "removeOrganisation" | "populateCounty"> {
    populateCounty?: boolean;
}
interface PopulateAddress {
    (options: PopulateAddressOptions): void;
}
export declare const searchFields: (outputFields: OutputFields, scope: HTMLElement | Document) => OutputFields;
export declare const searchNames: (names: NamedFields, scope: HTMLElement | Document) => OutputFields;
export declare const searchLabels: (labels: NamedFields, scope: HTMLElement | Document) => OutputFields;
interface MutateAddress {
    (address: AnyAddress, config: MutateConfig): AnyAddress;
}
export declare const mutateAddress: MutateAddress;
export declare const populateAddress: PopulateAddress;
export declare const removeOrganisation: (address: GbrAddress) => GbrAddress;
export declare const getCountyIsoSelector: (a: OutputFields | UsaOutputFields) => SelectorNode | null;
export declare const getCountySelector: (a: OutputFields | UsaOutputFields) => SelectorNode | null;
export declare const getCountyIso: (a: AnyAddress) => string;
export declare const getCounty: (a: AnyAddress) => string;
export {};
