export * as PromiseSdk from "./promise"; import { type OpenCodeClient } from "@opencode/client"; import type { Plugin } from "@opencode/plugin"; import { Session } from "@opencode/schema/session"; import { EmbeddedHost } from "./internal/host"; export interface InstanceConfiguration { readonly plugins: ReadonlyArray; } export interface InstanceOptions { /** Select a sharing key within the Session's current Location. Must not initialize plugins. */ readonly key: (session: typeof Session.Info.Encoded) => string; /** Reconstruct configuration on a cache miss, including after a host restart. */ readonly configure: (key: string) => InstanceConfiguration | Promise; } export interface CreateOptions extends Omit { readonly plugins?: ReadonlyArray; readonly instances?: InstanceOptions; } export type Interface = Omit & { readonly sessions: OpenCodeClient["session"]; readonly events: OpenCodeClient["event"]; readonly plugin: ((plugin: Plugin.Plugin) => Promise) & OpenCodeClient["plugin"]; readonly close: () => Promise; readonly [Symbol.asyncDispose]: () => Promise; }; export declare function create(options?: CreateOptions, embed?: EmbeddedHost.EmbedOptions): Promise;