export const PUSHER_HEALTHCHECK_SUCCESS = '@@pusher/HEALTHCHECK_SUCCESS'
export const PUSHER_HEALTHCHECK_ERROR = '@@pusher/HEALTHCHECK_ERROR'
export const PUSHER_HEALTHCHECK_TIMEOUT = '@@pusher/HEALTHCHECK_TIMEOUT'

export interface PusherHealthcheckSuccessAction {
    type: '@@pusher/HEALTHCHECK_SUCCESS'
}

export interface PusherHealthcheckErrorAction {
    type: '@@pusher/HEALTHCHECK_ERROR'
    channel: string
    event: string
    error?: any
}

export interface PusherHealthcheckTimeoutAction {
    type: '@@pusher/HEALTHCHECK_TIMEOUT'
    channels: string[]
    error?: any
}

export const pusherHealthcheckSuccess = (): PusherHealthcheckSuccessAction =>
    ({ type: PUSHER_HEALTHCHECK_SUCCESS })

export const pusherHealthcheckError =
    (channel: string, event: string, error?: any): PusherHealthcheckErrorAction =>
        ({ type: PUSHER_HEALTHCHECK_ERROR, channel, event, error })

export const pusherHealthcheckTimeout =
    (channels: string[], error?: any): PusherHealthcheckTimeoutAction =>
        ({ type: PUSHER_HEALTHCHECK_TIMEOUT, channels, error })