import { SeqStream } from "bytestreamjs";
import { FontTable } from "../../Table";
import { KERNFormat } from "./Format";
import { KERNFormat2 } from "./Format2";
export interface KERNTableCoverageV0 {
    horizontal: number;
    minimum: number;
    crossStream: number;
    override: number;
    format: number;
}
export interface KERNTableV0 {
    version: number;
    length: number;
    coverage: KERNTableCoverageV0;
    value?: KERNFormat;
}
export interface KERNTableCoverageV1 {
    kernVertical: number;
    kernCrossStream: number;
    kernVariation: number;
    format: number;
}
export interface KERNTableV1 {
    table: KERNFormat2;
    length: number;
    tupleIndex: number;
    coverage: KERNTableCoverageV1;
    value: KERNFormat;
}
export declare type KERNTableType = KERNTableV0 | KERNTableV1;
export interface KERNParameters {
    version?: number;
    tables?: KERNTableType[];
}
export declare class KERN extends FontTable {
    version: number;
    tables: KERNTableType[];
    constructor(parameters?: KERNParameters);
    static get tag(): number;
    toStream(stream: SeqStream): boolean;
    static fromStream(stream: SeqStream): KERN;
    /**
     * Find kerning value for pair of glyph indexes
     * @param leftIndex Index of glyph from left side
     * @param rightIndex Index of glyph from right side
     * @param table Index of kerning table to find kerning value
     */
    find(leftIndex: number, rightIndex: number, table?: number): number;
    /**
     * Find kerning values for array of glyph indexes
     * @param array Array of glyph indexes
     * @param table Index of kerning table to find kerning value
     */
    findForArray(array: number[], table?: number): number[];
}
