import { Observable } from 'rxjs';
import { InjectionToken } from '@angular/core';
/**
 * Token for resolving page object data
 */
export declare const QD_PAGE_OBJECT_RESOLVER_TOKEN: InjectionToken<string>;
/**
 * Represents a data resolver for managing page object data
 *
 * To trigger the resolver, the Angular Router must be utilized. The resolver listens to routing events and executes its logic based on the defined conditions (see `triggerOn` in the configuration).
 *
 * * @template T - T represents the entire object model
 */
export interface QdPageObjectResolver<T extends object> {
    /**
     * @description Sets the configuration for the resolver.
     */
    config?: QdPageObjectResolverConfig;
    /**
     * @description Resolves the data for the Page Object Header.
     */
    resolve(): Observable<T>;
    /**
     * Updates the metadata of the page object model. Can be invoked with an action and accepts a partial metadata object.
     */
    updateMetadata?(metadata: Partial<T>): void;
}
/**
 *  Config for the QdPageObjectResolver
 */
export interface QdPageObjectResolverConfig {
    /**
     * Specifies the conditions that determine when the resolver should be triggered.
     * This property can be especially useful when multiple route events lead to the same component instance.
     *
     * - **always**: The resolver runs on every navigation event, regardless of any changes.
     * - **paramsChange**: The resolver runs when route parameters (e.g., `id`) change.
     * - **pathParamsChange**: The resolver runs when the path segments in the route are updated.
     * - **queryParamsChange**: The resolver runs when query parameters (e.g., `?filter=active`) change.
     * - **paramsOrQueryParamsChange**: The resolver runs when either route parameters or query parameters change.
     * - **pathParamsOrQueryParamsChange**: The resolver runs when either the path segments or query parameters are updated.
     *
     * - This allows developers to define flexible rules for triggering the resolver during navigation.
     *
     * - @default 'pathParamsChange '
     */
    triggerOn?: 'always' | 'paramsChange' | 'pathParamsChange' | 'queryParamsChange' | 'paramsOrQueryParamsChange' | 'pathParamsOrQueryParamsChange';
}
//# sourceMappingURL=page-object-resolver.d.ts.map