import * as React from "react";
import * as PropTypes from "prop-types";
import { SDK, IElement } from "@gooddata/gooddata-js";
import { IValidElementsOptions } from "@gooddata/gooddata-js/lib/metadata";
import { AFM } from "@gooddata/typings";
export interface IPaging {
    count: number;
    offset: number;
    total: number;
}
export interface IAttributeElementsProps {
    sdk?: SDK;
    projectId: string;
    uri?: string;
    identifier?: string;
    options?: IValidElementsOptions;
    children?(props: IAttributeElementsChildren): any;
}
export interface IValidElements {
    items: IElement[];
    paging: IPaging;
    elementsMeta: {
        attribute: string;
        attributeDisplayForm: string;
        filter: string;
        order: AFM.SortDirection;
    };
}
export interface IAttributeElementsState {
    validElements?: IValidElements;
    isLoading: boolean;
    error?: any;
}
export interface IAttributeElementsChildren {
    validElements: IValidElements;
    loadMore: () => void;
    isLoading: boolean;
    error: any;
}
/**
 * AttributeElements
 * is a component that lists attribute values using a children function
 */
export declare class AttributeElements extends React.PureComponent<IAttributeElementsProps, IAttributeElementsState> {
    static propTypes: {
        projectId: PropTypes.Validator<any>;
        uri: PropTypes.Requireable<any>;
        identifier: PropTypes.Requireable<any>;
        options: PropTypes.Requireable<any>;
    };
    static defaultProps: Partial<IAttributeElementsProps>;
    private uri?;
    private getValidElementsPromise?;
    private sdk;
    constructor(props: IAttributeElementsProps);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: IAttributeElementsProps): void;
    loadMore(event?: any): void;
    getValidElements(props: IAttributeElementsProps, offset: number): void;
    render(): any;
}
