export interface SearchQuery {
    address?: SearchAddress;
    cadastre?: Cadastre;
    owner?: Owner;
    share?: Share;
    housingDataKey?: string;
}
export interface SearchAddress {
    houseLetter?: string;
    houseNumber?: string;
    key?: string;
    postalCode?: string;
    postalPlace?: string;
    street?: string;
}
export interface Cadastre {
    bnr?: string;
    fnr?: string;
    gnr?: string;
    knr?: string;
    snr?: string;
}
export interface Owner {
    key?: string;
    name?: string;
    organizationNumber?: string;
    socialSecurityNumber?: string;
}
export interface Share {
    organizationNumber?: string;
    shareNumber?: string;
}
export interface ItemKeys {
    address?: string;
    cooperativeinternal?: string;
    share?: string;
    cadastre?: string;
    ownerKey?: string;
    housingDataKey?: string;
    propertyCode?: string;
    propertyNumber?: string;
    supplierId?: string;
}
export interface InfolandAPI {
    itemKeys: ItemKeys;
}
export interface SearchResult {
    id: string;
    key: string;
    title: string;
    subTitle?: string;
    type: 'CADASTRE' | 'SHARE' | 'OWNER' | 'ADDRESS' | 'PLACE' | 'ORGANIZATION' | 'COOPERATIVE' | 'DOCUMENT' | 'HOUSING' | 'PERSON';
    propertyId?: string;
    isHistorical?: boolean;
    hasHousingCooperative?: boolean;
    owners?: SearchFacet[];
    addresses?: SearchResult[];
    disabled?: boolean;
    position?: GeoJSONPoint;
    links?: SearchResultLinks;
    metadata?: any;
    year?: string;
    serialNumber?: string;
    documentType?: string;
    organizationNumber?: string;
    socialSecurityNumber?: string;
    shareCount?: number;
}
export interface GeoJSONPoint {
    type: 'Point';
    coordinates: [number, number];
}
export interface SearchResultLinks {
    cadastres?: {
        href: string;
    };
    shares?: {
        href: string;
    };
    addresses?: {
        href: string;
    };
    housing?: {
        href: string;
    };
    documents?: {
        href: string;
    };
    self?: {
        href: string;
    };
    ownedCadastres?: {
        href: string;
    };
    ownedShares?: {
        href: string;
    };
}
export interface SearchFacet {
    key: string;
    title: string;
    subTitle?: string;
    propertyId?: string;
    type: string;
    owners?: Owner[];
}
export interface SearchResults {
    results?: SearchResult[];
}
export interface SearchResponse {
    cadastres?: SearchResult[];
    addresses?: SearchResult[];
    persons?: SearchResult[];
    organizations?: SearchResult[];
    cooperatives?: SearchResult[];
    places?: SearchResult[];
    shares?: SearchResult[];
    documents?: SearchResult[];
    cadastreAddresses?: SearchResult[];
}
export interface SearchCategory {
    type: string;
    label: string;
    results: SearchResult[];
    count: number;
    disabled?: boolean;
}
export type SearchStepType = 'home' | 'category' | 'street' | 'address' | 'number' | 'property' | 'share' | 'cadastre' | 'housing' | 'group' | 'final';
export interface SearchStep {
    type: SearchStepType;
    label: string;
    value: string;
    data?: SearchResult | SearchCategory | null;
}
export interface RealtyValidation {
    error: {
        returnCode: number;
        message: string;
    };
    info: {
        realtyCode: number;
        message: string;
        links?: Array<Links>;
    };
    item: {
        validCadastre: boolean;
        links: {
            cadastre: Links;
        };
    };
}
interface Links {
    rel: string;
    href: string;
    nickname: string;
    key: string;
}
export interface DrillDownResult {
    results: SearchResult[];
    nextStepType: SearchStepType | null;
    nextStepLabel: string;
    isFinalStep: boolean;
    groups?: SearchResultGroup[];
    intermediateResult?: SearchResult;
    pagination?: {
        next?: string;
        previous?: string;
    };
}
export interface SearchResultGroup {
    id: string;
    type: string;
    label: string;
    count: number;
    hasMore?: boolean;
    results: SearchResult[];
    isLoading?: boolean;
    error?: boolean;
}
export type SortOption = 'relevance' | 'name' | 'distance' | 'date';
export type ViewMode = 'list' | 'grid';
export type ViewDensity = 'compact' | 'comfortable' | 'detailed';
export interface DisplayPreferences {
    sortBy: SortOption;
    viewMode: ViewMode;
    viewDensity: ViewDensity;
}
export interface DrillableResult extends SearchResult {
    canDrillDown: boolean;
    childCount?: number;
}
export interface QueryHelperGroup {
    type: string;
    title: string;
    helpers: QueryHelper[];
}
export interface QueryHelper {
    type: string;
    title: string;
    steps?: QueryHelperStep[];
}
export interface QueryHelperStep {
    type: string;
    title: string;
    shortTitle: string;
    maxLength?: number;
    isOptional?: boolean;
    inputType?: 'text' | 'number' | 'tel';
    inputWidth?: string;
    focused: boolean;
    current: boolean;
    visible: boolean;
    input: {
        value: string;
    };
}
export interface ResultDetails {
    key: string;
    title: string;
    subtitle?: string;
    owners?: OwnerInfo[];
    conveyance?: ConveyanceInfo;
    management?: ManagementInfo;
    validation?: ValidationInfo;
}
export interface OwnerInfo {
    name: string;
    share?: string;
}
export interface ConveyanceInfo {
    dateRegistered?: {
        timestamp: number;
        formatted?: string;
    };
    purchasePrice?: number;
    conveyanceType?: {
        code?: string;
        text: string;
    };
}
export interface ManagementInfo {
    organizationNumber?: string;
    name?: string;
}
export interface ValidationInfo {
    showInfo: boolean;
    message?: string;
    redirect?: boolean;
    links?: Array<{
        key: string;
        query: string;
    }>;
}
export declare const HELPER_TRANSLATIONS: Record<string, string>;
export {};
