import { type BinaryView, Frag } from "@ot-builder/bin-util";
import type { OtGlyph } from "@ot-builder/ot-glyphs";
import type { Gdef, GsubGpos } from "@ot-builder/ot-layout";
import type { Data } from "@ot-builder/prelude";
import type { ReadTimeIVS, WriteTimeIVS } from "@ot-builder/var-store";
import type { OtVar } from "@ot-builder/variance";
import type { LayoutCfg } from "../cfg";
import type { OtlStat } from "../stat";
import type { LookupReaderFactory, LookupWriterFactory } from "./general";
export interface TableReadContext {
    gOrd: Data.Order<OtGlyph>;
    gdef?: Data.Maybe<Gdef.Table>;
    designSpace?: Data.Maybe<OtVar.DesignSpace>;
    ivs?: Data.Maybe<ReadTimeIVS>;
}
export interface TableWriteContext {
    gOrd: Data.Order<OtGlyph>;
    designSpace?: Data.Maybe<OtVar.DesignSpace>;
    gdef?: Data.Maybe<Gdef.Table>;
    ivs?: Data.Maybe<WriteTimeIVS>;
    stat?: Data.Maybe<OtlStat>;
}
export declare class CGsubGposTable<L extends GsubGpos.LookupProp> {
    read(view: BinaryView, cfg: LayoutCfg, lrf: LookupReaderFactory<L>, trc: TableReadContext): {
        scripts: Map<string, GsubGpos.GeneralGsubGpos.ScriptT<OtGlyph, OtVar.Value, L>>;
        features: GsubGpos.FeatureT<L>[];
        lookups: L[];
        featureVariations: GsubGpos.GeneralGsubGpos.FeatureVariationT<OtVar.Dim, OtGlyph, OtVar.Value, L>[] | null;
    };
    write(frag: Frag, table: GsubGpos.TableT<L>, cfg: LayoutCfg, lwf: LookupWriterFactory<L>, twc: TableWriteContext): void;
}
//# sourceMappingURL=table.d.ts.map