import { ClientApplication } from '../client'; import { ActionSet } from './helper'; import { ErrorAction } from './Error/actions'; /** * Various action groups. * @public */ export declare enum Group { Button = "Button", ButtonGroup = "ButtonGroup", Cart = "Cart", Error = "Error", Features = "Features", Fullscreen = "Fullscreen", Toast = "Toast", Loading = "Loading", Modal = "Modal", Navigation = "Navigation", Print = "Print", TitleBar = "TitleBar", ResourcePicker = "Resource_Picker", ContextualSaveBar = "ContextualSaveBar", Scanner = "Scanner" } /** * @internal */ export declare enum ComponentType { Button = "Button", ButtonGroup = "ButtonGroup" } /** * Base action interface. * @remarks * All action implementations should inherit from this interface. * @internalremarks * Should we remove the extraProps definition here, pushing it on sub-types? * @public */ export interface AnyAction { type: any; [extraProps: string]: any; } export interface ClientInterface { name?: string; version?: string; } /** * @public */ export interface MetaAction extends AnyAction { clientInterface?: ClientInterface; readonly version: string; readonly group: string; readonly type: string; payload?: any; } /** * @public */ export interface ClickAction extends MetaAction { payload: { id: string; payload?: any; }; } /** * @public */ export interface ActionCallback { (data: any): void; } /** * @public */ export interface ErrorCallback { (data: ErrorAction): void; } /** * @public */ export interface UpdateSubscribe { (group: string, subgroups: string[]): void; } /** * @public */ export interface Unsubscribe { (): void; } /** * @public */ export interface ErrorSubscriber { (callback: ErrorCallback): Unsubscribe; } /** * @internal */ export interface ActionSubscription { component: Component; eventType: string; callback: ActionCallback; unsubscribe: Unsubscribe; updateSubscribe: UpdateSubscribe; } /** * @internal */ export interface UpdateSubscription { (subscriptionToRemove: ActionSubscription, group: string, subgroups: string[]): void; } /** * @public */ export interface Component { readonly id: string; readonly type: string; subgroups?: string[]; } /** * @public */ export interface ActionSetInterface extends Component { readonly app: ClientApplication; readonly defaultGroup: string; group: string; component: Component; subscriptions: ActionSubscription[]; updateSubscription: UpdateSubscription; error: ErrorSubscriber; subscribe(eventName: string, callback: ActionCallback, component?: Component, currentIndex?: number): Unsubscribe; unsubscribe(resetOnly: boolean): ActionSetInterface; } /** * @public */ export interface DispatchAction { type: string; payload: any; } /** * @public */ export interface SimpleDispatch { dispatch(action: string): ActionSet; } /** * @public */ export interface ComplexDispatch

{ dispatch(action: string, payload: P): ActionSet; } /** * @public */ export interface ActionSetProps extends SimpleDispatch { options: T; payload: P; set(options: Partial): ActionSet; } /** * @public */ export interface ActionSetPayload

extends SimpleDispatch { payload: P; } /** * @public */ export interface ActionSetOptions { options: T; set(options: Partial): ActionSet; } /** * @public */ export interface Dispatch<_> { (action: A): A; }