import { OnDestroy, Provider } from '@angular/core';
import { ComponentStore } from '@ngrx/component-store';
import { SegueRef } from '@dereekb/dbx-core';
import { type Maybe } from '@dereekb/util';
import * as i0 from "@angular/core";
export interface TwoColumnsState {
    /**
     * Whether or not to reverse the sizing.
     */
    readonly reverseSizing: boolean;
    /**
     * Whether or not the right side should be shown.
     */
    readonly showRight: boolean;
    /**
     * Overrides showRight if not null.
     */
    readonly showRightOverride?: Maybe<boolean>;
    /**
     * Whether or not there is any registered right content currently.
     */
    readonly hasRight: boolean;
    /**
     * Whether or not to allow the left to fill up the screen when no right is shown.
     */
    readonly fullLeft: boolean;
    /**
     * Optional ref to use with TwoColumns that use an sref for the back button.
     */
    readonly backRef?: Maybe<SegueRef>;
    /**
     * Size of the view's total width in pixels.
     */
    readonly totalWidth?: Maybe<number>;
    /**
     * Minimum right side size allowed before hiding the left content.
     */
    readonly minRightWidth: number;
}
export declare const DEFAULT_TWO_COLUMNS_MIN_RIGHT_WIDTH = 320;
export declare class TwoColumnsContextStore extends ComponentStore<TwoColumnsState> implements OnDestroy {
    private readonly _back;
    constructor();
    readonly hideLeft$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current state of reverseSizing.
     */
    readonly reverseSizing$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current state of hasRight.
     */
    readonly hasRight$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current state of showRight and showRightOverride.
     */
    readonly currentShowRight$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current state of showRight and hasRight
     */
    readonly showRight$: import("rxjs").Observable<boolean>;
    /**
     * Convenience function for the showRight compliment.
     */
    readonly hideRight$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current state of fullLeft.
     */
    readonly fullLeft$: import("rxjs").Observable<boolean>;
    /**
     * Whether or not to show the full left.
     */
    readonly showFullLeft$: import("rxjs").Observable<boolean>;
    /**
     * Pipes the current backRef value.
     */
    readonly backRef$: import("rxjs").Observable<Maybe<SegueRef<object>>>;
    /**
     * Emits back events.
     */
    readonly back$: import("rxjs").Observable<void>;
    /**
     * Completely resets the store.
     */
    readonly reset: () => void;
    /**
     * Changes the state to show right or not.
     */
    readonly setReverseSizing: (() => void) | ((observableOrValue: Maybe<boolean> | import("rxjs").Observable<Maybe<boolean>>) => import("rxjs").Subscription);
    /**
     * Changes the state to have right content or not.
     */
    readonly setHasRight: (() => void) | ((observableOrValue: Maybe<boolean> | import("rxjs").Observable<Maybe<boolean>>) => import("rxjs").Subscription);
    /**
     * Changes the state to show right or not.
     */
    readonly setShowRight: (() => void) | ((observableOrValue: Maybe<boolean> | import("rxjs").Observable<Maybe<boolean>>) => import("rxjs").Subscription);
    /**
     * Changes the override state to show right or not.
     */
    readonly setShowRightOverride: (() => void) | ((observableOrValue: Maybe<boolean> | import("rxjs").Observable<Maybe<boolean>>) => import("rxjs").Subscription);
    /**
     * Sets the full left. If undefined is passed, no change occurs.
     */
    readonly setFullLeft: (() => void) | ((observableOrValue: Maybe<boolean> | import("rxjs").Observable<Maybe<boolean>>) => import("rxjs").Subscription);
    /**
     * Sets the new back ref.
     */
    readonly setBackRef: (() => void) | ((observableOrValue: Maybe<SegueRef<object>> | import("rxjs").Observable<Maybe<SegueRef<object>>>) => import("rxjs").Subscription);
    /**
     * Sets the new total width.
     */
    readonly setTotalWidth: (() => void) | ((observableOrValue: Maybe<number> | import("rxjs").Observable<Maybe<number>>) => import("rxjs").Subscription);
    /**
     * Sets the new min right width.
     */
    readonly setMinRightWidth: (() => void) | ((observableOrValue: Maybe<number> | import("rxjs").Observable<Maybe<number>>) => import("rxjs").Subscription);
    /**
     * Emits a back event.
     */
    back(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TwoColumnsContextStore, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TwoColumnsContextStore>;
}
export declare function provideTwoColumnsContext(): Provider[];
