export interface ConnectInstance {
    Id?: string;
    Arn?: string;
    IdentityManagementType?: 'SAML' | 'CONNECT_MANAGED' | 'EXISTING_DIRECTORY';
    InstanceAlias?: string;
    CreatedTime?: string;
    ServiceRole?: string;
    InstanceStatus?: 'CREATION_IN_PROGRESS' | 'ACTIVE' | 'CREATION_FAILED';
    InboundCallsEnabled?: boolean;
    OutboundCallsEnabled?: boolean;
}
export interface PhoneNumber {
    PhoneNumberId?: string;
    PhoneNumberArn?: string;
    PhoneNumber?: string;
    PhoneNumberCountryCode?: string;
    PhoneNumberType?: 'TOLL_FREE' | 'DID' | 'UIFN' | 'SHARED' | 'THIRD_PARTY_TF' | 'THIRD_PARTY_DID';
    PhoneNumberDescription?: string;
    TargetArn?: string;
    InstanceId?: string;
    Tags?: Record<string, string>;
}
export interface ContactFlow {
    Id?: string;
    Arn?: string;
    Name?: string;
    Type?: 'CONTACT_FLOW' | 'CUSTOMER_QUEUE' | 'CUSTOMER_HOLD' | 'CUSTOMER_WHISPER' | 'AGENT_HOLD' | 'AGENT_WHISPER' | 'OUTBOUND_WHISPER' | 'AGENT_TRANSFER' | 'QUEUE_TRANSFER';
    State?: 'ACTIVE' | 'ARCHIVED';
    Description?: string;
    Content?: string;
    Tags?: Record<string, string>;
}
export interface Queue {
    QueueId?: string;
    QueueArn?: string;
    Name?: string;
    Description?: string;
    HoursOfOperationId?: string;
    MaxContacts?: number;
    Status?: 'ENABLED' | 'DISABLED';
    Tags?: Record<string, string>;
}
export interface AvailablePhoneNumber {
    PhoneNumber?: string;
    PhoneNumberCountryCode?: string;
    PhoneNumberType?: string;
}
/**
 * Amazon Connect client for phone/voice operations
 */
