import * as React from "react"; import { Observable } from "rxjs"; import { IStateful } from "@daostack/client/src/types"; import { BaseProps, BaseComponent } from "./BaseComponent"; import { Component } from "./Component"; import { ComponentListLogs } from "./logging/ComponentListLogs"; export { ComponentListLogs }; export declare type CProps = Comp extends Component ? Props : undefined; export declare type CEntity = Comp extends Component ? Entity : undefined; export declare type CData = Comp extends Component ? Data : undefined; export declare type CCode = Comp extends Component ? Code : undefined; export declare type EntityList = Array<{ entity: Entity; data: Data; }>; declare type PFilterOptions = Props extends ComponentListProps ? FilterOptions : undefined; export interface ComponentListProps extends BaseProps { filter?: FilterOptions; sort?: (entities: EntityList) => EntityList; } interface State { entities: Entity[]; sorted: EntityList; logs: ComponentListLogs; } export declare abstract class ComponentList>, Comp extends Component, CEntity, CData, CCode>, Entity extends IStateful> = CEntity, Data = CData> extends BaseComponent> { protected abstract createObservableEntities(): Observable; protected abstract renderComponent(entity: Entity, children: any): React.ComponentElement, any>; private observableEntities; private _subscription?; constructor(props: Props); render(): any; componentWillMount(): Promise; componentWillUnmount(): void; private createObservableEntitiesWithProps; private clearPrevState; private fetchData; private onQueryEntities; private onQueryError; private onQueryComplete; }