export type StreamPositionType = "contain" | "cover" | "fixed";
interface FixedPositionSettings {
    x?: number;
    y?: number;
    width?: number;
    height?: number;
}
export interface Resolution {
    height: number;
    width: number;
}
export interface Position {
    x: number;
    y: number;
}
interface DimensionsCalculationResult {
    displayResolution: Resolution;
    position: Position;
    radius?: number;
}
export type StreamMask = "none" | "circle";
export declare abstract class StreamPosition {
    abstract calculatePositionAndDimensions(containerDimensions: Resolution, streamDimensions: Resolution, mask: StreamMask): DimensionsCalculationResult;
}
declare class StreamPositionFixed extends StreamPosition {
    private fixedPositionSettings;
    constructor(fixedPositionSettings: FixedPositionSettings);
    calculatePositionAndDimensions(containerDimensions: Resolution, streamDimensions: Resolution, mask: StreamMask): DimensionsCalculationResult;
}
declare class StreamPositionContain extends StreamPosition {
    calculatePositionAndDimensions(containerDimensions: Resolution, streamDimensions: Resolution, mask: StreamMask): DimensionsCalculationResult;
}
declare class StreamPositionCover extends StreamPosition {
    calculatePositionAndDimensions(containerDimensions: Resolution, streamDimensions: Resolution, mask: StreamMask): DimensionsCalculationResult;
}
export declare const Position: {
    contain: StreamPositionContain;
    cover: StreamPositionCover;
    fixed: (position: FixedPositionSettings) => StreamPositionFixed;
};
export {};
