/**
 * @fileoverview User-facing DataCanvas service. Wraps the provider and registry
 * with debug logging and tenant-id resolution; the registry handles TTL, caps,
 * and provider-keying.
 * @module src/services/canvas/core/DataCanvas
 */
import type { RequestContextLike } from '../../../utils/internal/requestContext.js';
import type { AcquireOptions } from '../types.js';
import { CanvasInstance } from './CanvasInstance.js';
import type { CanvasRegistry } from './CanvasRegistry.js';
import type { IDataCanvasProvider } from './IDataCanvasProvider.js';
/**
 * Service entry point for the DataCanvas primitive. Returned from
 * `core.canvas` on `CoreServices` when a canvas provider is configured.
 *
 * @example
 * ```ts
 * const canvas = await core.canvas!.acquire(input.canvas_id, ctx);
 * await canvas.registerTable('germplasm', rows);
 * const result = await canvas.query('SELECT name FROM germplasm LIMIT 10');
 * return { canvas_id: canvas.canvasId, expires_at: canvas.expiresAt, ... };
 * ```
 */
export declare class DataCanvas {
    private readonly provider;
    private readonly registry;
    constructor(provider: IDataCanvasProvider, registry: CanvasRegistry);
    /**
     * Resolve an existing canvas or create a new one. The returned
     * {@link CanvasInstance} captures `(canvasId, tenantId)` so subsequent
     * operations don't need to repeat them.
     */
    acquire(maybeId: string | undefined, context: RequestContextLike, _options?: AcquireOptions): Promise<CanvasInstance>;
    /**
     * Drop a canvas explicitly. Returns true when the canvas existed and was
     * destroyed.
     */
    drop(canvasId: string, context: RequestContextLike): Promise<boolean>;
    /** Active canvas count for the calling tenant. */
    countForTenant(context: RequestContextLike): number;
    /** Liveness check on the underlying provider. */
    healthCheck(): Promise<boolean>;
    /** Tear down the registry and provider. Called from `ServerHandle.shutdown()`. */
    shutdown(context: RequestContextLike): Promise<void>;
    /** @internal Surface the underlying provider for advanced use cases. */
    getProvider(): IDataCanvasProvider;
}
//# sourceMappingURL=DataCanvas.d.ts.map