import type { Reducer } from 'react';
import type { ScaleLinear } from 'd3-scale';
export declare type Dimensions = {
    width: number;
    height: number;
};
declare type SineLinear = ScaleLinear<number, number, never>;
export declare const increase: number;
export declare const xTickValues: number[];
export declare const PiMap: {
    readonly '0': "0";
    readonly '1.57': "\\pi\\over 2";
    readonly '3.14': "\\pi";
    readonly '4.71': "3\\pi\\over 2";
    readonly '6.28': "2\\pi";
};
export declare type PiMapKeys = keyof typeof PiMap;
export declare const getScales: ({ width, height, }: Dimensions) => {
    xScale: SineLinear;
    yScale: SineLinear;
    xAxisScale: SineLinear;
    yAxisScale: SineLinear;
    firstX: number;
    initialX: number;
    initialY: number;
    radius: number;
};
declare type SineActions = {
    type: 'TICK';
    payload: {
        radius: number;
        firstX: number;
        time: number;
        xAxisScale: SineLinear;
    };
};
export declare const initialState: {
    time: number;
    initialX: number;
    initialY: number;
    firstX: number;
    container: {
        x: number;
        y: number;
    };
    unitCircle: {
        cx: number;
        cy: number;
        r: number;
    };
    hypotenuse: {
        from: {
            x: number;
            y: number;
        };
        to: {
            x: number;
            y: number;
        };
    };
    opposite: {
        from: {
            x: number;
            y: number;
        };
        to: {
            x: number;
            y: number;
        };
    };
    adjacent: {
        from: {
            x: number;
            y: number;
        };
        to: {
            x: number;
            y: number;
        };
    };
    dot: {
        cx: number;
        cy: number;
        r: number;
    };
    verticalDot: {
        cx: number;
        cy: number;
        r: number;
    };
    joiningLine: {
        from: {
            x: number;
            y: number;
        };
        to: {
            x: number;
            y: number;
        };
    };
    axisDot: {
        cx: number;
        cy: number;
        r: number;
    };
    sine: {
        x: number;
        y: number;
    }[];
    xIncrement: number;
    rays: {
        cosX: number;
        sinY: number;
        offsetX: number;
        offsetY: number;
        label: string;
    }[];
};
export declare const reducer: Reducer<typeof initialState, SineActions>;
export {};
//# sourceMappingURL=utils.d.ts.map