/**
 * @param {unknown} source
 * @returns {Iterable<API.Variable>}
 */
export function iterate(source: unknown): Iterable<API.Variable>;
export class Variable {
    static id: number;
    /**
     * @param {string|symbol} name
     */
    constructor(name?: string | symbol, id?: number);
    '?': {
        id: number;
    };
    get id(): number;
    get name(): string | symbol;
    toString(): string;
    /**
     *
     * @param {object} context
     * @param {number} context.id
     */
    with({ id }: {
        id: number;
    }): Variable;
    toJSON(): API.Variable<API.Scalar>;
    get [Symbol.toStringTag](): string;
    #private;
}
export function create(name: string | symbol): Variable;
/**
 * @type {API.Variable<any>}
 */
export const _: API.Variable<any>;
export function equal(actual: API.Variable, expected: API.Variable): boolean;
export function is(term: unknown): term is API.Variable;
export function id(variable: API.Variable): API.VariableID;
export function toJSON<T extends API.Scalar>(variable: API.Variable<T>): API.Variable<T>;
export { toJSON as inspect };
export function toString(variable: API.Variable): string;
export function isBlank(variable: API.Variable): boolean;
export function compare({ ["?"]: { id: left } }: API.Variable, { ["?"]: { id: right } }: API.Variable): -1 | 0 | 1;
export function toDebugString(variable: API.Variable): string;
import * as API from './api.js';
//# sourceMappingURL=variable.d.ts.map