/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
/**
 * <p>A shareable, named OpenSearch <a href='https://docs.opensearch.org/latest/analyzers/custom-analyzer/'>custom analyzer</a>. The <code>settings</code> field is an opaque JSON object that holds the <i>contents of</i> the <code>settings.analysis</code> block of an OpenSearch <a href='https://docs.opensearch.org/latest/api-reference/index-apis/create-index/'>create-index</a> request body &mdash; <b>not</b> the outer <code>settings</code> wrapper, and <b>not</b> the full create-index body. The allowed root keys are <code>char_filter</code>, <code>tokenizer</code>, <code>filter</code>, and <code>analyzer</code>; index-level keys (<code>index.max_ngram_diff</code>, <code>index.refresh_interval</code>, <code>analysis.normalizer</code>, etc.) are out of scope here.</p><p>Synapse parses the JSON, enforces the addressability contract below, and resolves <code>$ref</code> entries against existing SynonymSets at index-build time. AOSS validates the rest of the analyzer shape (component types, parameters, chain ordering) at index-build time.</p><p><b>One TextAnalyzer record = one externally-addressable analyzer.</b> The inner <code>analyzer</code> map must declare exactly one entry named <code>default</code> (required), and may optionally declare a second entry named <code>default_search</code>. Any other entry inside <code>analyzer</code> is rejected at create / update time. Curators who need separate analyzers (e.g. <code>headline</code> + <code>body</code>) create separate TextAnalyzer records &mdash; each TextAnalyzer record is itself shareable across SearchConfigurations and organizations, so this does not duplicate the addressing model.</p><p><b><code>analyzer.default</code> (required):</b> the entry SearchConfiguration / ColumnAnalyzerOverride bind to when they reference this TextAnalyzer by qualified name. When this TextAnalyzer is the <code>defaultAnalyzer</code> of a SearchConfiguration, this entry lands at the index's <code>analysis.analyzer.default</code> reserved slot (see <a href='https://docs.opensearch.org/latest/analyzers/index-analyzers/'>OpenSearch index analyzers</a>).</p><p><b><code>analyzer.default_search</code> (optional):</b> declare alongside <code>analyzer.default</code> when index-time and search-time should produce different token streams (the typical edge_ngram autocomplete pattern). When this TextAnalyzer is a SearchConfiguration's <code>defaultAnalyzer</code>, this entry lands at the index's <code>analysis.analyzer.default_search</code> reserved slot per OpenSearch's <a href='https://docs.opensearch.org/latest/analyzers/search-analyzers/'>search-analyzer precedence</a>.</p><p><b>Example</b> (the <code>settings</code> field is a JSON object &mdash; paste OpenSearch examples directly without escaping):</p><pre><code>{
 *   "organizationName": "biomed",
 *   "name": "publications",
 *   "settings": {
 *     "char_filter": { "strip_html": { "type": "html_strip" } },
 *     "tokenizer":   { "std": { "type": "standard" } },
 *     "filter": {
 *       "english_stop": { "type": "stop", "stopwords": "_english_" },
 *       "med_syn":      { "$ref": "biomed-medical_terms" }
 *     },
 *     "analyzer": {
 *       "default": {
 *         "type": "custom",
 *         "tokenizer": "std",
 *         "char_filter": ["strip_html"],
 *         "filter": ["lowercase", "med_syn", "english_stop"],
 *         "position_increment_gap": 100
 *       }
 *     }
 *   }
 * }</code></pre><p><b>Cross-resource references &mdash; <code>$ref</code></b>: anywhere in the analyzer's <code>filter</code> registry map you may write <code>{"$ref": "{organizationName}-{name}"}</code> in place of an inline filter definition. The reference must resolve to a SynonymSet by qualified name. <code>$ref</code> values are resolved at index-build time; cycles are rejected. <code>$ref</code> entries are NOT permitted inside chain arrays (<code>analyzer.*.filter</code>, <code>analyzer.*.char_filter</code>) &mdash; those stay as plain string arrays mirroring OpenSearch.</p><p>Reference this analyzer from a SearchConfiguration's <code>defaultAnalyzer</code> field or from a ColumnAnalyzerOverride entry, using its qualified name <code>{organizationName}-{name}</code>.</p>
 * @export
 * @interface TextAnalyzer
 */
