import { Store } from '@storefront/flux-capacitor'; import StoreFront from '../..'; import UrlService from '../../services/url'; import Configuration from '../configuration'; declare class UrlBeautifier implements UrlBeautifier.SimpleBeautifier { routes: UrlService.Routes; config: UrlBeautifier.Configuration; appConfig: Configuration; beautifiers: UrlBeautifier.Beautifiers; constructor(routes: UrlService.Routes, config: UrlBeautifier.Configuration, appConfig: Configuration); parse(url: string): { route: string; request: T; }; build(type: string, request: T): string; static validateToken(token: string, keys: string[]): void; static extractAppRoute({ query, pathname }: { query: string; pathname: string; }, route: string): string; } declare namespace UrlBeautifier { interface SimpleBeautifier { parse(url: string): { route: string; request: T; }; build(type: string, request: T): any; } interface Factory { (app: StoreFront, routes: { [key: string]: string; }): SimpleBeautifier; } interface Configuration { refinementMapping?: any[]; variantMapping?: any[]; params?: { page?: string; pageSize?: string; refinements?: string; sort?: string; collection?: string; }; queryToken?: string; suffix?: string; useReferenceKeys?: boolean; navigations?: any; details?: UrlBeautifier.DetailsBeautifierParams; } interface DetailsBeautifierParams { params: { area: string; collection: string; }; } interface Url { query: string; path: string; } interface SearchUrlState { query?: string; page: number; pageSize: number; refinements: Refinement[]; sort: Store.Sort; collection: string; } interface DetailsUrlState { data: Store.Product; variants: ValueRefinement[]; } type Refinement = ValueRefinement | RangeRefinement; interface ValueRefinement extends BaseRefinement { value: string; } interface RangeRefinement extends BaseRefinement { low: number; high: number; } interface BaseRefinement { field: string; } interface Parser { parse: (url: string) => T; } interface Generator { build: (request: T) => string; } type Beautifier = Parser & Generator; interface Beautifiers { search: Beautifier; navigation: Beautifier; details: Beautifier; [key: string]: Beautifier; } } export default UrlBeautifier;