/**
 * @module Redirect
 */
import { ClientApplication } from '../../../client';
import { ActionSet } from '../../helper';
import { ComplexDispatch, Group, MetaAction } from '../../types';
import { ErrorAction } from '../../Error';
import { Action, ActionType, AdminPayload, CreateResource, LocalPayload, ProductVariantResource, RemotePayload, ResourceInfo, Section } from './types';
export declare const GROUP: Group;
export interface ActionBase extends MetaAction {
    readonly group: typeof GROUP;
}
export interface AdminPathAction extends ActionBase {
    readonly type: typeof ActionType.ADMIN_PATH;
    readonly payload: LocalPayload;
}
export interface AdminSectionAction extends ActionBase {
    readonly type: typeof ActionType.ADMIN_SECTION;
    readonly payload: AdminPayload;
}
export interface AppAction extends ActionBase {
    readonly type: typeof ActionType.APP;
    readonly payload: LocalPayload;
}
export interface RemoteAction extends ActionBase {
    readonly type: typeof ActionType.REMOTE;
    readonly payload: RemotePayload;
}
export declare type RedirectAction = AdminPathAction | RemoteAction | AppAction | AdminSectionAction | MetaAction;
export declare function isResourcePayload(resource: ResourceInfo | object): resource is ResourceInfo;
export declare function isCreateResourcePayload(resource: CreateResource | object): resource is CreateResource;
export declare function isProductVariantResourcePayload(resource: ProductVariantResource | object): resource is ProductVariantResource;
export declare function isProductVariantCreateResourcePayload(resource: ProductVariantResource | object): resource is ProductVariantResource & {
    variant: CreateResource;
};
export declare function toAdminPath(payload: LocalPayload): AdminPathAction;
export declare function toAdminSection(payload: AdminPayload): AdminSectionAction;
export declare function toRemote(payload: RemotePayload): RemoteAction;
export declare function toApp(payload: LocalPayload): AppAction;
export declare function isValidAdminResource(section?: Section): boolean;
export declare function validationError(action: RedirectAction): undefined | ErrorAction;
export declare class Redirect extends ActionSet implements ComplexDispatch<Section | string> {
    constructor(app: ClientApplication<any>);
    readonly payload: {
        id: string;
    };
    dispatch(action: Action.ADMIN_SECTION, payload: Section): ActionSet;
    dispatch(action: Action.APP | Action.ADMIN_PATH | Action.REMOTE, payload: string): ActionSet;
}
export declare function create(app: ClientApplication<any>): Redirect;
