import { StateChange, type Variant, type VariantBuilder, VersionChangeType, WalletRuntimeError } from '../abstractions/index.js'; import { Effect, type Scope } from 'effect'; export type RangeConfig = { min: number; max: number; }; export declare const Numeric: "NumericRange"; export declare class NumericRange implements Variant.Variant> { #private; __polyTag__: typeof Numeric; protected configuration: RangeConfig; protected yieldCount: number; protected throwError: boolean; constructor(configuration: RangeConfig, yieldCount: number, throwError: boolean); get currentState(): number; start(context: Variant.VariantContext): Effect.Effect>; migrateState(): Effect.Effect; } export declare class NumericRangeBuilder implements VariantBuilder.VariantBuilder { private readonly yieldCount; private readonly throwError; constructor(yieldCount?: number, throwError?: boolean); build(configuration: RangeConfig): NumericRange; } export type RangeMultiplierConfig = RangeConfig & { multiplier: number; }; export declare const NumericMultiplier = "NumericMultiplier"; export declare class NumericRangeMultiplier implements Variant.Variant> { #private; __polyTag__: typeof NumericMultiplier; protected configuration: RangeMultiplierConfig; constructor(configuration: RangeMultiplierConfig); get currentState(): number; start(context: Variant.VariantContext): Effect.Effect>; migrateState(state: number): Effect.Effect; } export declare class NumericRangeMultiplierBuilder implements VariantBuilder.VariantBuilder { build(configuration: RangeMultiplierConfig): NumericRangeMultiplier; } export type InterceptingRunningVariant = Variant.RunningVariant & { emitProtocolVersionChange: (change: VersionChangeType.VersionChangeType) => Effect.Effect; emit: (change: StateChange.StateChange) => Effect.Effect; }; export declare class InterceptingVariant implements Variant.Variant> { __polyTag__: TTag; constructor(tag: TTag); migrateState(previousState: TState): Effect.Effect; start(context: Variant.VariantContext): Effect.Effect, WalletRuntimeError, Scope.Scope>; } /** * Builder of an intercepting variant It allows removing the possibility of race conditions by requiring an explicit * gesture to migrate to a next/specific protocol version */ export declare class InterceptingVariantBuilder implements VariantBuilder.VariantBuilder, object> { tag: TTag; constructor(tag: TTag); build(): InterceptingVariant; }