import type { TsProtoGeneratedType } from "@cosmjs/proto-signing"; export type CamelCase = S extends `${infer F}${infer R}` ? `${Lowercase}${R}` : never; export type CamelCaseKeys = { [K in keyof T as CamelCase]: T[K]; }; export type SimplifyRequestMethod = T extends `${infer First}Request` ? CamelCase : T extends `${string}Response` | `${string}Impl` ? never : T extends `Msg${infer Last}` ? CamelCase : never; export type KeepOnlySimplifiedRequestMethods = { [K in keyof T as SimplifyRequestMethod]: T[K]; }; export type PickType = Pick>; export type ProtoPackageAndMessages = { protobufPackage: T["protobufPackage"]; } & PickType; export type EncodedProtoPackage> = { [P in keyof PickType as P extends string ? `${T["protobufPackage"]}.${P}` : never]: { typeUrl: P extends string ? `/${T["protobufPackage"]}.${P}` : void; value: T[P] extends TsProtoGeneratedType ? ReturnType : void; }; }; export type Rpc = { request(service: string, method: string, data: Uint8Array): Promise; }; export type StringLiteral = T extends string ? string extends T ? never : T : never; export type ProtobufModule = Record & { protobufPackage: string; };