// src/engine/reflection/IInterfaceDescriptor.ts

export type Scalar =
  | 'string'
  | 'number'
  | 'boolean'
  | 'object'
  | 'array'
  | 'any'
  | 'void';

export interface IParamSpec {
  name: string;
  type: Scalar;
  optional?: boolean;
}

export interface IReturnSpec {
  type: Scalar;
  async?: boolean;
}

export interface IMethodSpec {
  name: string;
  op?: string;
  acceptsChannelSuffix?: string;
  emitsChannelSuffix?: string;
  params?: IParamSpec[];
  returns?: IReturnSpec;
}

export interface IInterfaceDescriptor {
  name: string;
  version?: string;
  methods: Record<string, IMethodSpec>;
}
