import type { Dimension } from './id.js';
export interface StreamDeckControlDefinitionBase {
    type: 'button' | 'encoder' | 'lcd-segment';
    row: number;
    column: number;
}
export interface StreamDeckButtonControlDefinitionBase extends StreamDeckControlDefinitionBase {
    type: 'button';
    index: number;
    hidIndex: number;
    feedbackType: 'none' | 'rgb' | 'lcd';
}
export interface StreamDeckButtonControlDefinitionNoFeedback extends StreamDeckButtonControlDefinitionBase {
    feedbackType: 'none';
}
export interface StreamDeckButtonControlDefinitionRgbFeedback extends StreamDeckButtonControlDefinitionBase {
    feedbackType: 'rgb';
}
export interface StreamDeckButtonControlDefinitionLcdFeedback extends StreamDeckButtonControlDefinitionBase {
    feedbackType: 'lcd';
    pixelSize: Dimension;
}
export type StreamDeckButtonControlDefinition = StreamDeckButtonControlDefinitionNoFeedback | StreamDeckButtonControlDefinitionRgbFeedback | StreamDeckButtonControlDefinitionLcdFeedback;
export interface StreamDeckEncoderControlDefinition extends StreamDeckControlDefinitionBase {
    type: 'encoder';
    index: number;
    hidIndex: number;
    /** Whether the encoder has an led */
    hasLed: boolean;
    /** The number of steps in encoder led rings (if any) */
    ledRingSteps: number;
    /** Encoding offset of the ring leds */
    lcdRingOffset?: number;
}
export interface StreamDeckLcdSegmentControlDefinition extends StreamDeckControlDefinitionBase {
    type: 'lcd-segment';
    id: 0;
    columnSpan: number;
    rowSpan: number;
    pixelSize: Dimension;
    /**
     * Whether the LCD segment supports drawing regions
     */
    drawRegions: boolean;
}
export type StreamDeckControlDefinition = StreamDeckButtonControlDefinition | StreamDeckEncoderControlDefinition | StreamDeckLcdSegmentControlDefinition;
//# sourceMappingURL=controlDefinition.d.ts.map