import { Atom, AtomSeed, EventStream, EventStreamSeed, MethodDesc, ObservableSeed, Property, PropertySeed, Scope, Subscribe } from "./abstractions"; import { HKT } from "./hkt"; export declare type SubscriptionTransformer = (subscribe: Subscribe) => Subscribe; export declare type StreamTransformer = SubscriptionTransformer; export declare type Transformer = { changes: StreamTransformer; init: (value: A) => B; }; export declare type StatefulTransformResult = O extends PropertySeed ? PropertySeed : O extends EventStreamSeed ? EventStreamSeed : never; export declare type StatefulTransformResultScoped = O extends PropertySeed ? Property : O extends EventStreamSeed ? EventStream : never; export declare type StatefulUnaryTransformResult = O extends AtomSeed ? AtomSeed : O extends PropertySeed ? PropertySeed : O extends EventStreamSeed ? EventStreamSeed : never; export declare type StatefulUnaryTransformResultScoped = O extends AtomSeed ? Atom : O extends PropertySeed ? Property : O extends EventStreamSeed ? EventStream : never; export declare type StatefulUnaryTransformResultFor = O extends AtomSeed ? AtomSeed : O extends PropertySeed ? PropertySeed : O extends EventStreamSeed ? EventStreamSeed : never; export declare type StatefulUnaryTransformResultScopedFor = O extends AtomSeed ? Atom : O extends PropertySeed ? Property : O extends EventStreamSeed ? EventStream : never; export interface GenericTransformOp { (o: In): StatefulUnaryTransformResult; } export interface GenericTransformOpScoped { (o: In): StatefulUnaryTransformResultScoped; } export interface BinaryTransformOp { (o: In): StatefulTransformResult; } export interface BinaryTransformOpScoped { (o: In): StatefulTransformResultScoped; } export interface StreamTransformOp { (seed: EventStreamSeed | EventStream): EventStreamSeed; } export interface StreamTransformOpScoped { (seed: EventStreamSeed | EventStream): EventStream; } export declare type In = HKT & ObservableSeed; export interface UnaryTransformOp { (o: In): StatefulUnaryTransformResultFor; } export interface UnaryTransformOpScoped { (o: In): StatefulUnaryTransformResultScopedFor; } export declare const IdentityTransformer: { changes: (subscribe: Subscribe) => Subscribe; init: (value: A_1) => A_1; }; export declare function transform(desc: MethodDesc, transformer: Transformer): UnaryTransformOp; export declare function transform(desc: MethodDesc, transformer: Transformer, scope: Scope): UnaryTransformOpScoped; export declare function transform(desc: MethodDesc, transformer: Transformer): BinaryTransformOp; export declare function transform(desc: MethodDesc, transformer: Transformer, scope: Scope): BinaryTransformOpScoped; export declare function transform(desc: MethodDesc, transformer: StreamTransformer): StreamTransformOp; export declare function transform(desc: MethodDesc, transformer: StreamTransformer, scope: Scope): StreamTransformOpScoped;