/// <reference types="node" />
import type { RequestOptions } from 'https';
export type BasicAuth = {
    apikey: string;
    siteid: string;
};
export type BearerAuth = string;
export type RequestAuth = BasicAuth | BearerAuth;
export type RequestData = Record<string, any> | undefined;
export type RequestHandlerOptions = {
    method: RequestOptions['method'];
    uri: string;
    headers: RequestOptions['headers'];
    body?: string | null;
};
export interface PushRequestData {
    delivery_id?: string;
    device_id?: string;
    event?: 'delivered' | 'opened' | 'converted';
    timestamp?: number;
}
export default class CIORequest {
    apikey?: BasicAuth['apikey'];
    siteid?: BasicAuth['siteid'];
    appKey?: BearerAuth;
    auth: string;
    defaults: RequestOptions;
    constructor(auth: RequestAuth, defaults?: RequestOptions);
    options(uri: string, method: RequestOptions['method'], data?: RequestData): RequestHandlerOptions;
    handler({ uri, body, method, headers }: RequestHandlerOptions): Promise<Record<string, any>>;
    get(uri: string): Promise<Record<string, any>>;
    put(uri: string, data?: RequestData): Promise<Record<string, any>>;
    destroy(uri: string): Promise<Record<string, any>>;
    post(uri: string, data?: RequestData): Promise<Record<string, any>>;
}
