import * as _angular_core from '@angular/core';
import { ElementRef } from '@angular/core';

type SplitterOrientation = 'horizontal' | 'vertical';
type SplitterPanelUnit = 'px' | 'flex';
interface SplitterPanelState {
    id: string | number;
    size: number;
    unit: SplitterPanelUnit;
    collapsed: boolean;
}
interface SplitterLayoutState {
    v: 1;
    panels: SplitterPanelState[];
}
interface SdSplitterOption {
    orientation?: SplitterOrientation;
    disabled?: boolean;
    storageKey?: string;
    snapThreshold?: number;
    keyboardStep?: number;
    onResizeEnd?: (state: SplitterLayoutState) => void;
    onCollapsedChange?: (event: {
        panelId: string | number;
        collapsed: boolean;
    }) => void;
    onLayoutChange?: (state: SplitterLayoutState) => void;
}

declare class SdSplitterPanelComponent {
    readonly elementRef: ElementRef<HTMLElement>;
    panelId: _angular_core.InputSignal<string | undefined>;
    size: _angular_core.InputSignalWithTransform<number, unknown>;
    unit: _angular_core.InputSignal<SplitterPanelUnit>;
    minSize: _angular_core.InputSignalWithTransform<number, unknown>;
    maxSize: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
    collapsed: _angular_core.ModelSignal<boolean>;
    resizable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSplitterPanelComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSplitterPanelComponent, "sd-splitter-panel", never, { "panelId": { "alias": "panelId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
}

declare class SdSplitterComponent {
    #private;
    option: _angular_core.InputSignal<SdSplitterOption | undefined>;
    orientation: _angular_core.InputSignal<SplitterOrientation>;
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    storageKey: _angular_core.InputSignal<string | undefined>;
    snapThreshold: _angular_core.InputSignalWithTransform<number, unknown>;
    keyboardStep: _angular_core.InputSignalWithTransform<number, unknown>;
    resolvedOrientation: _angular_core.Signal<SplitterOrientation>;
    resolvedDisabled: _angular_core.Signal<boolean>;
    resolvedStorageKey: _angular_core.Signal<string | undefined>;
    resolvedSnapThreshold: _angular_core.Signal<number>;
    resolvedKeyboardStep: _angular_core.Signal<number>;
    readonly resizeEnd: _angular_core.OutputEmitterRef<SplitterLayoutState>;
    readonly collapsedChange: _angular_core.OutputEmitterRef<{
        panelId: string | number;
        collapsed: boolean;
    }>;
    readonly layoutChange: _angular_core.OutputEmitterRef<SplitterLayoutState>;
    readonly panels: _angular_core.Signal<readonly SdSplitterPanelComponent[]>;
    constructor();
    getLayout(): SplitterLayoutState;
    setLayout(state: SplitterLayoutState): void;
    resetLayout(): void;
    collapse(target: number | string): void;
    expand(target: number | string): void;
    toggle(target: number | string): void;
    resizePanel(target: number | string, size: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSplitterComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSplitterComponent, "sd-splitter", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "storageKey": { "alias": "storageKey"; "required": false; "isSignal": true; }; "snapThreshold": { "alias": "snapThreshold"; "required": false; "isSignal": true; }; "keyboardStep": { "alias": "keyboardStep"; "required": false; "isSignal": true; }; }, { "resizeEnd": "resizeEnd"; "collapsedChange": "collapsedChange"; "layoutChange": "layoutChange"; }, ["panels"], ["sd-splitter-panel"], true, never>;
}

export { SdSplitterComponent, SdSplitterPanelComponent };
export type { SplitterLayoutState, SplitterOrientation, SplitterPanelState, SplitterPanelUnit };
