import { inspect, InspectOptions } from "util";
import V3 from "../V3";
import { ApiResponse } from "../../../base/ApiResponse";
/**
 * Pagination metadata containing navigation tokens and result information, this schema should according to convention be added to the response payload\'s \'meta\' attribute
 */
export declare class PaginationMeta {
    /**
     * The key of the list property contains the actual data items. This enables programmatic iteration over paginated results.
     */
    "key": string;
    /**
     * The actual number of items returned in this response. May be less than the requested pageSize for the last page.
     */
    "pageSize": number;
    /**
     * Token to fetch the previous page of results. Only included if there is a previous page, otherwise omitted.
     */
    "previousToken"?: string | null;
    /**
     * Token to fetch the next page of results. Only included if there is a next page, otherwise omitted.
     */
    "nextToken"?: string | null;
    constructor(payload: any);
}
/**
 * Options to pass to fetch a ResultInstance
 */
export interface ResultListInstanceFetchOptions {
    /** The maximum number of resources to return */
    pageSize?: number;
    /** Token for pagination */
    pageToken?: string;
}
export interface ResultSolution {
    operationId: string;
}
export interface ResultListInstance {
    _version: V3;
    _solution: ResultSolution;
    _uri: string;
    /**
     * Fetch a ResultInstance
     *
     * @param callback - Callback to handle processed record
     *
     * @returns Resolves to processed ResultInstance
     */
    fetch(callback?: (error: Error | null, item?: ResultInstance) => any): Promise<ResultInstance>;
    /**
     * Fetch a ResultInstance
     *
     * @param params - Parameter for request
     * @param callback - Callback to handle processed record
     *
     * @returns Resolves to processed ResultInstance
     */
    fetch(params: ResultListInstanceFetchOptions, callback?: (error: Error | null, item?: ResultInstance) => any): Promise<ResultInstance>;
    /**
     * Fetch a ResultInstance and return HTTP info
     *
     * @param callback - Callback to handle processed record
     *
     * @returns Resolves to processed ResultInstance with HTTP metadata
     */
    fetchWithHttpInfo(callback?: (error: Error | null, item?: ApiResponse<ResultInstance>) => any): Promise<ApiResponse<ResultInstance>>;
    /**
     * Fetch a ResultInstance and return HTTP info
     *
     * @param params - Parameter for request
     * @param callback - Callback to handle processed record
     *
     * @returns Resolves to processed ResultInstance with HTTP metadata
     */
    fetchWithHttpInfo(params: ResultListInstanceFetchOptions, callback?: (error: Error | null, item?: ApiResponse<ResultInstance>) => any): Promise<ApiResponse<ResultInstance>>;
    /**
     * Provide a user-friendly representation
     */
    toJSON(): any;
    [inspect.custom](_depth: any, options: InspectOptions): any;
}
export declare function ResultListInstance(version: V3, operationId: string): ResultListInstance;
interface ResultResource {
    domain: string;
    items: Array<{
        [key: string]: any;
    }>;
    meta: PaginationMeta;
}
export declare class ResultInstance {
    protected _version: V3;
    constructor(_version: V3, _payload: ResultResource, operationId: string);
    /**
     * Indicates the business domain the query was executed against
     */
    domain: string;
    /**
     * Array of result objects containing the query results. Each object contains properties matching the requested measures and dimensions.
     */
    items: Array<{
        [key: string]: any;
    }>;
    meta: PaginationMeta;
    /**
     * Provide a user-friendly representation
     *
     * @returns Object
     */
    toJSON(): {
        domain: string;
        items: {
            [key: string]: any;
        }[];
        meta: PaginationMeta;
    };
    [inspect.custom](_depth: any, options: InspectOptions): string;
}
export {};
