import type { Cache } from '@core/cache.type';
import type { KVStore } from '@core/kv-store.type.ts';
import type { Client } from '@projectdysnomia/dysnomia';
import type { CommandState } from './command-state';

export interface PartialContext<T = any> {
  client: Client;
  cache: Cache;
  kv: KVStore;
  id?: string; // unique id for this command instance
  state?: CommandState<T>; // state associated with this command instance
}

export type CommandContext<T = any> = Required<PartialContext<T>>;
