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

import { RPCClientError } from '@loafer/ng-rpc';
import { NoAuthProbe } from '@overflow/commons-typescript/model/noauth';
import { MetaInputType } from '@overflow/commons-typescript/model/meta';

export enum ActionType {
  ReadAll = '[meta.meta-input-type] ReadAll',
  ReadAllSuccess = '[meta.meta-input-type] ReadAllSuccess',
  ReadAllFailure = '[meta.meta-input-type] ReadAllFailure',
}

export class ReadAll implements Action {
  readonly type = ActionType.ReadAll;
}

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

  constructor(public payload: MetaInputType[]) {}
}

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

  constructor(public payload: RPCClientError) {}
}

export type Actions =
  | ReadAll
  | ReadAllSuccess
  | ReadAllFailure
;
