import { CacheSerializer, EngageActionPerformer } from './EngageActionPerformer'; import { MaybePromise } from '@segment/actions-core/destination-kit/types'; export declare enum SendabilityStatus { ShouldSend = "should_send", NotSubscribed = "not_subscribed", NoSupportedExternalIds = "no_supported_ids", InvalidSubscriptionStatus = "invalid_subscription_status", SendDisabled = "send_disabled" } export interface MessagePayloadBase { sendBasedOnOptOut?: boolean; send?: boolean; userId?: string; customArgs?: { [k: string]: unknown; }; externalIds?: { id?: string; type?: string; channelType?: string; subscriptionStatus?: string; }[]; traitEnrichment?: boolean; traits?: { [k: string]: unknown; }; segmentComputationId?: string; } export interface MessageSettingsBase { region?: string; sourceId?: string; spaceId?: string; profileApiEnvironment: string; profileApiAccessToken: string; } export type ExtId = NonNullable[number]; export interface SendabilityPayload { sendabilityStatus: SendabilityStatus | string; recepients?: ExtId[]; invalid?: ExtId[]; } export type RecepientSendResult = { recepient: ExtId; status: 'fulfilled' | 'rejected'; result?: TResult; error?: any; }; export declare abstract class MessageSendPerformer extends EngageActionPerformer { protected sendToRecepientCache(recepient: ExtId): Promise; doPerform(): Promise>[]>; abstract isSupportedExternalId(externalId: NonNullable[number]): boolean; static readonly nonSendableStatuses: string[]; static readonly sendableStatuses: string[]; getStaticMembersOfThisClass(): ThisStaticClass; isExternalIdSubscribed(extId: ExtId): boolean | undefined; convertSubscriptionStatusText(subVal: string | undefined): string; getSendabilityPayload(): SendabilityPayload; getRecepients(): ExtId[]; abstract sendToRecepient(recepient: ExtId): Promise; getCommonTags(): string[]; getCorrelationId(): unknown; getMessageId(): any; beforePerform(): void; getDefaultSettingsRegion?(): string; statsEventDeliveryTs(): void; beforeSend?(recepients: ExtId[]): MaybePromise; forAllRecepients(sendToRecepient: (recepient: ExtId) => TResult): Promise[]>; aggregateSendResults(sendResults: RecepientSendResult[]): any; getProfileTraits(): Promise>; } export declare const SendToRecepientResponseSerializer: CacheSerializer;