import GameBoy from "../GameBoy";
export declare type ReaderFunction = (address: number) => number;
export declare type WriterFunction = (address: number, value: number) => void;
export default class Memory {
    private gameboy;
    private data;
    readers: ReaderFunction[];
    highReaders: ReaderFunction[];
    writers: WriterFunction[];
    highWriters: WriterFunction[];
    constructor(gameboy: GameBoy, data?: Uint8Array);
    read(address: number): number;
    readHigh(address: number): number;
    hasReader(address: number): boolean;
    hasHighReader(address: number): boolean;
    setReaders(from: number, to: number, reader: ReaderFunction): void;
    setReader(address: number, reader: ReaderFunction): void;
    setHighReaders(from: number, to: number, reader: ReaderFunction): void;
    setHighReader(address: number, reader: ReaderFunction): void;
    write(address: number, value: number): void;
    writeHigh(address: number, data: number): void;
    hasWriter(address: number): boolean;
    hasHighWriter(address: number): boolean;
    setWriters(from: number, to: number, writer: WriterFunction): void;
    setWriter(address: number, writer: WriterFunction): void;
    setHighWriter(address: number, writer: WriterFunction): void;
    init(): void;
    updateIoRegisters(): void;
    enableBootRomControl(): void;
    disableBootRomControl(): void;
    writeIllegal: (address: number, data: number) => void;
    readBad: (address: number) => number;
    readDirectly: (address: number) => number;
    memoryReadJumpCompile(): void;
    memoryWriteJumpCompile(): void;
    registerIOMemoryWriters(): void;
    recompileModelSpecificIOWriteHandling(): void;
}