export declare class ConnectClient {
    private client;
    private region;
    constructor(region?: string);
    /**
     * Create a new Amazon Connect instance
     */
    createInstance(params: {
        InstanceAlias: string;
        IdentityManagementType?: 'SAML' | 'CONNECT_MANAGED' | 'EXISTING_DIRECTORY';
        InboundCallsEnabled?: boolean;
        OutboundCallsEnabled?: boolean;
        DirectoryId?: string;
        ClientToken?: string;
        Tags?: Record<string, string>;
    }): Promise<{
        Id?: string;
        Arn?: string;
    }>;
    /**
     * Delete an Amazon Connect instance
     */
    deleteInstance(instanceId: string): Promise<void>;
    /**
     * Get instance details
     */
    describeInstance(instanceId: string): Promise<ConnectInstance>;
    /**
     * List all Connect instances
     */
    listInstances(params?: {
        MaxResults?: number;
        NextToken?: string;
    }): Promise<{
        InstanceSummaryList?: ConnectInstance[];
        NextToken?: string;
    }>;
    /**
     * Search for available phone numbers
     */
    searchAvailablePhoneNumbers(params: {
        TargetArn: string;
        PhoneNumberCountryCode: string;
        PhoneNumberType: 'TOLL_FREE' | 'DID' | 'UIFN';
        PhoneNumberPrefix?: string;
        MaxResults?: number;
        NextToken?: string;
    }): Promise<{
        AvailableNumbersList?: AvailablePhoneNumber[];
        NextToken?: string;
    }>;
    /**
     * Claim a phone number
     */
    claimPhoneNumber(params: {
        TargetArn: string;
        PhoneNumber: string;
        PhoneNumberDescription?: string;
        Tags?: Record<string, string>;
        ClientToken?: string;
    }): Promise<{
        PhoneNumberId?: string;
        PhoneNumberArn?: string;
    }>;
    /**
     * Release a phone number
     */
    releasePhoneNumber(phoneNumberId: string, clientToken?: string): Promise<void>;
    /**
     * List phone numbers for an instance
     */
    listPhoneNumbers(params: {
        TargetArn?: string;
        InstanceId?: string;
        PhoneNumberTypes?: string[];
        PhoneNumberCountryCodes?: string[];
        MaxResults?: number;
        NextToken?: string;
    }): Promise<{
        ListPhoneNumbersSummaryList?: PhoneNumber[];
        NextToken?: string;
    }>;
    /**
     * Create a contact flow
     */
    createContactFlow(params: {
        InstanceId: string;
        Name: string;
        Type: 'CONTACT_FLOW' | 'CUSTOMER_QUEUE' | 'CUSTOMER_HOLD' | 'CUSTOMER_WHISPER' | 'AGENT_HOLD' | 'AGENT_WHISPER' | 'OUTBOUND_WHISPER' | 'AGENT_TRANSFER' | 'QUEUE_TRANSFER';
        Content: string;
        Description?: string;
        Tags?: Record<string, string>;
    }): Promise<{
        ContactFlowId?: string;
        ContactFlowArn?: string;
    }>;
    /**
     * Update contact flow content
     */
    updateContactFlowContent(params: {
        InstanceId: string;
        ContactFlowId: string;
        Content: string;
    }): Promise<void>;
    /**
     * List contact flows
     */
    listContactFlows(params: {
        InstanceId: string;
        ContactFlowTypes?: string[];
        MaxResults?: number;
        NextToken?: string;
    }): Promise<{
        ContactFlowSummaryList?: ContactFlow[];
        NextToken?: string;
    }>;
    /**
     * Create a queue
     */
    createQueue(params: {
        InstanceId: string;
        Name: string;
        Description?: string;
        HoursOfOperationId: string;
        MaxContacts?: number;
        OutboundCallerConfig?: {
            OutboundCallerIdName?: string;
            OutboundCallerIdNumberId?: string;
            OutboundFlowId?: string;
        };
        Tags?: Record<string, string>;
    }): Promise<{
        QueueId?: string;
        QueueArn?: string;
    }>;
    /**
     * Create hours of operation
     */
    createHoursOfOperation(params: {
        InstanceId: string;
        Name: string;
        TimeZone: string;
        Config: Array<{
            Day: 'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY';
            StartTime: {
                Hours: number;
                Minutes: number;
            };
            EndTime: {
                Hours: number;
                Minutes: number;
            };
        }>;
        Description?: string;
        Tags?: Record<string, string>;
    }): Promise<{
        HoursOfOperationId?: string;
        HoursOfOperationArn?: string;
    }>;
    /**
     * Associate phone number with contact flow
     */
    associatePhoneNumberContactFlow(params: {
        PhoneNumberId: string;
        InstanceId: string;
        ContactFlowId: string;
    }): Promise<void>;
    /**
     * Create a routing profile
     */
    createRoutingProfile(params: {
        InstanceId: string;
        Name: string;
        Description?: string;
        DefaultOutboundQueueId: string;
        MediaConcurrencies: Array<{
            Channel: 'VOICE' | 'CHAT' | 'TASK';
            Concurrency: number;
            CrossChannelBehavior?: {
                BehaviorType: 'ROUTE_CURRENT_CHANNEL_ONLY' | 'ROUTE_ANY_CHANNEL';
            };
        }>;
        QueueConfigs?: Array<{
            QueueReference: {
                QueueId: string;
                Channel: 'VOICE' | 'CHAT' | 'TASK';
            };
            Priority: number;
            Delay: number;
        }>;
        Tags?: Record<string, string>;
    }): Promise<{
        RoutingProfileId?: string;
        RoutingProfileArn?: string;
    }>;
    /**
     * Check if an instance exists by alias
     */
    instanceExists(instanceAlias: string): Promise<boolean>;
    /**
     * Start an outbound voice contact (make a call)
     */
    startOutboundVoiceContact(params: {
        InstanceId: string;
        ContactFlowId: string;
        DestinationPhoneNumber: string;
        SourcePhoneNumber?: string;
        QueueId?: string;
        Attributes?: Record<string, string>;
        AnswerMachineDetectionConfig?: {
            EnableAnswerMachineDetection?: boolean;
            AwaitAnswerMachinePrompt?: boolean;
        };
        CampaignId?: string;
        TrafficType?: 'GENERAL' | 'CAMPAIGN';
        ClientToken?: string;
    }): Promise<{
        ContactId?: string;
    }>;
    /**
     * Make a simple outbound call (convenience method)
     */
    makeCall(params: {
        instanceId: string;
        contactFlowId: string;
        to: string;
        from?: string;
        attributes?: Record<string, string>;
    }): Promise<{
        ContactId?: string;
    }>;
    /**
     * Stop a contact (end a call)
     */
    stopContact(params: {
        InstanceId: string;
        ContactId: string;
    }): Promise<void>;
    /**
     * Get contact details
     */
    describeContact(params: {
        InstanceId: string;
        ContactId: string;
    }): Promise<{
        Contact?: {
            Arn?: string;
            Id?: string;
            InitialContactId?: string;
            PreviousContactId?: string;
            InitiationMethod?: 'INBOUND' | 'OUTBOUND' | 'TRANSFER' | 'QUEUE_TRANSFER' | 'CALLBACK' | 'API' | 'DISCONNECT' | 'MONITOR' | 'EXTERNAL_OUTBOUND';
            Name?: string;
            Description?: string;
            Channel?: 'VOICE' | 'CHAT' | 'TASK';
            QueueInfo?: {
                Id?: string;
                EnqueueTimestamp?: string;
            };
            AgentInfo?: {
                Id?: string;
                ConnectedToAgentTimestamp?: string;
            };
            InitiationTimestamp?: string;
            DisconnectTimestamp?: string;
            ScheduledTimestamp?: string;
        };
    }>;
    /**
     * Update contact attributes
     */
    updateContactAttributes(params: {
        InstanceId: string;
        InitialContactId: string;
        Attributes: Record<string, string>;
    }): Promise<void>;
    /**
     * Create a user (agent)
     */
    createUser(params: {
        InstanceId: string;
        Username: string;
        Password?: string;
        IdentityInfo?: {
            FirstName?: string;
            LastName?: string;
            Email?: string;
            SecondaryEmail?: string;
            Mobile?: string;
        };
        PhoneConfig: {
            PhoneType: 'SOFT_PHONE' | 'DESK_PHONE';
            AutoAccept?: boolean;
            AfterContactWorkTimeLimit?: number;
            DeskPhoneNumber?: string;
        };
        DirectoryUserId?: string;
        SecurityProfileIds: string[];
        RoutingProfileId: string;
        HierarchyGroupId?: string;
        Tags?: Record<string, string>;
    }): Promise<{
        UserId?: string;
        UserArn?: string;
    }>;
    /**
     * Delete a user
     */
    deleteUser(params: {
        InstanceId: string;
        UserId: string;
    }): Promise<void>;
    /**
     * List users
     */
    listUsers(params: {
        InstanceId: string;
        NextToken?: string;
        MaxResults?: number;
    }): Promise<{
        UserSummaryList?: Array<{
            Id?: string;
            Arn?: string;
            Username?: string;
        }>;
        NextToken?: string;
    }>;
    /**
     * Create a prompt (audio file for IVR)
     */
    createPrompt(params: {
        InstanceId: string;
        Name: string;
        S3Uri: string;
        Description?: string;
        Tags?: Record<string, string>;
    }): Promise<{
        PromptId?: string;
        PromptArn?: string;
    }>;
    /**
     * List prompts
     */
    listPrompts(params: {
        InstanceId: string;
        NextToken?: string;
        MaxResults?: number;
    }): Promise<{
        PromptSummaryList?: Array<{
            Id?: string;
            Arn?: string;
            Name?: string;
        }>;
        NextToken?: string;
    }>;
    /**
     * Create a quick connect (for transfers)
     */
    createQuickConnect(params: {
        InstanceId: string;
        Name: string;
        Description?: string;
        QuickConnectConfig: {
            QuickConnectType: 'USER' | 'QUEUE' | 'PHONE_NUMBER';
            UserConfig?: {
                UserId: string;
                ContactFlowId: string;
            };
            QueueConfig?: {
                QueueId: string;
                ContactFlowId: string;
            };
            PhoneConfig?: {
                PhoneNumber: string;
            };
        };
        Tags?: Record<string, string>;
    }): Promise<{
        QuickConnectId?: string;
        QuickConnectArn?: string;
    }>;
    /**
     * Start a chat contact
     */
    startChatContact(params: {
        InstanceId: string;
        ContactFlowId: string;
        ParticipantDetails: {
            DisplayName: string;
        };
        Attributes?: Record<string, string>;
        InitialMessage?: {
            ContentType: string;
            Content: string;
        };
        ClientToken?: string;
        ChatDurationInMinutes?: number;
        SupportedMessagingContentTypes?: string[];
    }): Promise<{
        ContactId?: string;
        ParticipantId?: string;
        ParticipantToken?: string;
    }>;
    /**
     * Start a task contact
     */
    startTaskContact(params: {
        InstanceId: string;
        ContactFlowId?: string;
        PreviousContactId?: string;
        Attributes?: Record<string, string>;
        Name: string;
        Description?: string;
        References?: Record<string, {
            Value: string;
            Type: 'URL' | 'ATTACHMENT' | 'NUMBER' | 'STRING' | 'DATE' | 'EMAIL';
        }>;
        ClientToken?: string;
        ScheduledTime?: string;
        TaskTemplateId?: string;
        QuickConnectId?: string;
        RelatedContactId?: string;
    }): Promise<{
        ContactId?: string;
    }>;
    /**
     * Create a simple IVR contact flow for outbound calls
     */
    createOutboundIvrFlow(params: {
        message: string;
        voiceId?: string;
    }): string;
    /**
     * Create a contact flow with input collection
     */
    createInputCollectionFlow(params: {
        promptMessage: string;
        inputTimeout?: number;
        maxDigits?: number;
        successNextAction?: string;
        voiceId?: string;
    }): string;
    /**
     * Get current metric data
     */
    getCurrentMetricData(params: {
        InstanceId: string;
        Filters: {
            Queues?: string[];
            Channels?: Array<'VOICE' | 'CHAT' | 'TASK'>;
            RoutingProfiles?: string[];
        };
        CurrentMetrics: Array<{
            Name: 'AGENTS_ONLINE' | 'AGENTS_AVAILABLE' | 'AGENTS_ON_CALL' | 'AGENTS_NON_PRODUCTIVE' | 'AGENTS_AFTER_CONTACT_WORK' | 'AGENTS_ERROR' | 'AGENTS_STAFFED' | 'CONTACTS_IN_QUEUE' | 'OLDEST_CONTACT_AGE' | 'CONTACTS_SCHEDULED' | 'AGENTS_ON_CONTACT' | 'SLOTS_ACTIVE' | 'SLOTS_AVAILABLE';
            Unit?: 'SECONDS' | 'COUNT' | 'PERCENT';
        }>;
        Groupings?: Array<'QUEUE' | 'CHANNEL' | 'ROUTING_PROFILE'>;
        MaxResults?: number;
        NextToken?: string;
    }): Promise<{
        MetricResults?: Array<{
            Dimensions?: {
                Queue?: {
                    Id?: string;
                    Arn?: string;
                };
                Channel?: 'VOICE' | 'CHAT' | 'TASK';
            };
            Collections?: Array<{
                Metric?: {
                    Name?: string;
                    Unit?: string;
                };
                Value?: number;
            }>;
        }>;
        NextToken?: string;
        ApproximateTotalCount?: number;
    }>;
}
