import { PropertyValues, HTMLTemplateResult } from "lit";
import { Decision, DecisionOptions } from "../../models/decisions/decision";
import { VerificationGridComponent, VerificationGridInjector } from "../verification-grid/verification-grid";
import { ClassificationComponent } from "./classification/classification";
import { VerificationComponent } from "./verification/verification";
import { KeyboardShortcut } from "../../templates/keyboardShortcut";
import { SubjectWrapper } from "../../models/subject";
import { Constructor } from "../../helpers/types/advancedTypes";
export interface DecisionModels {
[DecisionOptions.TRUE]: T;
[DecisionOptions.FALSE]: T;
[DecisionOptions.UNSURE]: T;
[DecisionOptions.SKIP]: T;
}
export type DecisionEvent = CustomEvent;
export type DecisionComponentUnion = DecisionComponent | VerificationComponent | ClassificationComponent;
interface DecisionContent {
value: Decision[];
}
export type WhenPredicate = (subject: SubjectWrapper | null) => boolean;
declare const DecisionComponent_base: import("../../helpers/types/mixins").Component & {
tagName: string;
};
/**
* @description
* A common abstract decision component that can be implemented by different
* types of decisions.
* e.g. a verification decision or a classification decision
*
* @event decision
*/
export declare abstract class DecisionComponent extends DecisionComponent_base {
static styles: import("lit").CSSResult[];
static readonly decisionEventName = "decision";
protected abstract handleShortcutKey(event: KeyboardEvent): void;
protected abstract isShortcutKey(event: KeyboardEvent): boolean;
protected injector: VerificationGridInjector;
/** Disables the decision button and prevents decision events from firing */
disabled: boolean;
when: WhenPredicate;
/**
* Toggles the decision button in and out of mobile compatibility
* when decision buttons are rendered in a mobile context, they should be
* larger, and without shortcut keys
*/
isMobile: boolean;
verificationGrid?: VerificationGridComponent;
abstract get decisionConstructor(): Constructor;
private shouldEmitNext;
private keyboardHeldDown;
private readonly keyUpHandler;
private readonly keyDownHandler;
disconnectedCallback(): void;
willUpdate(change: PropertyValues): void;
shortcutKeys(): KeyboardShortcut[];
protected emitDecision(value: Decision[]): void;
private handleKeyUp;
private handleKeyDown;
abstract render(): HTMLTemplateResult;
}
declare global {
interface HTMLElementTagNameMap {
"oe-decision": DecisionComponent;
}
}
export {};