import { JsonComponentNode } from '../../lib/json-schema-parser';
import { BlueBase } from '../../BlueBase';
import { MaybeArray } from '../../utils';
import React from 'react';
export interface JsonSchemaProps {
    /** JSON Schema. */
    schema: MaybeArray<JsonComponentNode>;
    /** Event name to hook this schema. If this is not provided, the schema is not hooked. */
    hook?: string;
    /** Arguments for the hook. */
    args?: {
        [key: string]: any;
    };
    /**
     * Used to locate this view in end-to-end tests.
     */
    testID?: string;
}
/**
 * # 🍱 JsonSchema
 *
 * Renders a Component based on JSON schema. This allows developers to create dynamic
 * layouts in their apps, and even save the schema to databases.
 *
 * Moreover, it also makes that schema hook-able. So that any plugin can modify that schema
 * on runtime.
 *
 * ## Usage:
 * ```jsx
 * <JsonSchema
 * 	hook="content-hook"
 * 	args={{ style: { color: 'blue' } }}
 *  schema={{
 * 	 component: 'Text',
 * 	 props: {
 * 		 style: {
 * 			 color: 'red'
 * 		 }
 * 	 },
 * 	 text: 'This is the page content.',
 *  }
 * } />
 * ```
 */
export declare class JsonSchema extends React.PureComponent<JsonSchemaProps> {
    static contextType: React.Context<BlueBase>;
    render(): MaybeArray<React.ReactElement<any>>;
}
