import Configuration from '../configuration'; import Store from '../store'; declare namespace Payload { namespace History { interface State extends ProtoState { method: Function; request?: any; } interface ProtoState { url?: string; route?: string; shouldFetch?: boolean; } } namespace Fetch { interface Override { request?: any; buildAndParse?: boolean; } interface MorePastPurchaseRefinements extends Navigation.Id, Override { } interface MoreRefinements extends Navigation.Id, Override { } interface MoreProducts extends More, Override { } interface AutocompleteSuggestions extends SimpleQuery, Override { } interface AutocompleteProducts extends Autocomplete.Products, Override { } interface CollectionCount extends Collection.Name, Override { } interface Details extends Id, Override { } interface PastPurchases extends Partial, Override { } interface MorePastPurchases extends More, Override { } } interface More { amount: number; forward: boolean; } namespace Personalization { interface Biasing { field: string; value: string; bias: Store.Personalization.SingleBias; config?: Configuration.Personalization.RealTimeBiasing; } } interface Id { id: string; } namespace Component { interface Identifier extends Id { tagName: string; } interface State extends Identifier { state: object; } } namespace Collection { interface Name { collection: string; } interface Count extends Name { count: number; } } interface SimpleQuery { query: string; } interface Query { corrected?: string; related?: string[]; didYouMean?: string[]; rewrites?: string[]; original?: string; } interface Search extends Partial, Partial, Partial { /** * only for refinements * if true, replace refinements with the provided ones * if false, add the provided refinements */ clear?: boolean | string; } namespace Autocomplete { interface Products extends SimpleQuery { refinements: Payload.Autocomplete.Refinement[]; } interface Suggestions { suggestions: Store.Autocomplete.Suggestion[]; categoryValues: string[]; navigations: Store.Autocomplete.Navigation[]; } interface Refinement { field: string; value: string; } } namespace Navigation { interface Id { navigationId: string; } interface Refinement extends Navigation.Id { index: number; } interface MultipleRefinements extends Navigation.Id { indices: number[]; } interface AddRefinement extends Navigation.Id { range?: boolean; value?: string; low?: number; high?: number; } interface MoreRefinements extends Navigation.Id { refinements: Store.Refinement[]; selected: number[]; } } interface Page { previous: number; next: number; last: number; from: number; to: number; current?: number; } interface InfiniteScroll { isFetchingForward?: boolean; isFetchingBackward?: boolean; } interface Sort { labels?: string[]; options: Store.Sort[]; selected?: number; } } export default Payload;