import { DestinationServer } from '@walkeros/server-core';
import { Destination as Destination$1, Mapping as Mapping$1 } from '@walkeros/core';
import { FirehoseClient, FirehoseClientConfig, PutRecordBatchCommand } from '@aws-sdk/client-firehose';

interface Settings {
    firehose?: FirehoseConfig;
}
type InitSettings = Partial<Settings>;
interface Mapping {
}
interface Env extends DestinationServer.Env {
    AWS: {
        FirehoseClient: typeof FirehoseClient;
        PutRecordBatchCommand: typeof PutRecordBatchCommand;
    };
}
type Types = Destination$1.Types<Settings, Mapping, Env, InitSettings>;
interface Destination extends DestinationServer.Destination<Types> {
    init: DestinationServer.InitFn<Types>;
}
type Config = {
    settings: Settings;
} & DestinationServer.Config<Types>;
type InitFn = DestinationServer.InitFn<Types>;
type PushFn = DestinationServer.PushFn<Types>;
type PartialConfig = DestinationServer.PartialConfig<Types>;
type PushEvents = DestinationServer.PushEvents<Mapping>;
type Rule = Mapping$1.Rule<Mapping>;
type Rules = Mapping$1.Rules<Rule>;
interface FirehoseConfig {
    streamName: string;
    client?: FirehoseClient;
    region?: string;
    config?: FirehoseClientConfig;
}

type index_Config = Config;
type index_Destination = Destination;
type index_Env = Env;
type index_FirehoseConfig = FirehoseConfig;
type index_InitFn = InitFn;
type index_InitSettings = InitSettings;
type index_Mapping = Mapping;
type index_PartialConfig = PartialConfig;
type index_PushEvents = PushEvents;
type index_PushFn = PushFn;
type index_Rule = Rule;
type index_Rules = Rules;
type index_Settings = Settings;
type index_Types = Types;
declare namespace index {
  export type { index_Config as Config, index_Destination as Destination, index_Env as Env, index_FirehoseConfig as FirehoseConfig, index_InitFn as InitFn, index_InitSettings as InitSettings, index_Mapping as Mapping, index_PartialConfig as PartialConfig, index_PushEvents as PushEvents, index_PushFn as PushFn, index_Rule as Rule, index_Rules as Rules, index_Settings as Settings, index_Types as Types };
}

declare const destinationFirehose: Destination;

export { index as DestinationFirehose, destinationFirehose as default, destinationFirehose };
