import { ContractRouterClient, RouterContract } from "@orpc/contract";
//#region src/ui/api.d.ts
/**
 * Localized copy for the API connection-failure toast — the app's authored
 * override seam (ADR 0023). Called at error time, so the implementation may
 * resolve the active locale itself.
 */
type ApiConnectionErrorCopy = () => {
  title: string;
  description: string;
};
/** typed client for the app's default router contract (router-context default) */
type ApiClient<T extends RouterContract = RouterContract> = ContractRouterClient<T>;
interface ClientServiceConfig {
  hostUrl: string;
  rpcBase: `/${string}`;
  connectionError?: ApiConnectionErrorCopy;
}
type ClientRouterContext = {
  apiClient?: unknown;
  pluginClients?: Record<string, unknown>;
};
declare function createApiClient<T extends RouterContract = RouterContract>(config: ClientServiceConfig, headers?: Headers): ContractRouterClient<T>;
declare function createPluginApiClient<T extends RouterContract = RouterContract>(pluginKey: string, config: ClientServiceConfig, headers?: Headers): ContractRouterClient<T>;
declare function createServiceClients<C extends Record<string, RouterContract>, K extends keyof C & string = keyof C & string>(config: ClientServiceConfig, keys: readonly K[], headers?: Headers): Pick<{ [P in keyof C]: ContractRouterClient<C[P]>; }, K>;
declare function useApiClient<T extends RouterContract = RouterContract>(): ContractRouterClient<T>;
declare function useOrpc<T extends RouterContract = RouterContract>(): import("@orpc/tanstack-query").RouterUtils<ContractRouterClient<T, object>>;
declare function usePluginClients<C extends Record<string, unknown> = Record<string, unknown>>(): C;
//#endregion
export { ApiClient, ApiConnectionErrorCopy, type ClientRouterContext, ClientServiceConfig, type RouterContract, createApiClient, createPluginApiClient, createServiceClients, useApiClient, useOrpc, usePluginClients };
//# sourceMappingURL=api.d.mts.map