import React from 'react';
import { NewComponentProps as WithActionsPropsType } from './actions/withActions';
import ControlledPropsType from './controlled/ControlledPropsType';
import FetchArgs from './FetchArgs';
import Page from './Page';
export declare type RequiredChildComponentProps<T> = Pick<ControlledPropsType<T>, 'fetchArgs' | 'error' | 'hasError' | 'itemModel' | 'loading' | 'onFetchArgsChange' | 'page'> & Pick<WithActionsPropsType<T>, 'onRefreshRequired'>;
export interface NewComponentProps<T> {
    fetch: (fetchArgs: FetchArgs, fetchOptions: FetchOptions, reason: FetchReason) => Promise<Page<T>> | Page<T>;
}
export interface FetchOptions {
    signal?: AbortSignal;
}
export declare enum FetchReason {
    FIRST_TIME_FETCH = 0,
    FETCH_ARGS_CHANGE = 1,
    REFRESH_REQUIRED = 2
}
export declare type PropsType<T, P extends RequiredChildComponentProps<T>> = Omit<P, 'error' | 'hasError' | 'loading' | 'onRefreshRequired' | 'page'> & NewComponentProps<T>;
declare const withPageInState: <T, P extends RequiredChildComponentProps<T>>(Child: React.ComponentType<P>) => React.ComponentType<PropsType<T, P>>;
export default withPageInState;
//# sourceMappingURL=withPageInState.d.ts.map