import { Action } from '@ngrx/store';

import { RPCClientError } from '@loafer/ng-rpc/protocol';

import { Probe } from '@overflow/commons-typescript/model/probe';


export enum ActionType {
  Read = '[probe.detail] Read',
  ReadSuccess = '[probe.detail] ReadSuccess',
  ReadFailure = '[probe.detail] ReadFailure',
}

export class Read implements Action {
  readonly type = ActionType.Read;

  constructor(public payload: {id: string}) {}
}

export class ReadSuccess implements Action {
  readonly type = ActionType.ReadSuccess;

  constructor(public payload: Probe) {}
}

export class ReadFailure implements Action {
  readonly type = ActionType.ReadFailure;

  constructor(public payload: RPCClientError) {}
}


export type Actions =
  | Read
  | ReadSuccess
  | ReadFailure
;
