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

/**
 * 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 };
