/**
 * Copyright 2015 The Incremental DOM Authors.
 * Copyright 2017 trivago N.V.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS-IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Makes sure that there is a current patch context.
 * @param {*} context
 */
declare var assertInPatch: (functionName: any, context: any) => void;
/**
 * Makes sure that a patch closes every node that it opened.
 * @param {?Node} openElement
 * @param {!Node|!DocumentFragment} root
 */
declare var assertNoUnclosedTags: (openElement: any, root: any) => void;
/**
 * Makes sure that the caller is not where attributes are expected.
 * @param {string} functionName
 */
declare var assertNotInAttributes: (functionName: any) => void;
/**
 * Makes sure that the caller is not inside an element that has declared skip.
 * @param {string} functionName
 */
declare var assertNotInSkip: (functionName: any) => void;
/**
 * Makes sure that the caller is where attributes are expected.
 * @param {string} functionName
 */
declare var assertInAttributes: (functionName: any) => void;
/**
 * Makes sure the patch closes virtual attributes call
 */
declare var assertVirtualAttributesClosed: () => void;
/**
 * Makes sure that tags are correctly nested.
 * @param {string} nodeName
 * @param {string} tag
 */
declare var assertCloseMatchesOpenTag: (nodeName: any, tag: any) => void;
/**
 * Makes sure that no children elements have been declared yet in the current
 * element.
 * @param {string} functionName
 * @param {?Node} previousNode
 */
declare var assertNoChildrenDeclaredYet: (functionName: any, previousNode: any) => void;
/**
 * Checks that a call to patchOuter actually patched the element.
 * @param {?Node} node The node requested to be patched.
 * @param {?Node} previousNode The previousNode after the patch.
 */
declare var assertPatchElementNoExtras: (startNode: any, currentNode: any, expectedNextNode: any, expectedPrevNode: any) => void;
/**
 * Updates the state of being in an attribute declaration.
 * @param {boolean} value
 * @return {boolean} the previous value.
 */
declare var setInAttributes: (value: any) => boolean;
/**
 * Updates the state of being in a skip element.
 * @param {boolean} value
 * @return {boolean} the previous value.
 */
declare var setInSkip: (value: any) => boolean;
/** */
export { assertInPatch, assertNoUnclosedTags, assertNotInAttributes, assertInAttributes, assertCloseMatchesOpenTag, assertVirtualAttributesClosed, assertNoChildrenDeclaredYet, assertNotInSkip, assertPatchElementNoExtras, setInAttributes, setInSkip, };
