type SchemaLeaf = "copy" | "convert";
export interface SchemaProperty {
  required: boolean;
  schema: Schema;
  derive?: (v: any) => any; // For client extension results, transports, etc.
}
interface SchemaObject {
  [property: string]: SchemaProperty;
}
type SchemaArray = [SchemaObject] | [SchemaLeaf];

export type Schema = SchemaLeaf | SchemaArray | SchemaObject;

type SchemaLeaf = "copy" | "convert";
export interface SchemaProperty {
  required: boolean;
  schema: Schema;
  derive?: (v: any) => any;
}
interface SchemaObject {
  [property: string]: SchemaProperty;
}
type SchemaArray = [SchemaObject] | [SchemaLeaf];

export type Schema = SchemaLeaf | SchemaArray | SchemaObject;

--- 
+++ 
@@ -2,7 +2,7 @@
 export interface SchemaProperty {
   required: boolean;
   schema: Schema;
-  derive?: (v: any) => any;
+  derive?: (v: any) => any; // For client extension results, transports, etc.
 }
 interface SchemaObject {
   [property: string]: SchemaProperty;
Add a comment to the `derive` declaration with examples.
