import { ExecuteQuery, ExecutionStatus, ExecutionResult, CancelQuery, ExecuteQueryOptions, DataOrError } from './types';
export declare class Dune {
    private API_KEY;
    private BASE_URL;
    constructor(API_KEY: string | undefined);
    /**
     * Wrapper to handle HTTP requests with clean typing
     * @param endpoint API endpoint
     * @returns Dune response
     */
    private fetchDune;
    /**
     * Execute a query
     * @param query_id Dune query id
     * @returns Execution id and state
     */
    execute(query_id: number, options?: ExecuteQueryOptions): Promise<DataOrError<ExecuteQuery>>;
    /**
     * Cancel an execution
     * @param execution_id Dune execution id
     * @returns Success of cancellation
     */
    cancel(execution_id: string): Promise<DataOrError<CancelQuery>>;
    /**
     * Check the status of an execution
     * @param execution_id Dune execution id
     * @returns Status of execution
     */
    status(execution_id: string): Promise<DataOrError<ExecutionStatus>>;
    /**
     * Fetch the results of an execution
     * @param exec_or_query_id Dune execution id or query id
     * @returns Results of execution, including row data if available
     */
    results<T>(exec_or_query_id: string | number, options?: ExecuteQueryOptions): Promise<DataOrError<ExecutionResult<T>>>;
}
