/// <reference types="react" />
import { PaginationData, SearchParams, SolrCore, SolrMoreLikeThis, SolrGet, SolrQuery, SolrTransitions } from './DataStore';
import * as React from 'react';
declare type RenderLambda<T> = (v: T | T[], p?: PaginationData) => JSX.Element;
declare function databind<T>(event: Function, ds: SolrCore<object>, render: RenderLambda<T>, transition?: (sp: SearchParams) => Boolean): () => JSX.Element;
interface DataBoundProps<T> {
    autoload?: SearchParams;
    event: Function;
    dataStore: SolrGet<T> & SolrMoreLikeThis<T> & SolrQuery<T> & SolrTransitions;
    render: RenderLambda<T>;
    transition?: (params: SearchParams) => Boolean;
}
interface DataBoundState<T> {
    data?: T | T[];
    paging?: PaginationData;
}
declare class Bound extends React.Component<DataBoundProps<object>, DataBoundState<object>> {
    static childContextTypes: {
        transition: React.Requireable<any>;
        searchState: React.Requireable<any>;
    };
    static contextTypes: {
        router: React.Requireable<any>;
    };
    constructor(props: DataBoundProps<object>);
    transition(args: SearchParams): void;
    componentDidMount(): void;
    getChildContext(): {
        searchState: SearchParams;
        transition: any;
    };
    render(): JSX.Element;
}
declare class DataBind extends React.Component<{}, {}> {
    render(): JSX.Element;
}
export { RenderLambda, DataBoundProps, DataBoundState, DataBind, Bound, databind };
