//declare function fn(): void; //declare function fn(a: any): void; //interface Add { // (lhs: number, rhs: number): number; // '@': number; //} //declare var x: Add<{lhs: number; rhs: number}> declare module StoreSchema { export var xyz: any[]; //interface Test { // (a: string, b: number): void; // foo(a: string, b: number): void; // foo(a: string, b?: Test): number; // bar: (a: string, ...bs: Test[]) => void; // baz: { (a: string, b: number): void; }; // [eventId: number]: StoreSchema.LeaveRequest.Event; //} //interface Test { // foo(d: Date); // //foo: Date; // doo: Add; //} //TODO: // isAssignable // canMakeAssignable // getMutationsToMakeAssignable // applyMutations // TODO: specify seed/required data in the schema? //var requiredData = { // table: [], // LeaveRequest: [] //} export interface LeaveRequest/*{"alias": "L_R"}*/ { Id/*{"alias":"id"}*/: number; // TODO: special case PK!!! StatusId: number; JSON: string; } export module LeaveRequest { export enum Status { // <==> StatusEnum Requested = 1, Approved = 2, Rejected = 3, Cancelled = 4 } export interface Event { Id: number; // TODO: special case PK!!! LeaveRequest: LeaveRequest; Initiator/*{"alias": "initiator"}*/: number; Date: Date; TypeId: number; Comment?: string; Details?: string; } export module Event { export enum Type { // <==> EventTypeEnum Submit = 1, Approve = 2, Reject = 3, Cancel = 4, Comment = 5 } } } }