/**
 * `compose([...])` — fan-out combinator.
 *
 * Pattern: Composite. Same shape as React's children array, RxJS's
 *          `merge`, OTel's `MultiSpanProcessor`. Pass an array of
 *          strategies; get back a single strategy that fan-outs each
 *          call to every child.
 *
 * Use when:
 *   - Multi-vendor pipelines (`compose([datadog(), otel(), console()])`)
 *   - Test instrumentation alongside production sink
 *     (`compose([inMemorySink(), stripeBilling()])`) so test assertions
 *     can read ticks while production also ships
 *   - Tier-staging — local dev mirrors what production sees
 *
 * Per-child error isolation: if one child's `exportEvent` throws, the
 * other children still receive the event. The throwing child's
 * `_onError` is called (if present); otherwise the error is logged
 * via `console.warn` once. One bad sink never breaks the chain.
 *
 * Capabilities are OR-ed across children — if any child supports a
 * capability, the composite reports it as supported. The dispatcher
 * uses this to decide whether to bother building event objects at all.
 *
 * Idempotent operations:
 *   - `flush()` — calls every child's `flush()` (sync or async)
 *     concurrently, awaits all
 *   - `stop()` — calls every child's `stop()` once, in order; failures
 *     in one child don't block the others
 */
import type { ObservabilityStrategy, CostStrategy, LiveStatusStrategy, LensStrategy } from './types.js';
/**
 * Compose multiple ObservabilityStrategies into a single fan-out.
 *
 * @example
 *   const all = composeObservability([
 *     consoleObservability(),
 *     cloudwatchObservability({ logGroupName: '/agent/prod' }),
 *     otelObservability({ serviceName: 'my-agent-prod' }),
 *   ]);
 */
export declare function composeObservability(children: readonly ObservabilityStrategy[]): ObservabilityStrategy;
/** Compose CostStrategies. */
export declare function composeCost(children: readonly CostStrategy[]): CostStrategy;
/** Compose LiveStatusStrategies. */
export declare function composeLiveStatus(children: readonly LiveStatusStrategy[]): LiveStatusStrategy;
/** Compose LensStrategies. */
export declare function composeLens(children: readonly LensStrategy[]): LensStrategy;
