import type { TSESTree } from '@typescript-eslint/experimental-utils';
/**
 * Get a list of all decorators on a node.
 * @param node Node to get decorators from
 * @returns A list of decorators. Returns an empty list if none are found.
 */
export declare function getDecorators(node: TSESTree.Node): TSESTree.Decorator[];
/**
 * Return an object that contains what kind of o1js decorator was used
 * (e.g `@state` `@prop`, or `@arrayProp`)
 * and the decorator node.
 * @param node The node to get the decorators from
 * @returns An object indicating what decorator was used and the node
 */
export declare function getValidDecorator(node: TSESTree.Node): {
    kind: "prop" | "arrayProp" | "state";
    decorator: TSESTree.Decorator;
} | undefined;
/**
 * Gets the first value of a decorator expression if it has one, otherwiser returns `undefined`.
 * For example, if called on `@state(T)`, it will return `T`.
 * @param decorator The specified decorator
 * @returns The first value of the decorator or undefined
 */
export declare function getFirstDecoratorValue(decorator: TSESTree.Decorator): string | undefined;
/**
 * Gets the second value of a decorator expression if it has one, otherwise returns `undefined`.
 * For example, if called on `@state(T, U)`, it will return `U`
 * @param decorator The specified decorator
 * @returns The second value of the decorator or undefined
 */
export declare function getSecondDecoratorValue(decorator: TSESTree.Decorator): string | number | bigint | boolean | RegExp | null | undefined;
/**
 * Gets the annotated type of a node if it has one. For example, if a node has the statement
 * `node: T`, it will return `T`. Otherwise return undefined.
 * @param node The specified node
 * @returns The type annotation of the node or undefined
 */
export declare function getPropertyType(node: TSESTree.Node): string | undefined;
/**
 * Gets the function name of a node if it has one, otherwise return undefined.
 * @param node The specified node
 * @returns The function name or undefined
 */
export declare function getFunctionName(node: TSESTree.Node): string | undefined;
/**
 * Checks to see if the specified `CallExpression` node uses a banned import or calls upon
 * a banned function.
 * @param node The specified `CallExpression` node
 * @param bannedImports A set of banned imports
 * @param bannedFunctions A set of banned functions
 * @returns True if the `CallExpression` calls on a banned import or function or false
 */
export declare function isBannedCallExpression(node: TSESTree.CallExpression, bannedImports: Set<string>, bannedFunctions: Set<string>): boolean;
export declare function getClassBodyStatements(node: TSESTree.Node): TSESTree.ClassElement[] | undefined;
export declare function getClassName(node: TSESTree.Node): string | undefined;
