From 600319c4382308712bf69297b3dbb262366a4804 Mon Sep 17 00:00:00 2001 From: Marius Schulz Date: Wed, 6 Mar 2013 17:48:58 +0100 Subject: [PATCH] Added "KnockoutObservableObject" interface --- knockout/knockout.d.ts | 1059 ++++++++++++++++++++-------------------- 1 file changed, 533 insertions(+), 526 deletions(-) diff --git a/knockout/knockout.d.ts b/knockout/knockout.d.ts index c13856198..5ae7c13ea 100644 --- a/knockout/knockout.d.ts +++ b/knockout/knockout.d.ts @@ -1,526 +1,533 @@ -// Type definitions for Knockout 2.2 -// Project: http://knockoutjs.com -// Definitions by: Boris Yankov -// Definitions: https://github.com/borisyankov/DefinitelyTyped - - -interface KnockoutSubscribableFunctions { - extend(source); - dispose(): void; - peek(): any; - valueHasMutated(): void; - - valueWillMutate(): void; -} - -interface KnockoutComputedFunctions extends KnockoutSubscribableFunctions { - getDependenciesCount(): number; - hasWriteFunction(): bool; -} - -interface KnockoutObservableFunctions extends KnockoutSubscribableFunctions { -} - -interface KnockoutObservableArrayFunctions extends KnockoutObservableFunctions { - // General Array functions - indexOf(searchElement, fromIndex?: number): number; - slice(start: number, end?: number): any[]; - splice(start: number): any[]; - splice(start: number, deleteCount: number, ...items: any[]): any[]; - pop(); - push(...items: any[]): void; - shift(); - unshift(...items: any[]): number; - reverse(): any[]; - sort(): void; - sort(compareFunction): void; - - // Ko specific - replace(oldItem: any, newItem: any): void; - - remove(item): any[]; - removeAll(items: any[]): any[]; - removeAll(): any[]; - - destroy(item): void; - destroyAll(items: any[]): void; - destroyAll(): void; -} - -interface KnockoutSubscribableStatic { - fn: KnockoutSubscribableFunctions; - - new (): KnockoutSubscription; -} - -interface KnockoutSubscription extends KnockoutSubscribableFunctions { - subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite, topic?: string); -} - -interface KnockoutComputedStatic { - fn: KnockoutComputedFunctions; - - (): KnockoutComputed; - (func: Function, context?: any, options?: any): KnockoutComputed; - (def: KnockoutComputedDefine): KnockoutComputed; - (options?: any): KnockoutComputed; -} - -interface KnockoutComputed extends KnockoutComputedFunctions { - (): any; - (value: any): void; - - subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite, topic?: string); -} - -interface KnockoutObservableArrayStatic { - - fn: KnockoutObservableArrayFunctions; - - (): KnockoutObservableArray; - (value: any[]): KnockoutObservableArray; - - new(): KnockoutObservableArray; - new(value: any[]): KnockoutObservableArray; -} - -interface KnockoutObservableArray extends KnockoutObservableArrayFunctions { - (): any[]; - (value: any[]): void; - - subscribe(callback: (newValue: any[]) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: any[], topic?: string); -} - -interface KnockoutObservableStatic { - fn: KnockoutObservableFunctions; - - (value: string): KnockoutObservableString; - (value: Date): KnockoutObservableDate; - (value: number): KnockoutObservableNumber; - (value: bool): KnockoutObservableBool; - (value?: any): KnockoutObservableAny; - - new(value: string): KnockoutObservableString; - new(value: Date): KnockoutObservableDate; - new(value: number): KnockoutObservableNumber; - new(value: bool): KnockoutObservableBool; - new(value?: any): KnockoutObservableAny; -} - -/** use as method to get/set the value */ -interface KnockoutObservableBase extends KnockoutObservableFunctions { - getSubscriptionsCount(): number; -} - -/** use as method to get/set the value -can cast to a more appropriate (typed) interface such as KnockoutObservableString or KnockoutObservableNumber -*/ -interface KnockoutObservableAny extends KnockoutObservableBase { - - (): any; - (value): void; - - subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite, topic?: string); -} - -interface KnockoutObservableString extends KnockoutObservableBase { - (): string; - (value: string): void; - - subscribe(callback: (newValue: string) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: string, topic?: string); -} - - -interface KnockoutObservableNumber extends KnockoutObservableBase { - (): number; - (value: number): void; - - subscribe(callback: (newValue: number) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: number, topic?: string); -} - -interface KnockoutObservableBool extends KnockoutObservableBase { - (): bool; - (value: bool): void; - - subscribe(callback: (newValue: bool) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: bool, topic?: string); -} - -interface KnockoutObservableDate extends KnockoutObservableBase { - (): Date; - (value: Date): void; - - subscribe(callback: (newValue: Date) => void, target?:any, topic?: string): KnockoutSubscription; - notifySubscribers(valueToWrite: Date, topic?: string); -} - -interface KnockoutComputedDefine { - read(): any; - write(any); -} - -interface KnockoutBindingContext { - $parent: any; - $parents: any[]; - $root: any; - $data: any; - $index?: number; - $parentContext?: KnockoutBindingContext; - - extend(any): any; - createChildContext(any): any; -} - -interface KnockoutBindingHandler { - init?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void; - update?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void; - options?: any; -} - -interface KnockoutBindingHandlers { - // Controlling text and appearance - visible: KnockoutBindingHandler; - text: KnockoutBindingHandler; - html: KnockoutBindingHandler; - css: KnockoutBindingHandler; - style: KnockoutBindingHandler; - attr: KnockoutBindingHandler; - - // Control Flow - foreach: KnockoutBindingHandler; - if: KnockoutBindingHandler; - ifnot: KnockoutBindingHandler; - with: KnockoutBindingHandler; - - // Working with form fields - click: KnockoutBindingHandler; - event: KnockoutBindingHandler; - submit: KnockoutBindingHandler; - enable: KnockoutBindingHandler; - disable: KnockoutBindingHandler; - value: KnockoutBindingHandler; - hasfocus: KnockoutBindingHandler; - checked: KnockoutBindingHandler; - options: KnockoutBindingHandler; - selectedOptions: KnockoutBindingHandler; - uniqueName: KnockoutBindingHandler; - - // Rendering templates - template: KnockoutBindingHandler; -} - -interface KnockoutMemoization { - memoize(callback); - unmemoize(memoId, callbackParams); - unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray); - parseMemoText(memoText); -} - -interface KnockoutVirtualElements { - allowedBindings; - emptyNode; - firstChild; - insertAfter; - nextSibling; - prepend; - setDomNodeChildren; -} - -interface KnockoutExtenders { - throttle(target: any, timeout: number): KnockoutComputed; - notify(target: any, notifyWhen: string): any; -} - -interface KnockoutUtils { - - ////////////////////////////////// - // utils.domManipulation.js - ////////////////////////////////// - - simpleHtmlParse(html: string); - - jQueryHtmlParse(html: string); - - parseHtmlFragment(html: string); - - setHtml(node: Element, html: string): void; - - setHtml(node: Element, html: () => string): void; - - ////////////////////////////////// - // utils.domData.js - ////////////////////////////////// - - domData: { - get (node: Element, key: string); - - set (node: Element, key: string, value: any); - - getAll(node: Element, createIfNotFound: bool); - - clear(node: Element); - }; - - ////////////////////////////////// - // utils.domNodeDisposal.js - ////////////////////////////////// - - domNodeDisposal: { - addDisposeCallback(node: Element, callback: Function); - - removeDisposeCallback(node: Element, callback: Function); - - cleanNode(node: Element); - - removeNode(node: Element); - }; - - ////////////////////////////////// - // utils.js - ////////////////////////////////// - - fieldsIncludedWithJsonPost: any[]; - - arrayForEach(array: any[], action: (any) => void ): void; - - arrayIndexOf(array: any[], item: any): number; - - arrayFirst(array: any[], predicate: (item) => bool, predicateOwner?: any): any; - - arrayRemoveItem(array: any[], itemToRemove: any): void; - - arrayGetDistinctValues(array: any[]): any[]; - - arrayMap(array: any[], mapping: (item) => any): any[]; - - arrayFilter(array: any[], predicate: (item) => bool): any[]; - - arrayPushAll(array: any[], valuesToPush: any[]): any[]; - - extend(target, source); - - emptyDomNode(domNode): void; - - moveCleanedNodesToContainerElement(nodes: any[]): HTMLElement; - - cloneNodes(nodesArray: any[], shouldCleanNodes: bool): any[]; - - setDomNodeChildren(domNode: any, childNodes: any[]): void; - - replaceDomNodes(nodeToReplaceOrNodeArray: any, newNodesArray: any[]): void; - - setOptionNodeSelectionState(optionNode: any, isSelected: bool): void; - - stringTrim(str: string): string; - - stringTokenize(str: string, delimiter: string): string; - - stringStartsWith(str: string, startsWith: string): string; - - domNodeIsContainedBy(node: any, containedByNode: any): bool; - - domNodeIsAttachedToDocument(node: any): bool; - - tagNameLower(element: any): string; - - registerEventHandler(element: any, eventType: any, handler: Function): void; - - triggerEvent(element: any, eventType: any): void; - - unwrapObservable(value: any): any; - - toggleDomNodeCssClass(node: any, className: string, shouldHaveClass: bool): void; - - //setTextContent(element: any, textContent: string): void; // NOT PART OF THE MINIFIED API SURFACE (ONLY IN knockout-{version}.debug.js) https://github.com/SteveSanderson/knockout/issues/670 - - setElementName(element: any, name: string): void; - - ensureSelectElementIsRenderedCorrectly(selectElement); - - forceRefresh(node: any): void; - - ensureSelectElementIsRenderedCorrectly(selectElement: any): void; - - range(min: any, max: any): any; - - makeArray(arrayLikeObject: any): any[]; - - getFormFields(form: any, fieldName: string): any[]; - - parseJson(jsonString: string): any; - - stringifyJson(data: any, replacer: Function, space: string): string; - - postJson(urlOrForm: any, data: any, options: any): void; - - ieVersion: number; - - isIe6: bool; - - isIe7: bool; -} - -////////////////////////////////// -// templateSources.js -////////////////////////////////// - -interface KnockoutTemplateSourcesDomElement { - - text(valueToWrite?); - - data(key, valueToWrite?); -} - - -interface KnockoutTemplateSources { - - domElement: KnockoutTemplateSourcesDomElement; - - anonymousTemplate: { - - prototype: KnockoutTemplateSourcesDomElement; - - new (element: Element): KnockoutTemplateSourcesDomElement; - }; -}; - -////////////////////////////////// -// nativeTemplateEngine.js -////////////////////////////////// - -interface KnockoutNativeTemplateEngine { - - renderTemplateSource(templateSource, bindingContext, options?); -} - -////////////////////////////////// -// templateEngine.js -////////////////////////////////// - -interface KnockoutTemplateEngine extends KnockoutNativeTemplateEngine { - - createJavaScriptEvaluatorBlock(script: string); - - makeTemplateSource(template, templateDocument); - - renderTemplate(template, bindingContext, options, templateDocument); - - isTemplateRewritten(template, templateDocument): bool; - - rewriteTemplate(template, rewriterCallback, templateDocument); -} - -///////////////////////////////// - -interface KnockoutStatic { - utils: KnockoutUtils; - memoization: KnockoutMemoization; - bindingHandlers: KnockoutBindingHandlers; - virtualElements: KnockoutVirtualElements; - extenders: KnockoutExtenders; - - applyBindings(viewModel: any, rootNode?: any): void; - applyBindingsToDescendants(viewModel: any, rootNode: any): void; - applyBindingsToNode(node: Element, options: any, viewModel: any): void; - - subscribable: KnockoutSubscribableStatic; - observable: KnockoutObservableStatic; - computed: KnockoutComputedStatic; - observableArray: KnockoutObservableArrayStatic; - - contextFor(node: any): any; - isSubscribable(instance: any): bool; - toJSON(viewModel: any, replacer?: Function, space?: any): string; - toJS(viewModel: any): any; - isObservable(instance: any): bool; - isComputed(instance: any): bool; - dataFor(node: any): any; - removeNode(node: Element); - cleanNode(node: Element); - renderTemplate(template: Function, viewModel: any, options?: any, target?: any, renderMode?: any); - renderTemplate(template: string, viewModel: any, options?: any, target?: any, renderMode?: any); - - ////////////////////////////////// - // templateSources.js - ////////////////////////////////// - - templateSources: KnockoutTemplateSources; - - ////////////////////////////////// - // templateEngine.js - ////////////////////////////////// - - templateEngine: { - - prototype: KnockoutTemplateEngine; - - new (): KnockoutTemplateEngine; - }; - - ////////////////////////////////// - // templateRewriting.js - ////////////////////////////////// - - templateRewriting: { - - ensureTemplateIsRewritten(template, templateEngine, templateDocument); - - memoizeBindingAttributeSyntax(htmlString: string, templateEngine: KnockoutTemplateEngine); - - applyMemoizedBindingsToNextSibling(bindings); - }; - - ////////////////////////////////// - // nativeTemplateEngine.js - ////////////////////////////////// - - nativeTemplateEngine: { - - prototype: KnockoutNativeTemplateEngine; - - new (): KnockoutNativeTemplateEngine; - - instance: KnockoutNativeTemplateEngine; - }; - - ////////////////////////////////// - // jqueryTmplTemplateEngine.js - ////////////////////////////////// - - jqueryTmplTemplateEngine: { - - prototype: KnockoutTemplateEngine; - - renderTemplateSource(templateSource, bindingContext, options); - - createJavaScriptEvaluatorBlock(script: string): string; - - addTemplate(templateName, templateMarkup); - }; - - ////////////////////////////////// - // templating.js - ////////////////////////////////// - - setTemplateEngine(templateEngine: KnockoutNativeTemplateEngine); - - renderTemplate(template, dataOrBindingContext, options, targetNodeOrNodeArray, renderMode); - - renderTemplateForEach(template, arrayOrObservableArray, options, targetNode, parentBindingContext); - - expressionRewriting: { - bindingRewriteValidators: any; - }; - - ///////////////////////////////// - - bindingProvider: any; -} - -declare var ko: KnockoutStatic; \ No newline at end of file +// Type definitions for Knockout 2.2 +// Project: http://knockoutjs.com +// Definitions by: Boris Yankov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + + +interface KnockoutSubscribableFunctions { + extend(source); + dispose(): void; + peek(): any; + valueHasMutated(): void; + + valueWillMutate(): void; +} + +interface KnockoutComputedFunctions extends KnockoutSubscribableFunctions { + getDependenciesCount(): number; + hasWriteFunction(): bool; +} + +interface KnockoutObservableFunctions extends KnockoutSubscribableFunctions { +} + +interface KnockoutObservableArrayFunctions extends KnockoutObservableFunctions { + // General Array functions + indexOf(searchElement, fromIndex?: number): number; + slice(start: number, end?: number): any[]; + splice(start: number): any[]; + splice(start: number, deleteCount: number, ...items: any[]): any[]; + pop(); + push(...items: any[]): void; + shift(); + unshift(...items: any[]): number; + reverse(): any[]; + sort(): void; + sort(compareFunction): void; + + // Ko specific + replace(oldItem: any, newItem: any): void; + + remove(item): any[]; + removeAll(items: any[]): any[]; + removeAll(): any[]; + + destroy(item): void; + destroyAll(items: any[]): void; + destroyAll(): void; +} + +interface KnockoutSubscribableStatic { + fn: KnockoutSubscribableFunctions; + + new (): KnockoutSubscription; +} + +interface KnockoutSubscription extends KnockoutSubscribableFunctions { + subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite, topic?: string); +} + +interface KnockoutComputedStatic { + fn: KnockoutComputedFunctions; + + (): KnockoutComputed; + (func: Function, context?: any, options?: any): KnockoutComputed; + (def: KnockoutComputedDefine): KnockoutComputed; + (options?: any): KnockoutComputed; +} + +interface KnockoutComputed extends KnockoutComputedFunctions { + (): any; + (value: any): void; + + subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite, topic?: string); +} + +interface KnockoutObservableArrayStatic { + + fn: KnockoutObservableArrayFunctions; + + (): KnockoutObservableArray; + (value: any[]): KnockoutObservableArray; + + new(): KnockoutObservableArray; + new(value: any[]): KnockoutObservableArray; +} + +interface KnockoutObservableArray extends KnockoutObservableArrayFunctions { + (): any[]; + (value: any[]): void; + + subscribe(callback: (newValue: any[]) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: any[], topic?: string); +} + +interface KnockoutObservableStatic { + fn: KnockoutObservableFunctions; + + (value: string): KnockoutObservableString; + (value: Date): KnockoutObservableDate; + (value: number): KnockoutObservableNumber; + (value: bool): KnockoutObservableBool; + (value?: any): KnockoutObservableAny; + + new(value: string): KnockoutObservableString; + new(value: Date): KnockoutObservableDate; + new(value: number): KnockoutObservableNumber; + new(value: bool): KnockoutObservableBool; + new(value?: any): KnockoutObservableAny; +} + +/** use as method to get/set the value */ +interface KnockoutObservableBase extends KnockoutObservableFunctions { + getSubscriptionsCount(): number; +} + +/** use as method to get/set the value +can cast to a more appropriate (typed) interface such as KnockoutObservableString or KnockoutObservableNumber +*/ +interface KnockoutObservableAny extends KnockoutObservableBase { + + (): any; + (value): void; + + subscribe(callback: (newValue: any) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite, topic?: string); +} + +interface KnockoutObservableString extends KnockoutObservableBase { + (): string; + (value: string): void; + + subscribe(callback: (newValue: string) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: string, topic?: string); +} + +interface KnockoutObservableObject extends KnockoutObservableBase { + (): {}; + (value: {}): void; + + subscribe(callback: (newValue: {}) => void , target?: any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: {}, topic?: string); +} + +interface KnockoutObservableNumber extends KnockoutObservableBase { + (): number; + (value: number): void; + + subscribe(callback: (newValue: number) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: number, topic?: string); +} + +interface KnockoutObservableBool extends KnockoutObservableBase { + (): bool; + (value: bool): void; + + subscribe(callback: (newValue: bool) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: bool, topic?: string); +} + +interface KnockoutObservableDate extends KnockoutObservableBase { + (): Date; + (value: Date): void; + + subscribe(callback: (newValue: Date) => void, target?:any, topic?: string): KnockoutSubscription; + notifySubscribers(valueToWrite: Date, topic?: string); +} + +interface KnockoutComputedDefine { + read(): any; + write(any); +} + +interface KnockoutBindingContext { + $parent: any; + $parents: any[]; + $root: any; + $data: any; + $index?: number; + $parentContext?: KnockoutBindingContext; + + extend(any): any; + createChildContext(any): any; +} + +interface KnockoutBindingHandler { + init?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void; + update?(element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext): void; + options?: any; +} + +interface KnockoutBindingHandlers { + // Controlling text and appearance + visible: KnockoutBindingHandler; + text: KnockoutBindingHandler; + html: KnockoutBindingHandler; + css: KnockoutBindingHandler; + style: KnockoutBindingHandler; + attr: KnockoutBindingHandler; + + // Control Flow + foreach: KnockoutBindingHandler; + if: KnockoutBindingHandler; + ifnot: KnockoutBindingHandler; + with: KnockoutBindingHandler; + + // Working with form fields + click: KnockoutBindingHandler; + event: KnockoutBindingHandler; + submit: KnockoutBindingHandler; + enable: KnockoutBindingHandler; + disable: KnockoutBindingHandler; + value: KnockoutBindingHandler; + hasfocus: KnockoutBindingHandler; + checked: KnockoutBindingHandler; + options: KnockoutBindingHandler; + selectedOptions: KnockoutBindingHandler; + uniqueName: KnockoutBindingHandler; + + // Rendering templates + template: KnockoutBindingHandler; +} + +interface KnockoutMemoization { + memoize(callback); + unmemoize(memoId, callbackParams); + unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray); + parseMemoText(memoText); +} + +interface KnockoutVirtualElements { + allowedBindings; + emptyNode; + firstChild; + insertAfter; + nextSibling; + prepend; + setDomNodeChildren; +} + +interface KnockoutExtenders { + throttle(target: any, timeout: number): KnockoutComputed; + notify(target: any, notifyWhen: string): any; +} + +interface KnockoutUtils { + + ////////////////////////////////// + // utils.domManipulation.js + ////////////////////////////////// + + simpleHtmlParse(html: string); + + jQueryHtmlParse(html: string); + + parseHtmlFragment(html: string); + + setHtml(node: Element, html: string): void; + + setHtml(node: Element, html: () => string): void; + + ////////////////////////////////// + // utils.domData.js + ////////////////////////////////// + + domData: { + get (node: Element, key: string); + + set (node: Element, key: string, value: any); + + getAll(node: Element, createIfNotFound: bool); + + clear(node: Element); + }; + + ////////////////////////////////// + // utils.domNodeDisposal.js + ////////////////////////////////// + + domNodeDisposal: { + addDisposeCallback(node: Element, callback: Function); + + removeDisposeCallback(node: Element, callback: Function); + + cleanNode(node: Element); + + removeNode(node: Element); + }; + + ////////////////////////////////// + // utils.js + ////////////////////////////////// + + fieldsIncludedWithJsonPost: any[]; + + arrayForEach(array: any[], action: (any) => void ): void; + + arrayIndexOf(array: any[], item: any): number; + + arrayFirst(array: any[], predicate: (item) => bool, predicateOwner?: any): any; + + arrayRemoveItem(array: any[], itemToRemove: any): void; + + arrayGetDistinctValues(array: any[]): any[]; + + arrayMap(array: any[], mapping: (item) => any): any[]; + + arrayFilter(array: any[], predicate: (item) => bool): any[]; + + arrayPushAll(array: any[], valuesToPush: any[]): any[]; + + extend(target, source); + + emptyDomNode(domNode): void; + + moveCleanedNodesToContainerElement(nodes: any[]): HTMLElement; + + cloneNodes(nodesArray: any[], shouldCleanNodes: bool): any[]; + + setDomNodeChildren(domNode: any, childNodes: any[]): void; + + replaceDomNodes(nodeToReplaceOrNodeArray: any, newNodesArray: any[]): void; + + setOptionNodeSelectionState(optionNode: any, isSelected: bool): void; + + stringTrim(str: string): string; + + stringTokenize(str: string, delimiter: string): string; + + stringStartsWith(str: string, startsWith: string): string; + + domNodeIsContainedBy(node: any, containedByNode: any): bool; + + domNodeIsAttachedToDocument(node: any): bool; + + tagNameLower(element: any): string; + + registerEventHandler(element: any, eventType: any, handler: Function): void; + + triggerEvent(element: any, eventType: any): void; + + unwrapObservable(value: any): any; + + toggleDomNodeCssClass(node: any, className: string, shouldHaveClass: bool): void; + + //setTextContent(element: any, textContent: string): void; // NOT PART OF THE MINIFIED API SURFACE (ONLY IN knockout-{version}.debug.js) https://github.com/SteveSanderson/knockout/issues/670 + + setElementName(element: any, name: string): void; + + ensureSelectElementIsRenderedCorrectly(selectElement); + + forceRefresh(node: any): void; + + ensureSelectElementIsRenderedCorrectly(selectElement: any): void; + + range(min: any, max: any): any; + + makeArray(arrayLikeObject: any): any[]; + + getFormFields(form: any, fieldName: string): any[]; + + parseJson(jsonString: string): any; + + stringifyJson(data: any, replacer: Function, space: string): string; + + postJson(urlOrForm: any, data: any, options: any): void; + + ieVersion: number; + + isIe6: bool; + + isIe7: bool; +} + +////////////////////////////////// +// templateSources.js +////////////////////////////////// + +interface KnockoutTemplateSourcesDomElement { + + text(valueToWrite?); + + data(key, valueToWrite?); +} + + +interface KnockoutTemplateSources { + + domElement: KnockoutTemplateSourcesDomElement; + + anonymousTemplate: { + + prototype: KnockoutTemplateSourcesDomElement; + + new (element: Element): KnockoutTemplateSourcesDomElement; + }; +}; + +////////////////////////////////// +// nativeTemplateEngine.js +////////////////////////////////// + +interface KnockoutNativeTemplateEngine { + + renderTemplateSource(templateSource, bindingContext, options?); +} + +////////////////////////////////// +// templateEngine.js +////////////////////////////////// + +interface KnockoutTemplateEngine extends KnockoutNativeTemplateEngine { + + createJavaScriptEvaluatorBlock(script: string); + + makeTemplateSource(template, templateDocument); + + renderTemplate(template, bindingContext, options, templateDocument); + + isTemplateRewritten(template, templateDocument): bool; + + rewriteTemplate(template, rewriterCallback, templateDocument); +} + +///////////////////////////////// + +interface KnockoutStatic { + utils: KnockoutUtils; + memoization: KnockoutMemoization; + bindingHandlers: KnockoutBindingHandlers; + virtualElements: KnockoutVirtualElements; + extenders: KnockoutExtenders; + + applyBindings(viewModel: any, rootNode?: any): void; + applyBindingsToDescendants(viewModel: any, rootNode: any): void; + applyBindingsToNode(node: Element, options: any, viewModel: any): void; + + subscribable: KnockoutSubscribableStatic; + observable: KnockoutObservableStatic; + computed: KnockoutComputedStatic; + observableArray: KnockoutObservableArrayStatic; + + contextFor(node: any): any; + isSubscribable(instance: any): bool; + toJSON(viewModel: any, replacer?: Function, space?: any): string; + toJS(viewModel: any): any; + isObservable(instance: any): bool; + isComputed(instance: any): bool; + dataFor(node: any): any; + removeNode(node: Element); + cleanNode(node: Element); + renderTemplate(template: Function, viewModel: any, options?: any, target?: any, renderMode?: any); + renderTemplate(template: string, viewModel: any, options?: any, target?: any, renderMode?: any); + + ////////////////////////////////// + // templateSources.js + ////////////////////////////////// + + templateSources: KnockoutTemplateSources; + + ////////////////////////////////// + // templateEngine.js + ////////////////////////////////// + + templateEngine: { + + prototype: KnockoutTemplateEngine; + + new (): KnockoutTemplateEngine; + }; + + ////////////////////////////////// + // templateRewriting.js + ////////////////////////////////// + + templateRewriting: { + + ensureTemplateIsRewritten(template, templateEngine, templateDocument); + + memoizeBindingAttributeSyntax(htmlString: string, templateEngine: KnockoutTemplateEngine); + + applyMemoizedBindingsToNextSibling(bindings); + }; + + ////////////////////////////////// + // nativeTemplateEngine.js + ////////////////////////////////// + + nativeTemplateEngine: { + + prototype: KnockoutNativeTemplateEngine; + + new (): KnockoutNativeTemplateEngine; + + instance: KnockoutNativeTemplateEngine; + }; + + ////////////////////////////////// + // jqueryTmplTemplateEngine.js + ////////////////////////////////// + + jqueryTmplTemplateEngine: { + + prototype: KnockoutTemplateEngine; + + renderTemplateSource(templateSource, bindingContext, options); + + createJavaScriptEvaluatorBlock(script: string): string; + + addTemplate(templateName, templateMarkup); + }; + + ////////////////////////////////// + // templating.js + ////////////////////////////////// + + setTemplateEngine(templateEngine: KnockoutNativeTemplateEngine); + + renderTemplate(template, dataOrBindingContext, options, targetNodeOrNodeArray, renderMode); + + renderTemplateForEach(template, arrayOrObservableArray, options, targetNode, parentBindingContext); + + expressionRewriting: { + bindingRewriteValidators: any; + }; + + ///////////////////////////////// + + bindingProvider: any; +} + +declare var ko: KnockoutStatic;