import { STM } from "@effect/core/stm/STM/definition/base";
import { EnforceNonEmptyRecord } from "@tsplus/stdlib/utilities/Types";
import type { _E, _R } from "@effect/core/stm/STM/definition/base";
/**
 * Applicative structure.
 * @tsplus static ets/STM/Ops struct
 * @tsplus location "@effect/core/stm/STM/operations/struct"
 */
export declare function struct<NER extends Record<string, STM<any, any, any>>>(r: EnforceNonEmptyRecord<NER> & Record<string, STM<any, any, any>>, __tsplusTrace?: string): STM<[
    NER[keyof NER]
] extends [{
    [_R]: () => infer R;
}] ? R : never, [
    NER[keyof NER]
] extends [{
    [_E]: () => infer E;
}] ? E : never, {
    [K in keyof NER]: [NER[K]] extends [STM<any, any, infer A>] ? A : never;
}>;
//# sourceMappingURL=struct.d.ts.map