import { RecordAction } from './RecordAction.mjs';
import { ConversationAction } from './ConversationAction.mjs';
import { ConnectAction } from './ConnectAction.mjs';
import { TalkAction } from './TalkAction.mjs';
import { StreamAction } from './StreamAction.mjs';
import { InputAction } from './InputAction.mjs';
import { NotifyAction } from './NotifyAction.mjs';
import '../../enums/NCCOActions.mjs';
import '../../enums/NCCO/RecordingFormat.mjs';
import '../Endpoint/CallEndpoint.mjs';
import '../Endpoint/PhoneEndpoint.mjs';
import '../Endpoint/SIPEndpoint.mjs';
import '../Endpoint/VBCEndpoint.mjs';
import '../Endpoint/WebsocketEndpoint.mjs';
import '../Endpoint/AppEndpoint.mjs';
import '../../enums/NCCO/ConnectEventType.mjs';
import '../../enums/NCCO/MachineDetection.mjs';
import '../../enums/TTSLanguages.mjs';
import './DTMFSettings.mjs';
import './SpeechSettings.mjs';

/**
 * Represents a Nexmo Call Control Object (NCCO) action, which can be one of the following types:
 * - ConnectAction
 * - ConversationAction
 * - InputAction
 * - NotifyAction
 * - RecordAction
 * - StreamAction
 * - TalkAction
 *
 * An NCCO action defines a specific action or behavior in a call flow, and these actions can be combined
 * to create complex call scenarios when constructing NCCOs.
 */
type NCCOAction = ConnectAction | ConversationAction | InputAction | NotifyAction | RecordAction | StreamAction | TalkAction;

export type { NCCOAction };
