/**
 * Service-runtime emitter — V2 Phase 3, Round 2.
 *
 * Handles `topology: 'service'` factories: providers that ship as
 * network-attached services we deploy ourselves (REST / gRPC / MCP).
 *
 * For each `import:` entry the consumer declares, this emitter produces:
 *   clients/<provider-name>.ts                — typed network client
 *   servers/<provider-name>-server.ts (cond.) — Fastify route scaffold
 *
 * The server-bind file is emitted only when `factory.v2metadata?.serverTemplate`
 * is non-null and non-empty. Managed/external providers (we don't host them)
 * leave it null; we-host providers populate it.
 *
 * Protocol dispatch (factory.v2metadata?.protocol):
 *   'rest' (default)   → fetch-based HTTP client; one POST per dotted op
 *   'grpc'             → gRPC stub init (Round 2: TODO scaffolding)
 *   'mcp'              → MCP client init (Round 2: TODO scaffolding)
 *
 * Endpoint env-var resolution:
 *   1. factory.v2metadata?.config?.endpoint?.env if present
 *   2. Convention <UPPERCASE_PROVIDER>_API_URL otherwise
 *
 * Deployment hint: realize emits a `deployments.<env>.instances.services.<provider>`
 * entry with `config: { endpoint: { env: <ENV_NAME> } }` — mentioned in result.notes
 * for the consumer's review. The actual instance emission is upstream of this
 * emitter; here we just declare the convention.
 */
import type { RuntimeEmitter, RuntimeEmitterContext, RuntimeEmitterResult } from './dispatcher.js';
/**
 * Service-runtime emitter implementation.
 *
 * One call to `emit()` processes a single `import:` entry. Produces:
 *   - 1 client file under `clients/<provider-filename>.ts`
 *   - 1 server-bind file under `servers/<provider-filename>-server.ts` (only
 *     when factory.v2metadata.serverTemplate is non-null)
 */
export declare class ServiceRuntimeEmitter implements RuntimeEmitter {
    readonly topology: "service";
    emit(ctx: RuntimeEmitterContext): Promise<RuntimeEmitterResult>;
}
//# sourceMappingURL=service.d.ts.map