import { Signal } from '@angular/core';
import { Observable } from 'rxjs';
export interface ClientPoint {
    x: number;
    y: number;
}
/**
 * Only supporting a single {@link TouchEvent} point
 */
export declare function getPointFromEvent(event: MouseEvent | TouchEvent | KeyboardEvent): ClientPoint;
export declare function gutterEventsEqualWithDelta(startEvent: MouseEvent | TouchEvent, endEvent: MouseEvent | TouchEvent, deltaInPx: number, gutterElement: HTMLElement): boolean;
export declare function fromMouseDownEvent(target: HTMLElement | Document): Observable<MouseEvent | TouchEvent>;
export declare function fromMouseMoveEvent(target: HTMLElement | Document): Observable<MouseEvent | TouchEvent>;
export declare function fromMouseUpEvent(target: HTMLElement | Document, includeTouchCancel?: boolean): Observable<MouseEvent | TouchEvent>;
export declare function sum<T>(array: T[] | readonly T[], fn: (item: T) => number): number;
export declare function toRecord<TItem, TKey extends string, TValue>(array: TItem[] | readonly TItem[], fn: (item: TItem, index: number) => [TKey, TValue]): Record<TKey, TValue>;
export declare function createClassesString(classesRecord: Record<string, boolean>): string;
export interface MirrorSignal<T> {
    (): T;
    set(value: T): void;
    reset(): void;
}
/**
 * Creates a semi signal which allows writes but is based on an existing signal
 * Whenever the original signal changes the mirror signal gets aligned
 * overriding the current value inside.
 */
export declare function mirrorSignal<T>(outer: Signal<T>): MirrorSignal<T>;
export declare function leaveNgZone<T>(): (source: Observable<T>) => Observable<T>;
export declare const numberAttributeWithFallback: (fallback: number) => (value: unknown) => number;
export declare const assertUnreachable: (value: never, name: string) => never;
