/**
 * Tipo utilizado para retornar um objeto que servirá para a montagem dos parâmetros de consulta da URL.
 * Para tanto, basta que a objeto a ser transformado em params seja uma instância que implemente
 * a interface QueryParams.
 * Ex.:
 * ```ts
 * interface SearchFilter extends QueryParams {
 *   productId?: number;
 *   productName?: string;
 *   categoryName?: string;
 * }
 *
 * class ProductsSearchComponent {
 *   readonly form = this._formBuilder.group(
 *     {
 *       productId: this._fb.control(null),
 *       productName: this._fb.control(null),
 *       categoryName: this._fb.control(null),
 *     }
 *   );
 *   ...
 *   productsSearch(): void{
 *    const searchFilter: SearchFilter = this.form.value;
 *
 *    this.api.products.get<Product[]>(() => searchFilter)
 *      .submit().pipe(take(1))
 *      .subscribe((next: Product[]) => this.productDataSource = next);
 *   }
 * }
 *
 * ```
 * @see QueryParams
 */
export declare type QueryParamsSupplier = () => QueryParams;
/**
 * Define um contrato a ser implementado por objetos que representem os parâmetros de uma URL.
 * Cada atributo definido será considerado um 'queryParam' da URL.
 *
 * @see QueryParamsSupplier
 * @see HttpMethodDispatcher
 */
export interface QueryParams {
    query?: string | number;
}
