declare abstract class PNGChunk {
    abstract size(): number;
    abstract dataBytes(): number[];
    readonly typeStr: string;
    readonly typeBytes: number[];
    constructor(type: string);
    crc(): number;
    sizeTotal(): number;
    toBytes(): number[];
    into<T>(into: {
        typeStr: string;
        fromDataBytes: (data: number[]) => T;
    }): T;
}
declare class PNGChunk_bytes extends PNGChunk {
    data: number[];
    constructor(type: string, data: number[]);
    dataBytes(): number[];
    size(): number;
    static fromBytes(bytes: number[], noVerifyCrc?: boolean): PNGChunk_bytes;
}
declare class PNGChunk_tEXt extends PNGChunk {
    static typeStr: string;
    keyword: string;
    text: string;
    constructor(keyword: string, text: string);
    dataBytes(): number[];
    size(): number;
    static fromDataBytes(data: number[]): PNGChunk_tEXt;
}

declare class PNGImage {
    chunks: PNGChunk[];
    constructor(chunks: PNGChunk[]);
    insertChunk(chunk: PNGChunk, index?: number): void;
    getChunk(index: number): PNGChunk;
    getChunkIndex(type: string): number | undefined;
    toBytes(): number[];
    static fromBytes(bytes: number[]): PNGImage;
}

export { PNGChunk_bytes, PNGChunk_tEXt, PNGImage };
