import { Covariant as CO } from '@effect/typeclass';
import { Types } from 'effect';
import { Kind, TypeLambda } from 'effect/HKT';
import { Algebra } from './folds.js';
export type StructReturns<F extends TypeLambda, S extends Record<string, Algebra<F, any>>, E = unknown, R = unknown, I = never> = {
    [K in keyof S]: S[K] extends Algebra<F, infer A, E, R, I> ? A : never;
};
/**
 * Convert a struct of algebras into an algebra of a struct.
 * @category ops
 */
export declare const struct: <F extends TypeLambda>(F: CO.Covariant<F>) => <const S extends Record<string, Algebra<F, any>>>(struct: S) => <E = unknown, R = unknown, I = never>(fas: Kind<F, I, R, E, StructReturns<F, S, E, R, I>>) => Types.Simplify<StructReturns<F, S, E, R, I>>;
//# sourceMappingURL=struct.d.ts.map