function createBindingValidator<
  Type extends string,
  Props extends JsonObject,
  Meta extends JsonObject,
>(
  type: Type,
  props?: {
    [K in keyof Props]: T.Validatable<Props[K]>
  },
  meta?: {
    [K in keyof Meta]: T.Validatable<Meta[K]>
  }
): T.ObjectValidator<
  import('@tldraw/utils').Expand<
    {
      [P in T.ExtractRequiredKeys<TLBaseBinding<Type, Props>>]: TLBaseBinding<
        Type,
        Props
      >[P]
    } & {
      [P_1 in T.ExtractOptionalKeys<TLBaseBinding<Type, Props>>]?:
        | TLBaseBinding<Type, Props>[P_1]
        | undefined
    }
  >
>
Parameters
NameDescription

type

Type

props

{
  [K in keyof Props]: T.Validatable<Props[K]>
}

meta

{
  [K in keyof Meta]: T.Validatable<Meta[K]>
}
Returns
T.ObjectValidator<
  import('@tldraw/utils').Expand<
    {
      [P in T.ExtractRequiredKeys<TLBaseBinding<Type, Props>>]: TLBaseBinding<
        Type,
        Props
      >[P]
    } & {
      [P_1 in T.ExtractOptionalKeys<TLBaseBinding<Type, Props>>]?:
        | TLBaseBinding<Type, Props>[P_1]
        | undefined
    }
  >
>
createBindingPropsMigrationSequencecreatePresenceStateDerivation