All files / kernel-agents/src/types capability.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28                                                       
import type { JsonSchema } from '@metamask/kernel-utils';
 
export type Capability<Args extends Record<string, unknown>, Return = null> = (
  args: Args,
) => Promise<Return>;
 
export type CapabilitySchema<ArgNames extends string> = {
  description: string;
  args: Record<ArgNames, JsonSchema>;
  returns?: JsonSchema;
};
 
export type ExtractRecordKeys<Rec> =
  Rec extends Record<infer Key, unknown> ? Key : never;
 
export type CapabilitySpec<
  Args extends Record<string, unknown> = Record<string, unknown>,
  Return = void,
> = {
  func: Capability<Args, Return>;
  schema: CapabilitySchema<ExtractRecordKeys<Args>>;
};
 
export type CapabilityRecord<Keys extends string = string> = Record<
  Keys,
  CapabilitySpec<never, unknown>
>;