import { S as Subscriber, C as ContextResolved, E as EnvironmentSystemVariables, G as EmailOutputUnvalidated, p as providerSchemas, W as WithPassthrough, R as SmsOutputUnvalidated, h as ChatOutputUnvalidated, M as PushOutputUnvalidated, J as InAppOutputUnvalidated, $ as ToolOutputUnvalidated, n as DelayOutputUnvalidated, v as DigestOutputUnvalidated, Y as ThrottleOutputUnvalidated } from './subscriber.types-Drf26WPA.js'; export { a0 as actionStepSchemas, a1 as channelStepSchemas } from './subscriber.types-Drf26WPA.js'; import { A as Awaitable } from './util.types-DaFfsxgy.js'; import { S as Schema, a as FromSchema } from './base.schema.types-BApIn9jr.js'; import 'chat'; import 'json-schema-to-ts'; import 'zod'; type StepResolverContext = Record, TEnv extends Record = Record> = { payload: TPayload; subscriber: Subscriber; context: ContextResolved; steps: Record; /** * Environment variables defined in the Novu Dashboard, merged with built-in * environment system variables (`name`, `type`). * * @example `env.name` — name of the current Novu environment * @example `env.type` — type of the current Novu environment ("dev" | "prod") * @example `env.MY_SECRET` — a user-defined environment variable */ env: TEnv & EnvironmentSystemVariables; }; type ResolveControls = T extends Schema ? FromSchema : Record; type ResolveEnv = T extends Schema ? FromSchema : Record; type StepResolverProviders = Record, T_Env extends Record = Record> = { [K in keyof (typeof providerSchemas)[T_StepType]]?: (step: { controls: T_Controls; outputs: T_Output; }, ctx: StepResolverContext) => Awaitable>>; }; type BaseStepResolverOptions = { controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Awaitable; }; type ChannelStepResolverOptions, TEnvSchema extends Schema | undefined = undefined> = BaseStepResolverOptions & { providers?: StepResolverProviders, T_Output, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type EmailStepResolver = { type: 'email'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'email', ResolveControls, EmailOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type SmsStepResolver = { type: 'sms'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'sms', ResolveControls, SmsOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type ChatStepResolver = { type: 'chat'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'chat', ResolveControls, ChatOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type PushStepResolver = { type: 'push'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'push', ResolveControls, PushOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type InAppStepResolver = { type: 'in_app'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'in_app', ResolveControls, InAppOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type ToolStepResolver = { type: 'tool'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; providers?: StepResolverProviders<'tool', ResolveControls, ToolOutputUnvalidated, ResolveControls, ResolveEnv>; disableOutputSanitization?: boolean; }; type DelayStepResolver = { type: 'delay'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; }; type DigestStepResolver = { type: 'digest'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; }; type ThrottleStepResolver = { type: 'throttle'; stepId: string; resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; envSchema?: TEnvSchema; skip?: BaseStepResolverOptions['skip']; }; type AnyStepResolver = EmailStepResolver | SmsStepResolver | ChatStepResolver | PushStepResolver | InAppStepResolver | ToolStepResolver | DelayStepResolver | DigestStepResolver | ThrottleStepResolver; declare function email(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'email', TControlSchema, TPayloadSchema, EmailOutputUnvalidated, TEnvSchema>): EmailStepResolver; declare function sms(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'sms', TControlSchema, TPayloadSchema, SmsOutputUnvalidated, TEnvSchema>): SmsStepResolver; declare function chat(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'chat', TControlSchema, TPayloadSchema, ChatOutputUnvalidated, TEnvSchema>): ChatStepResolver; declare function push(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'push', TControlSchema, TPayloadSchema, PushOutputUnvalidated, TEnvSchema>): PushStepResolver; declare function inApp(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'in_app', TControlSchema, TPayloadSchema, InAppOutputUnvalidated, TEnvSchema>): InAppStepResolver; declare function tool(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: ChannelStepResolverOptions<'tool', TControlSchema, TPayloadSchema, ToolOutputUnvalidated, TEnvSchema>): ToolStepResolver; declare function delay(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: BaseStepResolverOptions): DelayStepResolver; declare function digest(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: BaseStepResolverOptions): DigestStepResolver; declare function throttle(stepId: string, resolve: (controls: ResolveControls, ctx: StepResolverContext, ResolveEnv>) => Promise, options?: BaseStepResolverOptions): ThrottleStepResolver; declare const step: { email: typeof email; sms: typeof sms; chat: typeof chat; push: typeof push; inApp: typeof inApp; tool: typeof tool; delay: typeof delay; digest: typeof digest; throttle: typeof throttle; }; export { type AnyStepResolver, type ChatStepResolver, ContextResolved, type DelayStepResolver, type DigestStepResolver, type EmailStepResolver, type InAppStepResolver, type PushStepResolver, type SmsStepResolver, type StepResolverContext, Subscriber, type ThrottleStepResolver, type ToolStepResolver, WithPassthrough, providerSchemas, step };