import type { IDisposable } from "@surface/core";
import type { DirectiveEntry } from "../../types/index";
import type Block from "../block.js";
import type BranchStatement from "../types/branch-statement";
declare type Context = {
    block: Block;
    branches: BranchStatement[];
    directives: Map<string, DirectiveEntry>;
    host: Node;
    parent: Node;
    scope: object;
};
export default class ChoiceStatement implements IDisposable {
    private readonly context;
    private readonly cancellationTokenSource;
    private readonly subscriptions;
    private currentDisposable;
    private disposed;
    private currentBranch?;
    constructor(context: Context);
    private readonly task;
    dispose(): void;
}
export {};
