import * as solid_js from 'solid-js';
import { UseIntervalFnOptions } from '@solidjs-use/shared';

/**
 * Performance.memory
 *
 * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory
 */
interface MemoryInfo {
    /**
     * The maximum size of the heap, in bytes, that is available to the context.
     */
    readonly jsHeapSizeLimit: number;
    /**
     *  The total allocated heap size, in bytes.
     */
    readonly totalJSHeapSize: number;
    /**
     * The currently active segment of JS heap, in bytes.
     */
    readonly usedJSHeapSize: number;
    [Symbol.toStringTag]: 'MemoryInfo';
}
interface UseMemoryOptions extends UseIntervalFnOptions {
    interval?: number;
}
/**
 * Reactive Memory Info.
 *
 * @see https://solidjs-use.github.io/solidjs-use/core/useMemory
 */
declare function useMemory(options?: UseMemoryOptions): {
    isSupported: solid_js.Accessor<boolean>;
    memory: solid_js.Accessor<MemoryInfo | undefined>;
};
type UseMemoryReturn = ReturnType<typeof useMemory>;

export { MemoryInfo, UseMemoryOptions, UseMemoryReturn, useMemory };