@lodestar/api
Version:
A Typescript REST client for the Ethereum Consensus API
35 lines • 1.41 kB
TypeScript
import { EmptyMeta, EmptyResponseData } from "../codecs.js";
import { HttpSuccessCodes } from "../httpStatusCode.js";
import { Endpoint, HasOnlyOptionalProps } from "../types.js";
type ApplicationResponseObject<E extends Endpoint> = {
/**
* Set non-200 success status code
*/
status?: HttpSuccessCodes;
} & (E["return"] extends EmptyResponseData ? {
data?: never;
} : {
data: E["return"] | (E["return"] extends undefined ? undefined : Uint8Array);
}) & (E["meta"] extends EmptyMeta ? {
meta?: never;
} : {
meta: E["meta"];
});
export type ApplicationResponse<E extends Endpoint> = HasOnlyOptionalProps<ApplicationResponseObject<E>> extends true ? ApplicationResponseObject<E> | void : ApplicationResponseObject<E>;
export type ApiContext = {
/**
* Raw ssz bytes from request payload, only available for ssz requests
*/
sszBytes?: Uint8Array | null;
/**
* Informs application method about preferable return type to avoid unnecessary serialization
*/
returnBytes?: boolean;
};
type GenericOptions = Record<string, unknown>;
export type ApplicationMethod<E extends Endpoint> = (args: E["args"], context?: ApiContext, opts?: GenericOptions) => Promise<ApplicationResponse<E>>;
export type ApplicationMethods<Es extends Record<string, Endpoint>> = {
[K in keyof Es]: ApplicationMethod<Es[K]>;
};
export {};
//# sourceMappingURL=method.d.ts.map