/** * A status of an action. */ export type ActionStatus = 'not_started' | 'pending' | 'resolved' | 'rejected'; /** * A callback to be executed when an action is ready. */ export type ReadyCallback = () => void; /** * An action is a single function that needs to be executed to determine if the app is ready. */ export type ReadyAction = () => unknown | Promise; /** * A map of action statuses by their name. */ export type ActionsStatus = { [key in ActionStatus]?: string[]; }; /** * A beacon is a single action that needs to be executed to determine if the app is ready. */ export interface Beacon { name: string; action: ReadyAction; status: ActionStatus; callbacks: ReadyCallback[]; debug?: boolean; } /** * A map of beacons by their name. */ export interface BeaconsMap { [name: string]: Beacon; }