"use strict";
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.startCountingUnrecognized = startCountingUnrecognized;
exports.unrecognized = unrecognized;
function unrecognized(value) {
    globalCount++;
    return value;
}
let globalCount = 0;
let refCount = 0;
function startCountingUnrecognized() {
    refCount++;
    const start = globalCount;
    return {
        /**
         * Ends counting and returns the delta.
         * @param delta - If provided, only this amount is added to the parent counter
         *   (used for nested unions where we only want to record the winning option's count).
         *   If not provided, records all counts since start().
         */
        end: (delta) => {
            const count = globalCount - start;
            // Reset globalCount back to start, then add only the specified delta
            globalCount = start + (delta ?? count);
            if (--refCount === 0)
                globalCount = 0;
            return count;
        },
    };
}
//# sourceMappingURL=unrecognized.js.map