export interface TextAnalyzer {
    /**
     * The unique ID of this text analyzer.
     * @type {string}
     * @memberof TextAnalyzer
     */
    id?: string;
    /**
     * The name of the Organization this resource belongs to. Immutable after creation.
     * @type {string}
     * @memberof TextAnalyzer
     */
    organizationName?: string;
    /**
     * The resource name. Must start with a letter and contain only letters, digits, and underscores. Unique within the organization and immutable after creation. Used as part of the qualified name ({organizationName}-{name}) when referenced by other resources.
     * @type {string}
     * @memberof TextAnalyzer
     */
    name?: string;
    /**
     * Optional description.
     * @type {string}
     * @memberof TextAnalyzer
     */
    description?: string;
    /**
     * <p>Required. JSON object holding the <i>contents of</i> the <code>settings.analysis</code> block of an OpenSearch <a href='https://docs.opensearch.org/latest/api-reference/index-apis/create-index/'>create-index</a> request body &mdash; see also the OpenSearch <a href='https://docs.opensearch.org/latest/analyzers/'>text analysis overview</a>. <b>Do not</b> wrap the value in an outer <code>{"settings": {"analysis": ...}}</code> envelope; the allowed root keys are <code>char_filter</code>, <code>tokenizer</code>, <code>filter</code>, and <code>analyzer</code>. Index-level keys such as <code>index.max_ngram_diff</code>, <code>index.refresh_interval</code>, and <code>analysis.normalizer</code> are out of scope here.</p><p>The inner <code>analyzer</code> map must declare exactly one entry named <code>default</code> (required), and may optionally declare a second entry named <code>default_search</code>; any other entry under <code>analyzer</code> is rejected at create / update time. See the type-level description for the rationale.</p><p>Synapse parses this object and resolves any <code>{"$ref": "{org}-{name}"}</code> entries against existing SynonymSets at index-build time; everything else passes through to AOSS verbatim, including <a href='https://docs.opensearch.org/latest/analyzers/custom-analyzer/'>custom analyzer</a> shape, parameter names, and built-in component types. Per AOSS Serverless, file-based parameters (any <code>*_path</code> key) will be rejected at index-build time &mdash; use the inline equivalents (<code>stopwords</code>, <code>synonyms</code>, <code>mappings</code>, <code>protected_words</code>).</p>
     * @type {any}
     * @memberof TextAnalyzer
     */
    settings?: any | null;
    /**
     * Synapse employs an Optimistic Concurrency Control (OCC) scheme.
     * @type {string}
     * @memberof TextAnalyzer
     */
    etag?: string;
    /**
     * The date this resource was created.
     * @type {string}
     * @memberof TextAnalyzer
     */
    createdOn?: string;
    /**
     * The ID of the user that created this resource.
     * @type {string}
     * @memberof TextAnalyzer
     */
    createdBy?: string;
    /**
     * The date this resource was last modified.
     * @type {string}
     * @memberof TextAnalyzer
     */
    modifiedOn?: string;
    /**
     * The ID of the user that last modified this resource.
     * @type {string}
     * @memberof TextAnalyzer
     */
    modifiedBy?: string;
}
/**
 * Check if a given object implements the TextAnalyzer interface.
 */
export declare function instanceOfTextAnalyzer(value: object): value is TextAnalyzer;
export declare function TextAnalyzerFromJSON(json: any): TextAnalyzer;
export declare function TextAnalyzerFromJSONTyped(json: any, ignoreDiscriminator: boolean): TextAnalyzer;
export declare function TextAnalyzerToJSON(json: any): TextAnalyzer;
export declare function TextAnalyzerToJSONTyped(value?: TextAnalyzer | null, ignoreDiscriminator?: boolean): any;
