import type { DrillDownResult, ResultDetails, SearchResponse, SearchResult } from "@/types/SearchTypes";
export declare const getHttpClient: () => import("axios").AxiosInstance;
export declare const resetHttpClient: () => void;
export declare const encodeQueryParams: (params: Record<string, any>) => string;
/**
 * Search for properties, addresses, persons, etc.
 * Uses the Ambita Realty API to search multiple categories in parallel.
 * @param query - Search query string
 * @param options - Search options (municipalityKey, etc.)
 * @returns Promise with search results
 */
export declare const search: (query: string, options?: {
    municipalityKey?: string;
    isLoggedIn?: boolean;
}) => Promise<SearchResponse>;
/**
 * Transform API response objects to SearchResult format
 * Maps Ambita Realty API fields to our internal SearchResult format
 * @param objects - Array of objects from API
 * @param typeHint - Optional hint about the type of results (e.g., 'cooperatives', 'persons')
 */
export declare const transformApiResults: (objects: any[], typeHint?: string) => SearchResult[];
/**
 * Get address numbers for a street
 * Uses the Ambita Realty API: /streets/{streetKey}?positions=true
 * @param streetKey - The key of the street
 * @param originalQuery - Optional original search query to filter addresses (e.g., "landskronaveien 483")
 * @returns Promise with drill-down results
 */
export declare const getAddressNumbers: (streetKey: string, originalQuery?: string) => Promise<DrillDownResult>;
/**
 * Get cadastres and shares for an address (grouped results)
 * Uses the Ambita Realty API to get both cadastres and shares linked to an address
 * This matches the old system behavior where both are shown in groups
 * @param addressKey - The key of the address
 * @param addressResult
 * @returns Promise with drill-down results containing groups
 */
/**
 * Fetch the cadastres and shares link URLs for a given address.
 * Returns null if the links cannot be found.
 */
export declare const getAddressGroupLinks: (addressKey: string, addressResult?: SearchResult) => Promise<{
    cadastres?: string;
    shares?: string;
} | null>;
export declare const getCadastresForAddress: (addressKey: string, addressResult?: SearchResult) => Promise<DrillDownResult>;
/**
 * Get shares for a cadastre/property
 * Uses the Ambita Realty API: /cadastres/{cadastreKey}?positions=true
 * @param cadastreKey - The key of the cadastre
 * @returns Promise with drill-down results
 */
export declare const getSharesForCadastre: (cadastreKey: string) => Promise<DrillDownResult>;
/**
 * Get addresses/units on a cadastre (ground cadastre)
 * Uses the Ambita Realty API: /cadastres/{cadastreKey}/addresses/?page=1&pagesize=999
 * This shows all addresses/units that exist on a ground cadastre property
 * @param cadastreKey - The key of the cadastre
 * @returns Promise with drill-down results
 */
export declare const getUnitsOnCadastre: (cadastreKey: string) => Promise<DrillDownResult>;
/**
 * Get properties owned by a person
 * @param personKey - The key of the person/owner
 * @param personResult
 * @returns Promise with drill-down results (may include groups)
 */
export declare const getPersonProperties: (personKey: string, personResult?: SearchResult) => Promise<DrillDownResult>;
/**
 * Get properties owned by an organization
 * @param organizationKey - The key of the organization
 * @param organizationResult
 * @returns Promise with drill-down results (may include groups)
 */
export declare const getOrganizationProperties: (organizationKey: string, organizationResult?: SearchResult) => Promise<DrillDownResult>;
/**
 * Get shares for a housing cooperative
 * @param cooperativeKey - The key of the cooperative
 * @returns Promise with drill-down results
 */
export declare const getCooperativeShares: (cooperativeKey: string, originalQuery?: string) => Promise<DrillDownResult>;
/**
 * Get cadastres for a place (municipality/area)
 * @param placeKey - The key of the place
 * @returns Promise with drill-down results
 */
export declare const getPlaceCadastres: (placeKey: string) => Promise<DrillDownResult>;
/**
 * Get document details (cadastre document or cooperative document)
 * @param documentKey - The key of the document
 * @param documentType - Type of document (CADASTRE_DOCUMENT or COOPERATIVE_DOCUMENT)
 * @returns Promise with drill-down results
 */
export declare const getDocumentDetails: (documentKey: string, documentType?: string) => Promise<DrillDownResult>;
/**
 * Get property details for a cadastre or share
 * @param propertyKey - The key of the property (cadastre or share)
 * @returns Promise with property details
 */
export declare const getPropertyDetails: (propertyKey: string) => Promise<ResultDetails>;
/**
 * Get accountant/property management data for an owner
 * Uses the Infoland Flex API: /infoland/flex/accountantdata?ownerKey=...
 * This shows the property management company (forretningsfører) information
 * @param ownerKey - The key of the owner (person or organization)
 * @returns Promise with accountant data or null
 */
export declare const getAccountantData: (ownerKey: string) => Promise<any | null>;
/**
 * Search for documents by year-serial number pattern (matching old system behavior).
 * Detects patterns like "2024 12345" (share doc) or "0301 2024 67" (cadastre doc).
 */
export declare const searchDocuments: (query: string) => Promise<SearchResult[]>;
declare const _default: {
    search: (query: string, options?: {
        municipalityKey?: string;
        isLoggedIn?: boolean;
    }) => Promise<SearchResponse>;
    searchDocuments: (query: string) => Promise<SearchResult[]>;
    getAddressNumbers: (streetKey: string, originalQuery?: string) => Promise<DrillDownResult>;
    getAddressGroupLinks: (addressKey: string, addressResult?: SearchResult) => Promise<{
        cadastres?: string;
        shares?: string;
    } | null>;
    getCadastresForAddress: (addressKey: string, addressResult?: SearchResult) => Promise<DrillDownResult>;
    getSharesForCadastre: (cadastreKey: string) => Promise<DrillDownResult>;
    getUnitsOnCadastre: (cadastreKey: string) => Promise<DrillDownResult>;
    getPropertyDetails: (propertyKey: string) => Promise<ResultDetails>;
    getPersonProperties: (personKey: string, personResult?: SearchResult) => Promise<DrillDownResult>;
    getOrganizationProperties: (organizationKey: string, organizationResult?: SearchResult) => Promise<DrillDownResult>;
    getCooperativeShares: (cooperativeKey: string, originalQuery?: string) => Promise<DrillDownResult>;
    getPlaceCadastres: (placeKey: string) => Promise<DrillDownResult>;
    getDocumentDetails: (documentKey: string, documentType?: string) => Promise<DrillDownResult>;
    getAccountantData: (ownerKey: string) => Promise<any | null>;
    resetHttpClient: () => void;
};
export default _default;
