import type { _ } from "hkts/src"; import type { ContractObject, NetworkObject } from "@truffle/contract-schema/spec"; import type { IdObject } from "../../resources"; import type { Process } from "../../process"; import * as Base from "../batch"; export type Config = { network?: {}; artifact?: {}; requires?: {}; produces: {} | undefined; entry: any; result: any; }; export type Network = C["network"] & { networkId: string; }; export type Requires = "requires" extends keyof C ? C["requires"] : {}; export type Produces = C["produces"]; export type Entry = C["entry"]; export type Result = C["result"]; export type ArtifactNetwork = NetworkObject & Requires; export type Artifact = ContractObject & C["artifact"] & { db: { contract: IdObject<"contracts">; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: ArtifactNetwork; }; }; export type Input = ArtifactNetwork; export type Output = Input & Produces; export type Structure = { network: Network; artifacts: (ContractObject & Artifact & { db: { contract: IdObject<"contracts">; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: _; }; })[]; }; export type Breadcrumb<_C extends Config> = { artifactIndex: number; }; export type Batch = { structure: Structure; breadcrumb: Breadcrumb; input: Input; output: Output; entry: Entry; result: Result; }; export type Options = Omit>, "iterate" | "find" | "initialize" | "merge">; export declare const configure: (options: Options) => , O extends Output>(inputs: { network: import("hkts/src").$, [I]>; artifacts: import("hkts/src").$; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: ArtifactNetwork; } | undefined; } & { db: { contract: IdObject<"contracts">; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: _<0>; } | undefined; }, [I]>[]; }) => Generator, [I & O]>; artifacts: import("hkts/src").$; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: ArtifactNetwork; } | undefined; } & { db: { contract: IdObject<"contracts">; callBytecode: IdObject<"bytecodes">; createBytecode: IdObject<"bytecodes">; }; networks?: { [networkId: string]: _<0>; } | undefined; }, [I & O]>[]; }, any>;