/**
 * This code was generated by
 * \ / _    _  _|   _  _
 *  | (_)\/(_)(_|\/| |(/_  v1.0.0
 *       /       /
 */

import Domain = require('../base/Domain');
import Twilio = require('./Twilio');
import V1 = require('./flexApi/V1');
import V2 = require('./flexApi/V2');
import { AssessmentsListInstance } from './flexApi/v1/assessments';
import { ChannelListInstance } from './flexApi/v1/channel';
import { ConfigurationListInstance } from './flexApi/v1/configuration';
import { FlexFlowListInstance } from './flexApi/v1/flexFlow';
import { GoodDataListInstance } from './flexApi/v1/goodData';
import { InteractionListInstance } from './flexApi/v1/interaction';
import { UserRolesListInstance } from './flexApi/v1/userRoles';
import { WebChannelListInstance } from './flexApi/v1/webChannel';
import { WebChannelsListInstance } from './flexApi/v2/webChannels';


declare class FlexApi extends Domain {
  /**
   * Initialize flex_api domain
   *
   * @param twilio - The twilio client
   */
  constructor(twilio: Twilio);

  readonly assessments: AssessmentsListInstance;
  readonly channel: ChannelListInstance;
  readonly configuration: ConfigurationListInstance;
  readonly flexFlow: FlexFlowListInstance;
  readonly goodData: GoodDataListInstance;
  readonly interaction: InteractionListInstance;
  readonly userRoles: UserRolesListInstance;
  readonly v1: V1;
  readonly v2: V2;
  readonly webChannel: WebChannelListInstance;
  readonly webChannels: WebChannelsListInstance;
}

export = FlexApi;
