/**
 * @since 4.0.0
 */
import type * as Effect from "./Effect.ts";
import type * as Fiber from "./Fiber.ts";
/**
 * Create a low-level `Effect` prototype.
 *
 * When the effect is evaluated, it will call `evaluate` with the current fiber.
 *
 * @since 4.0.0
 * @category Prototypes
 */
export declare const Prototype: <A extends Effect.Effect<any, any, any>>(options: {
    readonly label: string;
    readonly evaluate: (this: A, fiber: Fiber.Fiber<any, any>) => Effect.Effect<Effect.Success<A>, Effect.Error<A>, Effect.Services<A>>;
}) => Effect.Effect<Effect.Success<A>, Effect.Error<A>, Effect.Services<A>>;
declare const Base: new <A, E, R>() => Effect.Effect<A, E, R>;
/**
 * An abstract class that can be extended to create an `Effect`.
 *
 * @since 4.0.0
 * @category Constructors
 */
export declare abstract class Class<A, E = never, R = never> extends Base<A, E, R> {
    abstract asEffect(): Effect.Effect<A, E, R>;
}
export {};
//# sourceMappingURL=Effectable.d.ts.map