/**
 * Copyright: (c) Myia SAS 2026.
 * This file and its contents are licensed under the AGPLv3 License.
 * Please see the LICENSE file at the root of this repository
 */
import type * as BabelTypes from '@babel/types';
type Types = typeof BabelTypes;
export interface HoistedVariableDeclaration {
    /** Names introduced by the declaration, flattened across destructuring. */
    bindingNames: Set<string>;
    /** `let x, y;` — the bindings hoisted out of the try block. */
    hoistDecl: BabelTypes.VariableDeclaration;
    /** `x = EXPR; y = EXPR;` — one per declarator that had an initializer. */
    assignments: BabelTypes.ExpressionStatement[];
    /** `{ x, y }` — shorthand object literal passed to `__ok`. */
    varsObject: BabelTypes.ObjectExpression;
}
export type VariableDeclarationHoister = (declaration: BabelTypes.VariableDeclaration) => HoistedVariableDeclaration;
export declare function createVariableDeclarationHoister(t: Types): VariableDeclarationHoister;
export {};
