import type Runtype from "../Runtype.js"; import { type Static, type Parsed } from "../Runtype.js"; type Options = { receives?: Runtype.Core | undefined; resolves?: Runtype.Core | undefined; }; type AsyncFunction = (...args: readonly any[]) => Promise; type EnforcedParametersStatic = O["receives"] extends Runtype.Core ? Static : Parameters; type EnforcedReturnTypeStatic = O["resolves"] extends Runtype.Core ? Static : Awaited>; type EnforcedParametersParsed = O["receives"] extends Runtype.Core ? Parsed : Parameters; type EnforcedReturnTypeParsed = O["resolves"] extends Runtype.Core ? Parsed & Awaited> : Awaited>; type AsyncContract = O & { enforce: ) => Promise>>(f: F) => (...args: EnforcedParametersStatic) => Promise>; }; /** * Creates an async function contract. * * Possible failures: * * - `ARGUMENTS_INCORRECT` with `detail` reporting the inner failures * - `RETURN_INCORRECT` with `detail` reporting that the returned value is not a `Promise` * - `RESOLVE_INCORRECT` with `detail` reporting the inner failure */ declare const AsyncContract: ({ receives, resolves }: O) => AsyncContract; export default AsyncContract;