import { EventCDR, EventGroupListView, EventsFilter } from '..';
import AccountStatus from '../models/account/AccountStatus';
import { AccountDevicePost, AccountDevicePut } from '../models/accountDevice';
import { Asset, AssetPutRequest } from '../models/asset';
import CallsPost from '../models/calls/CallsPost';
import CallsPut from '../models/calls/CallsPut';
import CallsResult from '../models/calls/CallsResult';
import { Code, CodePost, CodePut } from '../models/codeDeck';
import { Contact, ContactPost, ContactPut } from '../models/contacts';
import { DDI, DDIPostRequest, DDIPutRequest } from '../models/ddi';
import { Device, DevicePost, DevicePut } from '../models/device';
import EventRecording from '../models/eventGroup/EventRecording';
import { MetricDaily, MetricMonthly } from '../models/metrics';
import { Product, ProductPost, ProductPut, ProductTable } from '../models/productTable';
import { Rate, RatePost, RatePut } from '../models/ratingTable';
import { OutboundProxy, OutboundProxyPostRequest, OutboundProxyPutRequest, OutboundRoute, OutboundRoutePostRequest, OutboundRoutePutRequest, VoiceServer, VoiceServerPostRequest, VoiceServerPutRequest } from '../models/region';
import { ServiceCharge, ServiceChargeFilter, ServiceChargePost, ServiceChargePut } from '../models/serviceCharge';
import { Setting, SettingPostRequest, SettingPutRequest } from '../models/setting';
import { Comment, CommentPost, CommentPut, Note, NotePost, NotePut, Ticket } from '../models/ticket';
import AllocationPostRequest from '../models/ticket/AllocationPostRequest';
import AllocationPutRequest from '../models/ticket/AllocationPutRequest';
import AssignmentPutRequest from '../models/ticket/AssignmentPutRequest';
import EmailPut from '../models/ticket/EmailPut';
import ExportPostRequest from '../models/ticket/ExportPostRequest';
import ExportPutRequest from '../models/ticket/ExportPutRequest';
import GlobalNumberPostRequest from '../models/ticket/GlobalNumberPostRequest';
import GlobalNumberPutRequest from '../models/ticket/GlobalNumberPutRequest';
import MigrationPostRequest from '../models/ticket/MigrationPostRequest';
import MigrationPutRequest from '../models/ticket/MigrationPutRequest';
import PortStatus from '../models/ticket/PortStatus';
import PortStatusPost from '../models/ticket/PortStatusPost';
import PortStatusPut from '../models/ticket/PortStatusPut';
import PortSubmission from '../models/ticket/PortSubmission';
import PortSubmissionPost from '../models/ticket/PortSubmissionPost';
import PortSubmissionPut from '../models/ticket/PortSubmissionPut';
import { Trunk, TrunkPostRequest, TrunkPutRequest } from '../models/trunk';
import { Webhook, WebhookPostRequest, WebhookPutRequest } from '../models/webhook';
import BaseAPIService from './BaseAPIService';
declare class UserChildService<T, U, V, X> extends BaseAPIService<T, U, V, X> {
    constructor(baseURL: string, token: string, userId: string, serviceName: string);
}
declare class AccountChildService<T, U, V, X> extends BaseAPIService<T, U, V, X> {
    constructor(baseURL: string, token: string, accountId: string, serviceName: string);
}
declare class RatingTableRateService extends BaseAPIService<Rate, RatePut, RatePost, void> {
    constructor(baseURL: string, token: string, ratingTableId: string);
}
declare class ProductTableProductService extends BaseAPIService<Product, ProductPut, ProductPost, void> {
    constructor(baseURL: string, token: string, productTableId: string);
}
declare class CodeDeckCodeService extends BaseAPIService<Code, CodePut, CodePost, void> {
    constructor(baseURL: string, token: string, productTableId: string);
}
declare class OutboundProxyService extends BaseAPIService<OutboundProxy, OutboundProxyPutRequest, OutboundProxyPostRequest, void> {
    constructor(baseURL: string, token: string, regionId: string);
}
declare class OutboundRouteService extends BaseAPIService<OutboundRoute, OutboundRoutePutRequest, OutboundRoutePostRequest, void> {
    constructor(baseURL: string, token: string, regionId: string);
}
declare class VoiceServerService extends BaseAPIService<VoiceServer, VoiceServerPutRequest, VoiceServerPostRequest, void> {
    constructor(baseURL: string, token: string, regionId: string);
}
declare class DeviceService extends AccountChildService<Device, DevicePut, DevicePost, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class TrunkService extends AccountChildService<Trunk, TrunkPutRequest, TrunkPostRequest, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class AssetService extends AccountChildService<Asset, AssetPutRequest, FormData, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class DDIService extends AccountChildService<DDI, DDIPutRequest, DDIPostRequest, void> {
    constructor(baseURL: string, token: string, accountId: string);
    release(id: string): Promise<void>;
}
declare class SettingService extends AccountChildService<Setting, SettingPutRequest, SettingPostRequest, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class WebhookService extends AccountChildService<Webhook, WebhookPutRequest, WebhookPostRequest, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class AccountStatusService extends AccountChildService<AccountStatus, void, void, void> {
    constructor(baseURL: string, token: string, accountId: string);
}
declare class EventGroupService extends AccountChildService<EventGroupListView, void, void, EventsFilter> {
    private accountId;
    constructor(baseURL: string, token: string, accountId: string);
    sequence(id: string): Promise<string>;
    pcap(id: string): Promise<ArrayBuffer>;
    recordings(id: string): Promise<EventRecording>;
    cdrs(id: string): Promise<EventCDR>;
}
declare class DeviceContactService extends AccountChildService<Contact, ContactPut, ContactPost, void> {
    private accountId;
    constructor(baseURL: string, token: string, accountId: string, deviceId: string);
}
declare class ContactService extends AccountChildService<Contact, ContactPut, ContactPost, void> {
    private accountId;
    constructor(baseURL: string, token: string, accountId: string);
    device(deviceId: string): DeviceContactService;
}
declare class CallsService extends AccountChildService<CallsResult, CallsPut, CallsPost, void> {
    constructor(baseURL: string, token: string, accountId: string);
    park(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    attendedTransfer(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    attendedTransferComplete(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    transfer(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    conference(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    recover(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    merge(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
    queue(callSid: string, putRequest: CallsPut): Promise<void | CallsResult>;
}
declare class UserDeviceService extends UserChildService<AccountDevicePut, AccountDevicePut, AccountDevicePost, void> {
    constructor(baseURL: string, token: string, userId: string);
}
declare class TicketCommentService extends BaseAPIService<Comment, CommentPut, CommentPost, void> {
    constructor(baseURL: string, token: string, ticketId: string);
}
declare class TicketNoteService extends BaseAPIService<Note, NotePut, NotePost, void> {
    constructor(baseURL: string, token: string, ticketId: string);
}
declare class TicketChargeService extends BaseAPIService<ServiceCharge, ServiceChargePut, ServiceChargePost, void> {
    constructor(baseURL: string, token: string, ticketId: string);
}
declare class OrganisationChargeService extends BaseAPIService<ServiceCharge, ServiceChargePut, ServiceChargePost, ServiceChargeFilter> {
    constructor(baseURL: string, token: string, orgId: string);
    downloadServiceCharges(filter: ServiceChargeFilter): Promise<string>;
    downloadProductTable(): Promise<string>;
    downloadRatingTable(): Promise<string>;
    downloadCDRs(year: string, month: string): Promise<string>;
}
declare class OrganisationMetricMonthlyService extends BaseAPIService<MetricMonthly, void, void, void> {
    constructor(baseURL: string, token: string, orgId: string);
    getMonth(year: string, month: string): Promise<MetricMonthly>;
}
declare class OrganisationMetricDailyService extends BaseAPIService<MetricDaily, void, void, void> {
    constructor(baseURL: string, token: string, orgId: string);
    getMonth(year: string, month: string): Promise<MetricDaily[]>;
}
declare class OrganisationChargeUtilService extends BaseAPIService<ServiceCharge, ServiceChargePut, ServiceChargePost, void> {
    constructor(baseURL: string, token: string, orgId: string);
}
declare class PortingTicketSubmissionStatusService extends BaseAPIService<PortStatus, PortStatusPut, PortStatusPost, void> {
    constructor(baseURL: string, token: string, ticketId: string, submissionId: string);
}
declare class PortingTicketSubmissionService extends BaseAPIService<PortSubmission, PortSubmissionPut, PortSubmissionPost, void> {
    private ticketId;
    constructor(baseURL: string, token: string, ticketId: string);
    status(submissionId: string): PortingTicketSubmissionStatusService;
}
declare class PortingTicketService extends BaseAPIService<Ticket, void, FormData, void> {
    constructor(baseURL: string, token: string);
    build(id: string): Promise<void | Ticket>;
    submission(ticketId: string): PortingTicketSubmissionService;
}
declare class AllocationTicketService extends BaseAPIService<Ticket, AllocationPutRequest, AllocationPostRequest, void> {
    constructor(baseURL: string, token: string);
    build(id: string): Promise<void | Ticket>;
}
declare class MigrationTicketService extends BaseAPIService<Ticket, MigrationPutRequest, MigrationPostRequest, void> {
    constructor(baseURL: string, token: string);
    build(id: string): Promise<void | Ticket>;
}
declare class ExportTicketService extends BaseAPIService<Ticket, ExportPutRequest, ExportPostRequest, void> {
    constructor(baseURL: string, token: string);
    build(id: string): Promise<void | Ticket>;
}
declare class GlobalNumberTicketService extends BaseAPIService<Ticket, GlobalNumberPutRequest, GlobalNumberPostRequest, void> {
    constructor(baseURL: string, token: string);
    build(id: string): Promise<void | Ticket>;
}
declare class AssignmentTicketService extends BaseAPIService<Ticket, AssignmentPutRequest, void, void> {
    constructor(baseURL: string, token: string);
}
declare class TicketProductTableService extends BaseAPIService<ProductTable, void, void, void> {
    ticketId: string;
    constructor(baseURL: string, token: string, ticketId: string);
    get(): Promise<ProductTable>;
}
declare class TicketEmailService extends BaseAPIService<void, EmailPut, void, void> {
    constructor(baseURL: string, token: string, ticketId: string);
}
declare class TicketStatusService extends BaseAPIService<void, void, void, void> {
    constructor(baseURL: string, token: string, ticketId: string);
    update(status: string): Promise<void>;
    open(): Promise<void>;
    pending(): Promise<void>;
    closed(): Promise<void>;
}
export { DeviceService, TrunkService, AssetService, DDIService, SettingService, WebhookService, AccountStatusService, UserDeviceService, RatingTableRateService, ProductTableProductService, CodeDeckCodeService, TicketNoteService, TicketCommentService, TicketEmailService, TicketStatusService, TicketChargeService, PortingTicketService, AllocationTicketService, MigrationTicketService, GlobalNumberTicketService, ExportTicketService, AssignmentTicketService, TicketProductTableService, OrganisationChargeService, OrganisationChargeUtilService, EventGroupService, OutboundProxyService, OutboundRouteService, VoiceServerService, ContactService, DeviceContactService, CallsService, OrganisationMetricMonthlyService, OrganisationMetricDailyService, };
