import type { BusinessEventKey } from "../business-event.js"; import { type ExistingManifestContextOptions } from "../existing-manifest-context.js"; import type { ManifestFunction } from "../manifest-function.js"; import type { ManifestComponentDeletion, ManifestScope } from "../manifest-builder.js"; import type { WorkflowActionPayloads } from "./actions/index.js"; export type WorkflowVersionStatus = 'VERSION_STATUS_DRAFT' | 'VERSION_STATUS_PUBLISHED'; export type WorkflowTriggerStatus = 'TRIGGER_STATUS_ACTIVE' | 'TRIGGER_STATUS_INACTIVE' | 'TRIGGER_STATUS_SYSTEM_DISABLED'; export type WorkflowConditionBuilderMode = 'CONDITION_BUILDER_MODE_BASIC' | 'CONDITION_BUILDER_MODE_ADVANCED'; export interface WorkflowExecutionRateLimit { execution_limit: number; } export type WorkflowCustomVariableType = 'CUSTOM_VARIABLE_TYPE_TEXT' | 'CUSTOM_VARIABLE_TYPE_NUMBER' | 'CUSTOM_VARIABLE_TYPE_BOOLEAN' | 'CUSTOM_VARIABLE_TYPE_DATE' | 'CUSTOM_VARIABLE_TYPE_DATETIME'; export interface WorkflowCustomVariable { name: string; description?: string; data_type: WorkflowCustomVariableType; } export type WorkflowCategoryName = 'WORKFLOW_CATEGORY_NAME_BILLING_INCLUDED' | 'WORKFLOW_CATEGORY_NAME_CUSTOMER_CLOUD_SOURCE' | 'WORKFLOW_CATEGORY_NAME_TRANSFORMATIONS_SCHEDULES'; export interface WorkflowCategory { name: WorkflowCategoryName; sub_categories?: string[]; } export interface WorkflowConditionalBranch { rql_formula?: string; node_id?: string; } export interface WorkflowFork { branches: string[]; } export interface WorkflowLoop { inner_node: string; } export interface WorkflowGroup { inner_node: string; } export interface WorkflowSwitch { branches: WorkflowConditionalBranch[]; default_node?: string; } export interface WorkflowSummaryBullet { text?: string; sub_bullets?: WorkflowSummaryBullet[]; metadata?: Record; } export interface WorkflowSummary { text?: string; bullets?: WorkflowSummaryBullet[]; does_not_do?: string[]; } export interface WorkflowFunctionProcessingContext { function_summary?: string; function_summary_steps?: WorkflowSummaryBullet[]; function_api_name?: string; action_config_ids?: string[]; summary?: WorkflowSummary; } export interface WorkflowDigestProcessingContext { digest_config_id?: string; } export type WorkflowProcessingContext = { function_context: WorkflowFunctionProcessingContext; digest_context?: never; } | { function_context?: never; digest_context: WorkflowDigestProcessingContext; } | { function_context?: never; digest_context?: never; }; export interface WorkflowNode { /** Studio's role-scoped Action Registry lists config IDs via GetActionConfigSummaries; the public SDK does not expose that RPC. */ config_id: string; /** Fetch this config_id's input JSON Schema with Action Registry GetActionConfig; payloads vary by role and company. */ payload?: Record; next?: string; step_alias?: string; fork?: WorkflowFork; loop?: WorkflowLoop; group?: WorkflowGroup; switch?: WorkflowSwitch; processing_context?: WorkflowProcessingContext; summary?: WorkflowSummary; } /** Typed authoring from rippling-main's Action Registry snapshot; raw WorkflowNode supports newer actions. */ export declare function workflowAction(configId: K, payload: NoInfer, options?: Omit): WorkflowNode; export interface WorkflowGraph { root_node_id: string; nodes: Record; } export type WorkflowAutomationEventType = 'AUTOMATION_EVENT_TYPE_BUSINESS' | 'AUTOMATION_EVENT_TYPE_RECORD_CHANGE' | 'AUTOMATION_EVENT_TYPE_SCHEDULED' | 'AUTOMATION_EVENT_TYPE_MANUAL' | 'AUTOMATION_EVENT_TYPE_DATE_RELATIVE' | 'AUTOMATION_EVENT_TYPE_WEBHOOK' | 'AUTOMATION_EVENT_TYPE_INTEGRATION'; export type WorkflowRecordChangeOperationType = 'RECORD_CHANGE_OPERATION_TYPE_CREATE' | 'RECORD_CHANGE_OPERATION_TYPE_UPDATE' | 'RECORD_CHANGE_OPERATION_TYPE_DELETE' | 'RECORD_CHANGE_OPERATION_TYPE_CREATE_OR_UPDATE'; export type WorkflowDateRelativeOperatorType = 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_EQ' | 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_WITHIN' | 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_BETWEEN'; export type WorkflowScheduledFrequencyType = 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_DAILY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_WEEKDAY_DAILY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_WEEKLY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_BIWEEKLY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_MONTHLY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_MONTHLY_ON_DAY_OF_WEEK' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_ONE_TIME' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_QUARTERLY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_ANNUALLY' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_CUSTOM' | 'SCHEDULED_TRIGGER_FREQUENCY_TYPE_CRON'; export type WorkflowCustomScheduleFrequencyUnit = 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_DAYS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_WEEKS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_MONTHS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_YEARS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_HOURS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_MINUTES'; export interface WorkflowTimeOfDaySchedule { hour_of_day: number; minute_of_hour?: number; } export interface WorkflowOneTimeSchedule extends WorkflowTimeOfDaySchedule { year: number; month_of_year: number; day_of_month: number; } export interface WorkflowWeeklySchedule extends WorkflowTimeOfDaySchedule { day_of_week: number[]; } export interface WorkflowMonthlySchedule extends WorkflowTimeOfDaySchedule { day_of_month: number; start_month?: number; } export interface WorkflowMonthlyOnDayOfWeekSchedule extends WorkflowTimeOfDaySchedule { day_of_week: number; day_of_month: number; } export interface WorkflowQuarterlySchedule extends WorkflowTimeOfDaySchedule { day_of_month: number; month_of_year: number; } export interface WorkflowAnnualSchedule extends WorkflowTimeOfDaySchedule { day_of_month: number; month_of_year: number; start_month?: number; } export interface WorkflowCronSchedule { cron_expression: string; } type WorkflowCustomScheduleFields = { daily_schedule: WorkflowTimeOfDaySchedule; weekly_schedule: WorkflowWeeklySchedule; monthly_schedule: WorkflowMonthlySchedule; annual_schedule: WorkflowAnnualSchedule; }; type WorkflowCustomScheduleChoice = { custom_schedule_frequency: 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_DAYS'; daily_schedule: WorkflowTimeOfDaySchedule; weekly_schedule?: never; monthly_schedule?: never; annual_schedule?: never; } | { custom_schedule_frequency: 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_WEEKS'; weekly_schedule: WorkflowWeeklySchedule; daily_schedule?: never; monthly_schedule?: never; annual_schedule?: never; } | { custom_schedule_frequency: 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_MONTHS'; monthly_schedule: WorkflowMonthlySchedule; daily_schedule?: never; weekly_schedule?: never; annual_schedule?: never; } | { custom_schedule_frequency: 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_YEARS'; annual_schedule: WorkflowAnnualSchedule; daily_schedule?: never; weekly_schedule?: never; monthly_schedule?: never; } | ({ custom_schedule_frequency: 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_HOURS' | 'CUSTOM_SCHEDULE_TRIGGER_FREQUENCY_UNIT_MINUTES'; } & { [K in keyof WorkflowCustomScheduleFields]?: never; }); export type WorkflowCustomSchedule = WorkflowCustomScheduleChoice & { custom_schedule_frequency_value: number; hour_of_day?: number; minute_of_hour?: number; }; type WorkflowScheduledKeys = { SCHEDULED_TRIGGER_FREQUENCY_TYPE_DAILY: { daily_schedule: WorkflowTimeOfDaySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_WEEKDAY_DAILY: { weekday_schedule: WorkflowTimeOfDaySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_WEEKLY: { weekly_schedule: WorkflowWeeklySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_BIWEEKLY: { bi_weekly_schedule: WorkflowWeeklySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_MONTHLY: { monthly_schedule: WorkflowMonthlySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_MONTHLY_ON_DAY_OF_WEEK: { monthly_on_day_of_week_schedule: WorkflowMonthlyOnDayOfWeekSchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_ONE_TIME: { one_time_schedule: WorkflowOneTimeSchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_QUARTERLY: { quarterly_schedule: WorkflowQuarterlySchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_ANNUALLY: { annual_schedule: WorkflowAnnualSchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_CUSTOM: { custom_schedule: WorkflowCustomSchedule; }; SCHEDULED_TRIGGER_FREQUENCY_TYPE_CRON: { cron_schedule: WorkflowCronSchedule; }; }; type WorkflowScheduleKey = { [F in WorkflowScheduledFrequencyType]: keyof WorkflowScheduledKeys[F]; }[WorkflowScheduledFrequencyType]; export type WorkflowScheduledTriggerConfig = { [F in WorkflowScheduledFrequencyType]: { frequency: F; timezone: string; supported_role_states?: WorkflowRoleState[]; } & WorkflowScheduledKeys[F] & { [K in Exclude]?: never; }; }[WorkflowScheduledFrequencyType]; export interface WorkflowTriggerBase { automation_event_type: WorkflowAutomationEventType; og_module?: string; base_model?: string; rql_formula?: string; is_basic_workflow?: boolean; og_category?: string; condition_builder_mode?: WorkflowConditionBuilderMode; conditions_tree?: string; execution_rate_limit?: WorkflowExecutionRateLimit; } export interface WorkflowBusinessTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_BUSINESS'; /** Business event to subscribe to. Availability is validated during installation. */ event_name: BusinessEventKey; business_event_trigger?: { navigation_path?: string; }; } export type WorkflowBusinessEventKey = BusinessEventKey; export interface WorkflowRecordChangeTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_RECORD_CHANGE'; record_change_operation_type: WorkflowRecordChangeOperationType; } export type WorkflowRoleState = 'ROLE_STATE_INIT' | 'ROLE_STATE_HIRED' | 'ROLE_STATE_ACCEPTED' | 'ROLE_STATE_ACTIVE' | 'ROLE_STATE_TERMINATED'; export type WorkflowDateRelativeBaseField = 'start_date' | 'end_date'; export interface WorkflowDateRelativeOperand { time_delta: { days: number; }; } export type WorkflowDateRelativeTriggerConfig = { hour_of_day: number; minute_of_hour?: number; timezone?: string; supported_role_states?: WorkflowRoleState[]; trigger_on_anniversary?: boolean; should_trigger_exactly_once_per_trigger_object?: boolean; } & ({ base_model_date_field: WorkflowDateRelativeBaseField; base_model_date_field_rql_path?: never; } | { base_model_date_field?: never; base_model_date_field_rql_path: string; }) & ({ date_range_operator?: 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_EQ'; operands: [WorkflowDateRelativeOperand]; } | { date_range_operator: 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_WITHIN'; operands: [WorkflowDateRelativeOperand]; } | { date_range_operator: 'DATE_RELATIVE_TRIGGER_OPERATOR_TYPE_BETWEEN'; operands: [WorkflowDateRelativeOperand, WorkflowDateRelativeOperand]; }); export interface WorkflowDateRelativeTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_DATE_RELATIVE'; base_model: string; date_relative_trigger: WorkflowDateRelativeTriggerConfig; } export interface WorkflowScheduledTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_SCHEDULED'; scheduled_trigger: WorkflowScheduledTriggerConfig; } export interface WorkflowManualTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_MANUAL'; } export interface WorkflowIntegrationSenderFilter { allowed_supergroup_id?: string; } export type WorkflowIntegrationTriggerProvider = 'INTEGRATION_TRIGGER_PROVIDER_SLACK' | 'INTEGRATION_TRIGGER_PROVIDER_EMAIL'; export type WorkflowSlackTriggerEventType = 'SLACK_TRIGGER_EVENT_TYPE_MESSAGE_POSTED' | 'SLACK_TRIGGER_EVENT_TYPE_REACTION_ADDED'; export interface WorkflowSlackTriggerConfig { event_type: WorkflowSlackTriggerEventType; channel_ids: string[]; allowed_sender_group_id?: string; message_text_regex?: string; reaction_names?: string[]; include_thread_replies?: boolean; has_attachment?: boolean; sender_filter?: WorkflowIntegrationSenderFilter; workspace_owner_id?: string; } export interface WorkflowEmailTriggerConfig { recipient_email: string; subject_contains?: string; body_contains?: string; has_attachment?: boolean; sender_filter?: WorkflowIntegrationSenderFilter; } export interface WorkflowSlackIntegrationTrigger { provider: 'INTEGRATION_TRIGGER_PROVIDER_SLACK'; slack_trigger: WorkflowSlackTriggerConfig; email_trigger?: never; } export interface WorkflowEmailIntegrationTrigger { provider: 'INTEGRATION_TRIGGER_PROVIDER_EMAIL'; email_trigger: WorkflowEmailTriggerConfig; slack_trigger?: never; } export type WorkflowIntegrationTriggerConfig = WorkflowSlackIntegrationTrigger | WorkflowEmailIntegrationTrigger; export interface WorkflowIntegrationTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_INTEGRATION'; integration_trigger: WorkflowIntegrationTriggerConfig; } export interface WorkflowWebhookConfig { allowed_ips?: string[]; payload_schema?: Record; } export interface WorkflowWebhookDefinition { webhook_trigger_id?: string; production_webhook_url?: string; test_webhook_url?: string; config?: WorkflowWebhookConfig; auth_token_id?: string; } export interface WorkflowWebhookTrigger extends WorkflowTriggerBase { automation_event_type: 'AUTOMATION_EVENT_TYPE_WEBHOOK'; webhook_trigger: WorkflowWebhookDefinition; } export type WorkflowTrigger = WorkflowBusinessTrigger | WorkflowRecordChangeTrigger | WorkflowDateRelativeTrigger | WorkflowScheduledTrigger | WorkflowManualTrigger | WorkflowIntegrationTrigger | WorkflowWebhookTrigger; export interface WorkflowDeletionIdentifier { definitionId: string; } export interface WorkflowProps { /** * Stable workflow definition id. Auto-generated when omitted. */ definitionId?: string; /** * Workflow title shown to admins. */ title: string; /** * Short workflow description shown to admins. */ description?: string; /** * The function this workflow runs. Pass a live {@link ManifestFunction} reference, * or a raw api_name string for functions defined outside this manifest. * */ function?: ManifestFunction | string; /** * Trigger definition in the workflows v2 proto JSON shape. */ trigger: WorkflowTrigger; recipeId?: string; versionStatus?: WorkflowVersionStatus; triggerStatus?: WorkflowTriggerStatus; graph?: WorkflowGraph; functionsInferredGraph?: WorkflowGraph; customVariables?: Record; functionApiNamesByOldId?: Record; categories?: WorkflowCategory[]; } /** Defines a workflow using a trigger, function shorthand, or raw graph. */ export declare class Workflow { static readonly componentType: "WORKFLOW_DEFINITION"; static toDeletionIdentifier(identifier: WorkflowDeletionIdentifier | string): ManifestComponentDeletion; private readonly _definitionId; private readonly _title; private readonly _description; private readonly _functionApiName; private readonly _trigger; private readonly _props; constructor(scope: ManifestScope, props: WorkflowProps); static loadFromExisting(definitionId: string, options?: ExistingManifestContextOptions): Workflow; /** @internal Hydrates a workflow from existing manifest wire JSON. */ static _fromExistingComponent(scope: ManifestScope, component: Record): Workflow; private _validate; getDefinitionId(): string; toDict(): Record; } export {}; //# sourceMappingURL=index.d.ts.map