/**
 * Search ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/search.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { FindEventResultList, FindMetadataResultList, FindPTZPositionResultList, FindRecordingResultList, JobToken, MediaAttributes, RecordingInformation, RecordingSummary, SearchState } from './interfaces/onvif';
import { Capabilities, EndSearch, EndSearchResponse, FindEvents, FindMetadata, FindPTZPosition, FindRecordings, GetEventSearchResults, GetMediaAttributes, GetMetadataSearchResults, GetPTZPositionSearchResults, GetRecordingInformation, GetRecordingSearchResults, GetRecordingSummary, GetSearchState } from './interfaces/search';
/**
 * Search service
 * @example
 * ```ts
 * const summary = await cam.search.getRecordingSummary();
 * const token = await cam.search.findRecordings({
 *   scope: { includedRecordings: ['RecordingToken_1'] },
 *   keepAliveTime: 'PT10S',
 * });
 * const results = await cam.search.getRecordingSearchResults({ searchToken: token });
 * await cam.search.endSearch({ searchToken: token });
 * ```
 */
export default class Search extends Service {
    constructor(onvif: Onvif);
    private static recordingTokensToBuild;
    private static searchScopeToBuild;
    private static ptzPositionFilterToBuild;
    private static metadataFilterToBuild;
    private static searchResultsRequestToBuild;
    /**
     * Returns the capabilities of the search service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Returns a summary of recorded data on the device.
     */
    getRecordingSummary(_options?: GetRecordingSummary): Promise<RecordingSummary>;
    /**
     * Returns detailed information about a recording.
     * @param options
     */
    getRecordingInformation({ recordingToken }: GetRecordingInformation): Promise<RecordingInformation>;
    /**
     * Returns media attributes valid at a specific point in time.
     * @param options
     */
    getMediaAttributes({ recordingTokens, time }: GetMediaAttributes): Promise<MediaAttributes[]>;
    /**
     * Starts a search for recordings matching the scope.
     * @param options
     */
    findRecordings({ scope, maxMatches, keepAliveTime }: FindRecordings): Promise<JobToken>;
    /**
     * Returns results from a recording search session.
     * @param options
     */
    getRecordingSearchResults(options: GetRecordingSearchResults): Promise<FindRecordingResultList>;
    /**
     * Starts a search for events in recorded data.
     * @param options
     */
    findEvents({ startPoint, endPoint, scope, searchFilter, includeStartState, maxMatches, keepAliveTime, }: FindEvents): Promise<JobToken>;
    /**
     * Returns results from an event search session.
     * @param options
     */
    getEventSearchResults(options: GetEventSearchResults): Promise<FindEventResultList>;
    /**
     * Starts a search for PTZ positions in recorded metadata.
     * @param options
     */
    findPTZPosition({ startPoint, endPoint, scope, searchFilter, maxMatches, keepAliveTime, }: FindPTZPosition): Promise<JobToken>;
    /**
     * Returns results from a PTZ position search session.
     * @param options
     */
    getPTZPositionSearchResults(options: GetPTZPositionSearchResults): Promise<FindPTZPositionResultList>;
    /**
     * Starts a search for metadata in recorded data.
     * @param options
     */
    findMetadata({ startPoint, endPoint, scope, metadataFilter, maxMatches, keepAliveTime, }: FindMetadata): Promise<JobToken>;
    /**
     * Returns results from a metadata search session.
     * @param options
     */
    getMetadataSearchResults(options: GetMetadataSearchResults): Promise<FindMetadataResultList>;
    /**
     * Returns the state of a search session.
     * @param options
     */
    getSearchState({ searchToken }: GetSearchState): Promise<SearchState>;
    /**
     * Ends a search session.
     * @param options
     */
    endSearch({ searchToken }: EndSearch): Promise<EndSearchResponse['endpoint']>;
}
