//#region src/requests/media/adapter.d.ts
interface BaseContext {
  /**
   * Passed by your custom example generator, for your custom media adapter to receive.
   */
  customData?: Record<string, unknown>;
}
interface GoContext extends BaseContext {
  lang: 'go';
  addImport: (name: string) => void;
}
interface JavaScriptContext extends BaseContext {
  lang: 'js';
  addImport: (pkg: string, name: string) => void;
}
interface JavaContext extends BaseContext {
  lang: 'java';
  addImport: (specifier: string) => void;
}
interface CSharpContext extends BaseContext {
  lang: 'csharp';
  addImport: (specifier: string) => void;
}
type MediaContext = JavaContext | GoContext | JavaScriptContext | CSharpContext | (BaseContext & {
  lang: string;
});
interface MediaAdapter {
  /**
   * encode data into specified media type for `fetch()`.
   *
   * Return the encoded form of `data.body` property.
   */
  encode: (data: {
    body: unknown;
  }) => BodyInit;
  /**
   * generate code example for creating the body in a given programming language.
   *
   * @param data - request data.
   * @param lang - name of programming language.
   * @param ctx - context passed from the generator of programming language.
   *
   * @returns code that inits a `body` variable, or undefined if not supported (skip example for that language).
   */
  generateExample: (data: {
    body: unknown;
  }, ctx: MediaContext) => string | undefined;
}
//#endregion
export { MediaAdapter };
//# sourceMappingURL=adapter.d.ts.map