import * as S from "@principia/prelude/Show";
import type { ReadonlyRecord } from "../Record";
import type { Show } from "./model";
export * from "@principia/prelude/Show/combinators";
export declare const named_: (show: S.Show, name: string | undefined) => S.Show;
export declare const named: (name: string | undefined) => (show: S.Show) => S.Show;
export declare const nullable: (or: S.Show) => S.Show;
export declare const undefinable: (or: S.Show) => S.Show;
export declare const type: >>(
shows: {
[K in keyof A]: Show;
}
) => Show<
{
[K in keyof A]: A[K];
}
>;
export declare const partial: >>(
properties: { [K in keyof A]: S.Show }
) => S.Show>;
export declare const record: (codomain: Show) => Show>;
export declare const array: (item: Show) => Show>;
export declare const tuple: >(
...components: {
[K in keyof A]: Show;
}
) => Show;
export declare const intersect_: (left: S.Show, right: S.Show) => S.Show;
export declare const intersect: (right: S.Show) => (left: S.Show) => S.Show;
export declare const sum_: (
tag: T,
members: { [K in keyof A]: S.Show> }
) => S.Show;
export declare const sum: (
tag: T
) => (members: { [K in keyof A]: S.Show> }) => S.Show;
export declare const lazy: (f: () => S.Show) => S.Show;
//# sourceMappingURL=combinators.d.ts.map