import { Service, ServiceParameters } from "@webda/core";
import { WorkerLogLevel } from "@webda/workout";
import { CloudFormationContributor } from "..js";
declare const CloudWatchLoggerParameters_base: {
    new (...args: any[]): {
        endpoint?: string;
        credentials?: {
            accessKeyId: string;
            secretAccessKey: string;
            sessionToken?: string;
        };
        region?: string;
        type: string;
        url?: string;
        openapi?: import("@webda/core/lib/router").OpenAPIWebdaDefinition;
    };
} & typeof ServiceParameters;
/**
 * Send webda log to CloudWatch
 */
export declare class CloudWatchLoggerParameters extends CloudWatchLoggerParameters_base {
    /**
     * logGroupName to send logStream to
     */
    logGroupName: string;
    logStreamNamePrefix?: string;
    kmsKeyId: string;
    tags: any;
    logLevel: WorkerLogLevel;
    singlePush: boolean;
    CloudFormation: any;
    CloudFormationSkip: boolean;
}
/**
 * Output log to a CloudWatch Stream
 *
 * @WebdaModda
 */
export default class CloudWatchLogger<T extends CloudWatchLoggerParameters = CloudWatchLoggerParameters> extends Service<T> implements CloudFormationContributor {
    _logGroupName: string;
    _logStreamName: string;
    _seqToken: string;
    _logStream: any;
    _cloudwatch: any;
    _bufferedLogs: any[];
    /**
     * Load the parameters
     *
     * @param params
     */
    loadParameters(params: any): CloudWatchLoggerParameters;
    /**
     * @inheritdoc
     */
    init(): Promise<this>;
    /**
     * Send logs to CloudWatch
     *
     * @param copy
     * @returns
     */
    sendLogs(copy?: boolean): Promise<void>;
    /**
     * @inheritdoc
     */
    _log(level: any, ...args: any[]): void;
    /**
     * @inheritdoc
     */
    getARNPolicy(accountId: string): {
        Sid: string;
        Effect: string;
        Action: string[];
        Resource: string[];
    };
    /**
     * @inheritdoc
     */
    getCloudFormation(): {};
}
export { CloudWatchLogger };
