types.ts 857 B

1234567891011121314151617181920212223242526
  1. import { Long } from 'long'
  2. import { IConversionOptions } from 'protobufjs'
  3. import { IWorkingGroupMetadataAction } from '../compiled'
  4. export type AnyMessage<T> = T & {
  5. toJSON(): Record<string, unknown>
  6. }
  7. export type AnyMetadataClass<T> = {
  8. name: string
  9. decode(binary: Uint8Array): AnyMessage<T>
  10. encode(obj: T): { finish(): Uint8Array }
  11. toObject(obj: AnyMessage<T>, options?: IConversionOptions): Record<string, unknown>
  12. verify(message: { [k: string]: any }): null | string
  13. fromObject(object: { [k: string]: any }): AnyMessage<T>
  14. }
  15. export type DecodedMetadataObject<T> = {
  16. [K in keyof T]: T[K] extends Long | null | undefined
  17. ? Exclude<T[K], Long> | string
  18. : T[K] extends string | number | boolean | null | undefined
  19. ? T[K]
  20. : T[K] extends Array<infer S>
  21. ? DecodedMetadataObject<S>[]
  22. : DecodedMetadataObject<T[K]>
  23. }