import { IRequireBank } from './ports/i-require-bank';
import { FmodParameter } from './fmod-types';
import { IFmodApi } from '../ports/i-fmod-api';
import { ILogger } from '../api/i-logger';
import { FmodEventType } from './interfaces/fmod-event-type';
import { MarkerData } from '../api/marker-data';
export declare class FmodEvent {
    readonly id: string;
    readonly eventName: string;
    readonly bankName: string;
    readonly additionalBankRequirements: string[];
    private readonly _logger;
    private _api;
    private _bankLoader;
    private readonly _eventType;
    private readonly _markerListeners;
    readonly params: FmodParameter[];
    constructor(name: string, bankName: string, additionalBankRequirements: string[], eventType: FmodEventType, logger?: ILogger);
    init(api: IFmodApi, bankLoader: IRequireBank): void;
    get api(): IFmodApi;
    get eventType(): FmodEventType;
    play(): Promise<void>;
    /**
     * Plays an event that contains a programmer instrument
     * @param voiceKey Key to pass to the programmer instrument
     */
    playVoice(voiceKey: string): Promise<void>;
    /**
     * @param voiceKey Key used for the programmer instrument
     * @returns Number of stopped voices
     */
    stopVoice(voiceKey: string): Promise<number>;
    start(): Promise<void>;
    /**
     * @returns Number of stopped instances
     */
    stop(): Promise<number>;
    /**
     * Subscribe to marker events for this specific FMOD event.
     * Marker events occur when playback in FMOD runs over e.g. a destination marker.
     *
     * Only markers whose event path matches this event’s ID will be forwarded.
     */
    onMarker(cb: (data: MarkerData) => void): void;
    /**
     * Unsubscribe a marker event callback.
     */
    offMarker(cb: (data: MarkerData) => void): void;
    private ensureBankLoaded;
}
