export declare const ENC_FEAT = 192;
export declare const ENC_HID = 96;
export declare const DEC_HID = 96;
export declare const ASR_VOCAB = 191;
export interface EncoderOut {
    encoderOutputs: Float32Array;
    projectedKeys: Float32Array;
    hidden: Float32Array;
    mask: Uint8Array;
    prevAttn: Float32Array;
    T: number;
}
export interface DecoderOut {
    nextToken: number;
    attnArgmax: number;
    hiddenOut: Float32Array;
    prevOut: Float32Array;
}
export declare class HamaEngine {
    private ex;
    private constructor();
    static fromBytes(wasm: Uint8Array): Promise<HamaEngine>;
    private writeBytes;
    private writeF32;
    private writeI64;
    private readF32;
    private readU8;
    private readI64;
    private loadModel;
    loadEncoder(bytes: Uint8Array): number;
    loadDecoder(bytes: Uint8Array): number;
    loadAsr(bytes: Uint8Array): number;
    loadP2g(bytes: Uint8Array): number;
    /** Greedy decode: prefixIds = [bos, src, phones..., tgt]; returns generated token ids. */
    p2gGreedy(h: number, prefixIds: BigInt64Array, maxNew: number, eos: number, pad: number): number[];
    /** Greedy decode + per-token source-phoneme alignment index (-1 if unaligned). */
    p2gGreedyAlign(h: number, prefixIds: BigInt64Array, maxNew: number, eos: number, pad: number): {
        ids: number[];
        align: number[];
    };
    encoderRun(h: number, ids: BigInt64Array, length: number): EncoderOut;
    decoderStep(h: number, token: number, eo: Float32Array, pk: Float32Array, mask: Uint8Array, prev: Float32Array, hidden: Float32Array, positions: Float32Array): DecoderOut;
    asrRun(h: number, wav: Float32Array): {
        logProbs: Float32Array;
        T: number;
        outLength: number;
    };
}
