import { BaseTool } from '../base.js';
import { OneMapService } from '../../services/onemap.js';
import { PostalCodeService } from '../../services/postalCode.js';
import { SingaporeTimeService } from '../../services/time.js';
import { FuzzySearchService } from '../../services/fuzzySearch.js';
export declare class LocationSearchTool extends BaseTool {
    private oneMapService;
    private postalCodeService;
    private timeService;
    private fuzzySearchService?;
    constructor(oneMapService: OneMapService, postalCodeService: PostalCodeService, timeService: SingaporeTimeService, fuzzySearchService?: FuzzySearchService | undefined);
    getDefinitions(): ({
        name: string;
        description: string;
        inputSchema: {
            type: "object";
            properties: {
                query: {
                    type: string;
                    description: string;
                };
                maxResults: {
                    type: string;
                    description: string;
                    minimum: number;
                    maximum: number;
                    default: number;
                };
                enableFuzzySearch: {
                    type: string;
                    description: string;
                    default: boolean;
                };
                includeNearbyInfo: {
                    type: string;
                    description: string;
                    default: boolean;
                };
                userLocation: {
                    type: string;
                    description: string;
                    properties: {
                        latitude: {
                            type: string;
                        };
                        longitude: {
                            type: string;
                        };
                    };
                };
                postalCode?: undefined;
                latitude?: undefined;
                longitude?: undefined;
                radius?: undefined;
                includeNearbyAmenities?: undefined;
            };
            required: string[];
        };
    } | {
        name: string;
        description: string;
        inputSchema: {
            type: "object";
            properties: {
                postalCode: {
                    type: "string";
                    description: string;
                    pattern: string;
                };
                includeNearbyInfo: {
                    type: "boolean";
                    description: string;
                    default: boolean;
                };
                query?: undefined;
                maxResults?: undefined;
                enableFuzzySearch?: undefined;
                userLocation?: undefined;
                latitude?: undefined;
                longitude?: undefined;
                radius?: undefined;
                includeNearbyAmenities?: undefined;
            };
            required: string[];
        };
    } | {
        name: string;
        description: string;
        inputSchema: {
            type: "object";
            properties: {
                latitude: {
                    type: "number";
                    description: string;
                    minimum: number;
                    maximum: number;
                };
                longitude: {
                    type: "number";
                    description: string;
                    minimum: number;
                    maximum: number;
                };
                radius: {
                    type: "number";
                    description: string;
                    minimum: number;
                    maximum: number;
                    default: number;
                };
                includeNearbyAmenities: {
                    type: "boolean";
                    description: string;
                    default: boolean;
                };
                query?: undefined;
                maxResults?: undefined;
                enableFuzzySearch?: undefined;
                includeNearbyInfo?: undefined;
                userLocation?: undefined;
                postalCode?: undefined;
            };
            required: string[];
        };
    })[];
    canHandle(toolName: string): boolean;
    execute(toolName: string, args: any): Promise<any>;
    private searchLocation;
    private resolvePostalCode;
    private reverseGeocode;
    private convertOneMapToLocationResult;
    private determineLocationTypes;
    private generateSearchSuggestions;
    private calculateDistance;
}
