UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

915 lines (840 loc) 28.2 kB
// Type definitions for Meteor 1.3 // Project: http://www.meteor.com/ // Definitions by: Dave Allen <https://github.com/fullflavedave> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /** * These are the common (for client and server) modules and interfaces that can't be automatically generated from the Meteor data.js file */ interface EJSONable { [key: string]: number | string | boolean | Object | number[] | string[] | Object[] | Date | Uint8Array | EJSON.CustomType; } interface JSONable { [key: string]: number | string | boolean | Object | number[] | string[] | Object[]; } interface EJSON extends EJSONable {} declare namespace Match { var Any: any; var String: any; var Integer: any; var Boolean: any; var undefined: any; //function null(); // not allowed in TypeScript var Object: any; function Optional(pattern: any):boolean; function ObjectIncluding(dico: any):boolean; function OneOf(...patterns: any[]): any; function Where(condition: any): any; } declare namespace Meteor { interface UserEmail { address:string; verified:boolean; } interface User { _id?:string; username?:string; emails?:Meteor.UserEmail[]; createdAt?: number; profile?: any; services?: any; } enum StatusEnum { connected, connecting, failed, waiting, offline } interface LiveQueryHandle { stop(): void; } } declare namespace DDP { interface DDPStatic { subscribe(name: string, ...rest: any[]): Meteor.SubscriptionHandle; call(method: string, ...parameters: any[]):void; apply(method: string, ...parameters: any[]):void; methods(IMeteorMethodsDictionary: any): any; status():DDPStatus; reconnect(): void; disconnect(): void; onReconnect(): void; } interface DDPStatus { connected: boolean; status: Meteor.StatusEnum; retryCount: number; //To turn this into an interval until the next reconnection, use retryTime - (new Date()).getTime() retryTime?: number; reason?: string; } } declare namespace Mongo { interface Selector { [key: string]:any; } interface Selector extends Object {} interface Modifier {} interface SortSpecifier {} interface FieldSpecifier { [id: string]: Number; } } declare namespace HTTP { interface HTTPRequest { content?:string; data?:any; query?:string; params?:{[id:string]:string}; auth?:string; headers?:{[id:string]:string}; timeout?:number; followRedirects?:boolean; } interface HTTPResponse { statusCode?:number; headers?:{[id:string]: string}; content?:string; data?:any; } function call(method: string, url: string, options?: HTTP.HTTPRequest, asyncCallback?:Function):HTTP.HTTPResponse; function del(url: string, callOptions?: HTTP.HTTPRequest, asyncCallback?: Function): HTTP.HTTPResponse; function get(url: string, callOptions?: HTTP.HTTPRequest, asyncCallback?: Function): HTTP.HTTPResponse; function post(url: string, callOptions?: HTTP.HTTPRequest, asyncCallback?: Function): HTTP.HTTPResponse; function put(url: string, callOptions?: HTTP.HTTPRequest, asyncCallback?: Function): HTTP.HTTPResponse; } declare namespace Random { function id(numberOfChars?: number): string; function secret(numberOfChars?: number): string; function fraction():number; function hexString(numberOfDigits:number):string; // @param numberOfDigits, @returns a random hex string of the given length function choice(array:any[]):string; // @param array, @return a random element in array function choice(str:string):string; // @param str, @return a random char in str } declare namespace Accounts { function loginServicesConfigured(): boolean; function onPageLoadLogin(func: Function): void; } /** * These are the client modules and interfaces that can't be automatically generated from the Meteor data.js file */ declare namespace Meteor { /** Start definitions for Template **/ export interface Event { type:string; target:HTMLElement; currentTarget:HTMLElement; which: number; stopPropagation():void; stopImmediatePropagation():void; preventDefault():void; isPropagationStopped():boolean; isImmediatePropagationStopped():boolean; isDefaultPrevented():boolean; } interface EventHandlerFunction extends Function { (event?:Meteor.Event, templateInstance?: Blaze.TemplateInstance):void; } interface EventMap { [id:string]:Meteor.EventHandlerFunction; } /** End definitions for Template **/ interface LoginWithExternalServiceOptions { requestPermissions?: string[]; requestOfflineToken?: boolean; loginUrlParameters?: {[param: string]: any} loginHint?: string; loginStyle?: string; redirectUrl?: "popup" | "redirect"; profile?: any; email?: string; } function loginWithMeteorDeveloperAccount(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithFacebook(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithGithub(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithGoogle(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithMeetup(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithTwitter(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function loginWithWeibo(options?: Meteor.LoginWithExternalServiceOptions, callback?: Function): void; function _sleepForMs(milliseconds: number): void; interface SubscriptionHandle { stop(): void; ready(): boolean; } } declare namespace Blaze { interface View { name: string; parentView: Blaze.View; isCreated: boolean; isRendered: boolean; isDestroyed: boolean; renderCount: number; autorun(runFunc: Function): void; onViewCreated(func: Function): void; onViewReady(func: Function): void; onViewDestroyed(func: Function): void; firstNode(): Node; lastNode(): Node; template: Blaze.Template; templateInstance(): any; } interface Template { viewName: string; renderFunction: Function; constructView(): Blaze.View; } } declare namespace BrowserPolicy { interface framing { disallow():void; restrictToOrigin(origin:string):void; allowAll():void; } interface content { allowEval():void; allowInlineStyles():void; allowInlineScripts():void; allowSameOriginForAll():void; allowDataUrlForAll():void; allowOriginForAll(origin:string):void; allowImageOrigin(origin:string):void; allowFrameOrigin(origin:string):void; allowContentTypeSniffing():void; allowAllContentOrigin():void; allowAllContentDataUrl():void; allowAllContentSameOrigin():void; disallowAll():void; disallowInlineStyles():void; disallowEval():void; disallowInlineScripts():void; disallowFont():void; disallowObject():void; disallowAllContent():void; //TODO: add the basic content types // allow<content type>Origin(origin) // allow<content type>DataUrl() // allow<content type>SameOrigin() // disallow<content type>() } } /** * These are the server modules and interfaces that can't be automatically generated from the Meteor data.js file */ declare namespace Meteor { interface EmailFields { from?: () => string; subject?: (user: Meteor.User) => string; text?: (user: Meteor.User, url: string) => string; html?: (user: Meteor.User, url: string) => string; } interface EmailTemplates { from?: string; siteName?: string; headers?: { [id: string]: string }; // TODO: should define IHeaders interface resetPassword?: Meteor.EmailFields; enrollAccount?: Meteor.EmailFields; verifyEmail?: Meteor.EmailFields; } interface Connection { id: string; close: Function; onClose: Function; clientAddress: string; httpHeaders: Object; } interface IValidateLoginAttemptCbOpts { type: string; allowed: boolean; error: Error; user: Meteor.User; connection: Meteor.Connection; methodName: string; methodArguments: any[]; } } declare namespace Mongo { interface AllowDenyOptions { insert?: (userId: string, doc: any) => boolean; update?: (userId: string, doc: any, fieldNames: string[], modifier: any) => boolean; remove?: (userId: string, doc: any) => boolean; fetch?: string[]; transform?: Function; } } declare namespace Accounts { interface IValidateLoginAttemptCbOpts { type?: string; allowed?: boolean; error?: Meteor.Error; user?: Meteor.User; connection?: Meteor.Connection; methodName?: string; methodArguments?: any[]; } } interface MailComposerOptions { escapeSMTP: boolean; encoding: string; charset: string; keepBcc: boolean; forceEmbeddedImages: boolean; } declare var MailComposer: MailComposerStatic; interface MailComposerStatic { new(options: MailComposerOptions): MailComposer; } interface MailComposer { addHeader(name: string, value: string): void; setMessageOption(from: string, to: string, body: string, html: string): void; streamMessage(): void; pipe(stream: any /** fs.WriteStream **/): void; } /** * These are the modules and interfaces for packages that can't be automatically generated from the Meteor data.js file */ interface ILengthAble { length: number; } interface ITinytestAssertions { ok(doc: Object): void; expect_fail(): void; fail(doc: Object): void; runId(): string; equal<T>(actual: T, expected: T, message?: string, not?: boolean): void; notEqual<T>(actual: T, expected: T, message?: string): void; instanceOf(obj : Object, klass: Function, message?: string): void; notInstanceOf(obj : Object, klass: Function, message?: string): void; matches(actual : any, regexp: RegExp, message?: string): void; notMatches(actual : any, regexp: RegExp, message?: string): void; throws(f: Function, expected?: string|RegExp): void; isTrue(v: boolean, msg?: string): void; isFalse(v: boolean, msg?: string): void; isNull(v: any, msg?: string): void; isNotNull(v: any, msg?: string): void; isUndefined(v: any, msg?: string): void; isNotUndefined(v: any, msg?: string): void; isNan(v: any, msg?: string): void; isNotNan(v: any, msg?: string): void; include<T>(s: Array<T>|Object|string, value: any, msg?: string, not?: boolean): void; notInclude<T>(s: Array<T>|Object|string, value: any, msg?: string, not?: boolean): void; length(obj: ILengthAble, expected_length: number, msg?: string): void; _stringEqual(actual: string, expected: string, msg?: string): void; } declare namespace Tinytest { function add(description : string , func : (test : ITinytestAssertions) => void) : void; function addAsync(description : string , func : (test : ITinytestAssertions) => void) : void; } // Kept in for backwards compatibility declare namespace Meteor { interface Tinytest { add(description : string , func : (test : ITinytestAssertions) => void) : void; addAsync(description : string , func : (test : ITinytestAssertions) => void) : void; } } declare namespace Accounts { function addEmail(userId: string, newEmail: string, verified?: boolean): void; function changePassword(oldPassword: string, newPassword: string, callback?: Function): void; function createUser(options: { username?: string; email?: string; password?: string; profile?: Object; }, callback?: Function): string; var emailTemplates: Meteor.EmailTemplates; function findUserByEmail(email: string): Object; function findUserByUsername(username: string): Object; function forgotPassword(options: { email?: string; }, callback?: Function): void; function onEmailVerificationLink(callback: Function): void; function onEnrollmentLink(callback: Function): void; function onResetPasswordLink(callback: Function): void; function removeEmail(userId: string, email: string): void; function resetPassword(token: string, newPassword: string, callback?: Function): void; function sendEnrollmentEmail(userId: string, email?: string): void; function sendResetPasswordEmail(userId: string, email?: string): void; function sendVerificationEmail(userId: string, email?: string): void; function setPassword(userId: string, newPassword: string, options?: { logout?: Object; }): void; function setUsername(userId: string, newUsername: string): void; var ui: { config(options: { requestPermissions?: Object; requestOfflineToken?: Object; forceApprovalPrompt?: Object; passwordSignupFields?: string; }): void; }; function verifyEmail(token: string, callback?: Function): void; function config(options: { sendVerificationEmail?: boolean; forbidClientAccountCreation?: boolean; restrictCreationByEmailDomain?: string | Function; loginExpirationInDays?: number; oauthSecretKey?: string; }): void; function onLogin(func: Function): { stop: () => void }; function onLoginFailure(func: Function): { stop: () => void }; function user(): Meteor.User; function userId(): string; function loggingIn(): boolean; function logout(callback?: Function): void; function logoutOtherClients(callback?: Function): void; function onCreateUser(func: Function): void; function validateLoginAttempt(cb: (params: Accounts.IValidateLoginAttemptCbOpts) => boolean): { stop: () => void }; function validateNewUser(func: Function): boolean; } declare namespace App { function accessRule(pattern: string, options?: { type?: string; launchExternal?: boolean; }): void; function configurePlugin(id: string, config: Object): void; function icons(icons: Object): void; function info(options: { id?: string; version?: string; name?: string; description?: string; author?: string; email?: string; website?: string; }): void; function launchScreens(launchScreens: Object): void; function setPreference(name: string, value: string, platform?: string): void; } declare namespace Assets { function getBinary(assetPath: string, asyncCallback?: Function): EJSON; function getText(assetPath: string, asyncCallback?: Function): string; } declare namespace Blaze { function Each(argFunc: Function, contentFunc: Function, elseFunc?: Function): Blaze.View; function If(conditionFunc: Function, contentFunc: Function, elseFunc?: Function): Blaze.View; function Let(bindings: Function, contentFunc: Function): Blaze.View; var Template: TemplateStatic; interface TemplateStatic { new(viewName?: string, renderFunction?: Function): Template; // It should be [templateName: string]: TemplateInstance but this is not possible -- user will need to cast to TemplateInstance [templateName: string]: any | Template; // added "any" to make it work head: Template; find(selector:string):Blaze.Template; findAll(selector:string):Blaze.Template[]; $:any; } interface Template { } var TemplateInstance: TemplateInstanceStatic; interface TemplateInstanceStatic { new(view: Blaze.View): TemplateInstance; } interface TemplateInstance { $(selector: string): any; autorun(runFunc: Function): Object; data: Object; find(selector?: string): Blaze.TemplateInstance; findAll(selector: string): Blaze.TemplateInstance[]; firstNode: Object; lastNode: Object; subscribe(name: string, ...args: any[]): Meteor.SubscriptionHandle; subscriptionsReady(): boolean; view: Object; } function Unless(conditionFunc: Function, contentFunc: Function, elseFunc?: Function): Blaze.View; var View: ViewStatic; interface ViewStatic { new(name?: string, renderFunction?: Function): View; } interface View { } function With(data: Object | Function, contentFunc: Function): Blaze.View; var currentView: Blaze.View; function getData(elementOrView?: HTMLElement | Blaze.View): Object; function getView(element?: HTMLElement): Blaze.View; function isTemplate(value: any): boolean; function remove(renderedView: Blaze.View): void; function render(templateOrView: Template | Blaze.View, parentNode: Node, nextNode?: Node, parentView?: Blaze.View): Blaze.View; function renderWithData(templateOrView: Template | Blaze.View, data: Object | Function, parentNode: Node, nextNode?: Node, parentView?: Blaze.View): Blaze.View; function toHTML(templateOrView: Template | Blaze.View): string; function toHTMLWithData(templateOrView: Template | Blaze.View, data: Object | Function): string; } declare namespace Cordova { function depends(dependencies:{[id:string]:string}): void; } declare namespace DDP { function connect(url: string): DDP.DDPStatic; } declare namespace DDPCommon { function MethodInvocation(options: { }): any; } declare namespace EJSON { var CustomType: CustomTypeStatic; interface CustomTypeStatic { new(): CustomType; } interface CustomType { clone(): EJSON.CustomType; equals(other: Object): boolean; toJSONValue(): JSONable; typeName(): string; } function addType(name: string, factory: (val: JSONable) => EJSON.CustomType): void; function clone<T>(val:T): T; function equals(a: EJSON, b: EJSON, options?: { keyOrderSensitive?: boolean; }): boolean; function fromJSONValue(val: JSONable): any; function isBinary(x: Object): boolean; var newBinary: any; function parse(str: string): EJSON; function stringify(val: EJSON, options?: { indent?: boolean | number | string; canonical?: boolean; }): string; function toJSONValue(val: EJSON): JSONable; } declare namespace Match { function test(value: any, pattern: any): boolean; } declare namespace Meteor { var Error: ErrorStatic; interface ErrorStatic { new(error: string | number, reason?: string, details?: string): Error; } interface Error { error: string | number; reason?: string; details?: string; } function absoluteUrl(path?: string, options?: { secure?: boolean; replaceLocalhost?: boolean; rootUrl?: string; }): string; function apply(name: string, args: EJSONable[], options?: { wait?: boolean; onResultReceived?: Function; }, asyncCallback?: Function): any; function call(name: string, ...args: any[]): any; function clearInterval(id: number): void; function clearTimeout(id: number): void; function disconnect(): void; var isClient: boolean; var isCordova: boolean; var isDevelopment: boolean; var isProduction: boolean; var isServer: boolean; var isTest: boolean; function loggingIn(): boolean; function loginWith<ExternalService>(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; loginUrlParameters?: Object; loginHint?: string; loginStyle?: string; redirectUrl?: string; }, callback?: Function): void; function loginWithPassword(user: Object | string, password: string, callback?: Function): void; function logout(callback?: Function): void; function logoutOtherClients(callback?: Function): void; function methods(methods: Object): void; function onConnection(callback: Function): void; function publish(name: string, func: Function): void; function reconnect(): void; var release: string; function setInterval(func: Function, delay: number): number; function setTimeout(func: Function, delay: number): number; var settings: { public: {[id:string]: any}, private: {[id:string]: any}, [id:string]: any}; function startup(func: Function): void; function status(): Meteor.StatusEnum; function subscribe(name: string, ...args: any[]): Meteor.SubscriptionHandle; function user(): Meteor.User; function userId(): string; var users: Mongo.Collection<User>; function wrapAsync(func: Function, context?: Object): any; } declare namespace Mongo { var Collection: CollectionStatic; interface CollectionStatic { new<T>(name: string, options?: { connection?: Object; idGeneration?: string; transform?: Function; }): Collection<T>; } interface Collection<T> { allow(options: { insert?: (userId: string, doc: T) => boolean; update?: (userId: string, doc: T, fieldNames: string[], modifier: any) => boolean; remove?: (userId: string, doc: T) => boolean; fetch?: string[]; transform?: Function; }): boolean; deny(options: { insert?: (userId: string, doc: T) => boolean; update?: (userId: string, doc: T, fieldNames: string[], modifier: any) => boolean; remove?: (userId: string, doc: T) => boolean; fetch?: string[]; transform?: Function; }): boolean; find(selector?: Mongo.Selector | Mongo.ObjectID | string, options?: { sort?: Mongo.SortSpecifier; skip?: number; limit?: number; fields?: Mongo.FieldSpecifier; reactive?: boolean; transform?: Function; disableOplog?: boolean; pollingIntervalMs?: number; pollingThrottleMs?: number; }): Mongo.Cursor<T>; findOne(selector?: Mongo.Selector | Mongo.ObjectID | string, options?: { sort?: Mongo.SortSpecifier; skip?: number; fields?: Mongo.FieldSpecifier; reactive?: boolean; transform?: Function; }): T; insert(doc: T, callback?: Function): string; rawCollection(): any; rawDatabase(): any; remove(selector: Mongo.Selector | Mongo.ObjectID | string, callback?: Function): number; update(selector: Mongo.Selector | Mongo.ObjectID | string, modifier: Mongo.Modifier, options?: { multi?: boolean; upsert?: boolean; }, callback?: Function): number; upsert(selector: Mongo.Selector | Mongo.ObjectID | string, modifier: Mongo.Modifier, options?: { multi?: boolean; }, callback?: Function): {numberAffected?: number; insertedId?: string;}; _ensureIndex(indexName: string, options?: {[key: string]: any}): void; } var Cursor: CursorStatic; interface CursorStatic { new<T>(): Cursor<T>; } interface Cursor<T> { count(): number; fetch(): Array<T>; forEach(callback: <T>(doc: T, index: number, cursor: Mongo.Cursor<T>) => void, thisArg?: any): void; map<U>(callback: (doc: T, index: number, cursor: Mongo.Cursor<T>) => U, thisArg?: any): Array<U>; observe(callbacks: Object): Meteor.LiveQueryHandle; observeChanges(callbacks: Object): Meteor.LiveQueryHandle; } var ObjectID: ObjectIDStatic; interface ObjectIDStatic { new(hexString?: string): ObjectID; } interface ObjectID { valueOf(): string; getTimestamp(): Date; } } declare namespace Npm { function depends(dependencies:{[id:string]:string}): void; function require(name: string): any; } declare namespace Package { function describe(options: { summary?: string; version?: string; name?: string; git?: string; documentation?: string; debugOnly?: boolean; prodOnly?: boolean; testOnly?: boolean; }): void; function onTest(func: Function): void; function onUse(func: Function): void; function registerBuildPlugin(options?: { name?: string; use?: string | string[]; sources?: string[]; npmDependencies?: Object; }): void; } declare namespace Tracker { function Computation(): void; interface Computation { firstRun: boolean; invalidate(): void; invalidated: boolean; onInvalidate(callback: Function): void; onStop(callback: Function): void; stop(): void; stopped: boolean; } var Dependency: DependencyStatic; interface DependencyStatic { new(): Dependency; } interface Dependency { changed(): void; depend(fromComputation?: Tracker.Computation): boolean; hasDependents(): boolean; } var active: boolean; function afterFlush(callback: Function): void; function autorun(runFunc: (computation: Tracker.Computation) => void, options?: { onError?: Function; }): Tracker.Computation; var currentComputation: Tracker.Computation; function flush(): void; function nonreactive(func: Function): void; function onInvalidate(callback: Function): void; } declare namespace Session { function equals(key: string, value: string | number | boolean | any /** Null **/ | any /** Undefined **/): boolean; function get(key: string): any; function set(key: string, value: EJSONable | any /** Undefined **/): void; function setDefault(key: string, value: EJSONable | any /** Undefined **/): void; } declare namespace HTTP { function call(method: string, url: string, options?: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; npmRequestOptions?: Object; beforeSend?: Function; }, asyncCallback?: Function): HTTP.HTTPResponse; function del(url: string, callOptions?: Object, asyncCallback?: Function): HTTP.HTTPResponse; function get(url: string, callOptions?: Object, asyncCallback?: Function): HTTP.HTTPResponse; function patch(url: string, callOptions?: Object, asyncCallback?: Function): HTTP.HTTPResponse; function post(url: string, callOptions?: Object, asyncCallback?: Function): HTTP.HTTPResponse; function put(url: string, callOptions?: Object, asyncCallback?: Function): HTTP.HTTPResponse; } declare namespace Email { function send(options: { from?: string; to?: string | string[]; cc?: string | string[]; bcc?: string | string[]; replyTo?: string | string[]; subject?: string; text?: string; html?: string; headers?: Object; attachments?: Object[]; mailComposer?: MailComposer; }): void; } declare var CompileStep: CompileStepStatic; interface CompileStepStatic { new(): CompileStep; } interface CompileStep { addAsset(options: { }, path: string, data: any /** Buffer **/ | string): any; addHtml(options: { section?: string; data?: string; }): any; addJavaScript(options: { path?: string; data?: string; sourcePath?: string; }): any; addStylesheet(options: { }, path: string, data: string, sourceMap: string): any; arch: any; declaredExports: any; error(options: { }, message: string, sourcePath?: string, line?: number, func?: string): any; fileOptions: any; fullInputPath: any; inputPath: any; inputSize: any; packageName: any; pathForSourceMap: any; read(n?: number): any; rootOutputPath: any; } declare var PackageAPI: PackageAPIStatic; interface PackageAPIStatic { new(): PackageAPI; } interface PackageAPI { addAssets(filenames: string | string[], architecture: string | string[]): void; addFiles(filenames: string | string[], architecture?: string | string[], options?: { bare?: boolean; }): void; export(exportedObjects: string | string[], architecture?: string | string[], exportOptions?: Object, testOnly?: boolean): void; imply(packageNames: string | string[], architecture?: string | string[]): void; use(packageNames: string | string[], architecture?: string | string[], options?: { weak?: boolean; unordered?: boolean; }): void; versionsFrom(meteorRelease: string | string[]): void; } declare var ReactiveVar: ReactiveVarStatic; interface ReactiveVarStatic { new<T>(initialValue: T, equalsFunc?: Function): ReactiveVar<T>; } interface ReactiveVar<T> { get(): T; set(newValue: T): void; } declare var Subscription: SubscriptionStatic; interface SubscriptionStatic { new(): Subscription; } interface Subscription { added(collection: string, id: string, fields: Object): void; changed(collection: string, id: string, fields: Object): void; connection: Meteor.Connection; error(error: Error): void; onStop(func: Function): void; ready(): void; removed(collection: string, id: string): void; stop(): void; userId: string; } declare var Template: TemplateStatic; interface TemplateStatic { new(): Template; // It should be [templateName: string]: TemplateInstance but this is not possible -- user will need to cast to TemplateInstance [templateName: string]: any | Template; // added "any" to make it work head: Template; find(selector:string):Blaze.Template; findAll(selector:string):Blaze.Template[]; $:any; body: Template; currentData(): {}; deregisterHelper(name: string): void; instance(): Blaze.TemplateInstance; parentData(numLevels?: number): {}; registerHelper(name: string, helperFunction: Function): void; } interface Template { created: Function; destroyed: Function; events(eventMap: Meteor.EventMap): void; helpers(helpers:{[id:string]: any}): void; onCreated: Function; onDestroyed: Function; onRendered: Function; rendered: Function; } declare function check(value: any, pattern: any): void; declare function execFileAsync(command: string, args?: any[], options?: { cwd?: Object; env?: Object; stdio?: any[] | string; destination?: any; waitForClose?: string; }): any; declare function execFileSync(command: string, args?: any[], options?: { cwd?: Object; env?: Object; stdio?: any[] | string; destination?: any; waitForClose?: string; }): String; declare function getExtension(): String;