import { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';
import { StreamApi } from '@vertexvis/stream-api';
import { UUID } from '@vertexvis/utils';
import { JwtProvider } from '../grpc';
import { ModelViewListResponse } from './types';
export interface ListByItemOptions {
    hasAnnotations?: boolean;
    cursor?: string;
    size?: number;
}
/**
 * The controller for managing the model views of a scene view.
 */
export declare class ModelViewController {
    private client;
    private stream;
    private jwtProvider;
    private deviceIdProvider;
    constructor(client: SceneViewAPIClient, stream: StreamApi, jwtProvider: JwtProvider, deviceIdProvider: () => string | undefined);
    /**
     * Fetches a page of model views for a given item. The result includes a
     * cursor that can be used to fetch the next page of results.
     *
     * @param itemId The ID of the scene item to retrieve model views for.
     * @param options Options to configure fetching of items.
     * @returns A page of model views.
     */
    listByItem(itemId: UUID.UUID, { hasAnnotations, cursor, size }?: ListByItemOptions): Promise<ModelViewListResponse>;
    /**
     * Loads the provided model view within the current scene view.
     *
     * @param sceneItemId The ID of the scene item this model view is being loaded for.
     * @param modelViewId The ID of the model view to load.
     */
    load(sceneItemId: UUID.UUID, modelViewId: UUID.UUID): Promise<void>;
    /**
     * Unloads any previously loaded model view within the current scene view,
     * then performs a `reset` on the scene to return to the initial state for
     * the scene view.
     */
    unload(): Promise<void>;
}
