import React from "react";
import { ThemeType } from "../types/theme";
import { Colour } from "../types";
type ThemeDispatchAction = {
    type: "set";
    values: Partial<ThemeType>;
} | {
    type: "reset";
};
type ThemeContextType = {
    theme: ThemeType;
    dispatch: React.Dispatch<ThemeDispatchAction>;
};
/**
 * Theme provider to wrap the app components so they can use a theme and be displayed
 */
export declare function ThemeProvider({ children }: {
    children: React.ReactNode;
}): import("@emotion/react/jsx-runtime").JSX.Element;
/**
 * Gets the current theme and the dispatch function used to change it.
 * The dispatch function takes in:
 * - an object containing the key "type" set to "set" with an object representing a part of the theme or its entirity, or
 * - an object containing the key "type" set to "reset" and nothing else, used to reset the theme to the default one.
 *
 * @returns An object made of "theme" containing the value of the active theme, as well as a "dispatch" to set the theme
 */
export declare function useTheme(): ThemeContextType;
/**
 * Gets which mode is being used, either dark mode, light mode or set to auto. The former 2 are meant to be fixed, while "auto" is meant to represent a mode that changes with the system, and thus is affected by it.
 *
 * @returns true if theme.mode is "dark", or "auto" and the system prefers dark mode, false otherwise
 */
export declare function useDarkMode(): boolean;
/**
 * Used to get the colour based on its simplified name
 * @returns A function that takes the role and returns its hex value
 */
export declare function useThemeColours(): ThemeColourFunction;
export type ThemeColourFunction = (col: Colour) => string;
export {};
