import { DeviceId, OperatorInfo } from './shared.types';
import { FiscalVATGroup } from './receipts.types';
import { DeviceInfo, FiscalDeviceStatus, FiscalMemoryRecord, FiscalResponse } from './device.types';
export type FiscalDeviceDiagnosticStepName = 'deviceInfo' | 'status' | 'lastFiscalRecord' | 'cashAmount' | 'nonFiscalReceipt';
export interface FiscalDeviceDiagnosticStepBase {
    name: FiscalDeviceDiagnosticStepName;
    ok: boolean;
    startedAt: string;
    finishedAt: string;
    skipped?: boolean;
    skipReason?: string;
    error?: string;
}
export interface FiscalDeviceDiagnosticStepDeviceInfo extends FiscalDeviceDiagnosticStepBase {
    name: 'deviceInfo';
    data?: DeviceInfo;
}
export interface FiscalDeviceDiagnosticStepStatus extends FiscalDeviceDiagnosticStepBase {
    name: 'status';
    data?: FiscalDeviceStatus;
}
export interface FiscalDeviceDiagnosticStepLastFiscalRecord extends FiscalDeviceDiagnosticStepBase {
    name: 'lastFiscalRecord';
    data?: FiscalMemoryRecord;
}
export interface FiscalDeviceDiagnosticStepCashAmount extends FiscalDeviceDiagnosticStepBase {
    name: 'cashAmount';
    data?: number;
}
export interface FiscalDeviceDiagnosticStepNonFiscalReceipt extends FiscalDeviceDiagnosticStepBase {
    name: 'nonFiscalReceipt';
    data?: FiscalResponse;
}
export type FiscalDeviceDiagnosticStep = FiscalDeviceDiagnosticStepDeviceInfo | FiscalDeviceDiagnosticStepStatus | FiscalDeviceDiagnosticStepLastFiscalRecord | FiscalDeviceDiagnosticStepCashAmount | FiscalDeviceDiagnosticStepNonFiscalReceipt;
export interface FiscalDeviceDiagnosticsOptions {
    operator: OperatorInfo;
    amount?: number;
    vatGroup?: FiscalVATGroup;
    itemName?: string;
}
export interface FiscalDeviceDiagnosticsResult {
    deviceId: DeviceId;
    ok: boolean;
    startedAt: string;
    finishedAt: string;
    steps: FiscalDeviceDiagnosticStep[];
}
