import { IServiceContainer, IServiceModule } from '@aesop-fables/containr'; import { DataCatalogModule } from '../bootstrapping/DataCatalogModule'; import { RepositoryCompartmentOptions } from '../Repository'; import { DataCatalogRegistration, DataCatalogRegistrations } from '../bootstrapping/createDataCatalogModule'; import { DataStoreToken } from '../DataStoreToken'; import { DataCache } from '../DataCache'; import { SchemaBuilder } from '../Schema'; import { ISubject } from '../ISubject'; import { Observable } from 'rxjs'; export interface Video { id: string; title: string; } export interface VideoMetadata { id: string; duration: number; } export interface VideoRegistry { videos: RepositoryCompartmentOptions; metadata: RepositoryCompartmentOptions; } export type VideoCompartments = { mostRecent: Video[]; }; export type VideoScenarioExpression = { delay?: number; mostRecent?: Video[]; videos?: Record; metadata?: Record; }; export type IntegrationBootstrapOptions = { catalogModules?: DataCatalogModule[]; scenario?: VideoScenarioExpression; serviceModules?: IServiceModule[]; schema?: (schema: SchemaBuilder) => void; }; export type HttpClientResponse = { status: number; data: T; }; export interface IHttpClient { get(url: string): Promise>; } export declare const VideoGalleryTokens: { dashboard: DataStoreToken; repository: DataStoreToken; }; export declare class MostRecentVideos implements ISubject { private readonly cache; constructor(cache: DataCache); createObservable(): Observable; } export declare class VideoGalleryDataModule implements DataCatalogRegistration { private readonly httpClient; constructor(httpClient: IHttpClient); defineData(): DataCatalogRegistrations; } export declare const withVideoGalleryData: DataCatalogModule; export declare function createIntegrationContainer(options?: IntegrationBootstrapOptions): IServiceContainer;