import { Send } from "../constants.cjs";
import { RunnableCallable } from "../utils.cjs";
import { Runnable, RunnableConfig, RunnableLike } from "@langchain/core/runnables";

//#region src/pregel/write.d.ts
/**
 * Mapping of write channels to Runnables that return the value to be written,
 * or None to skip writing.
 */
declare class ChannelWrite<RunInput = any> extends RunnableCallable<RunInput, RunInput> {
  writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>;
  constructor(writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>, tags?: string[]);
  _write(input: unknown, config: RunnableConfig): Promise<unknown>;
  static doWrite(config: RunnableConfig, writes: (ChannelWriteEntry | ChannelWriteTupleEntry | Send)[]): Promise<void>;
  static isWriter(runnable: RunnableLike): runnable is ChannelWrite;
  static registerWriter<T extends Runnable>(runnable: T): T;
}
interface ChannelWriteEntry {
  channel: string;
  value: unknown;
  skipNone?: boolean;
  mapper?: Runnable;
}
interface ChannelWriteTupleEntry {
  value: unknown;
  mapper: Runnable<any, [string, any][]>;
}
//#endregion
export { ChannelWrite };
//# sourceMappingURL=write.d.cts.map