import { AtomGenerics, AtomValueOrFactory } from '../../types/index';
import { AtomInstance } from '../instances/AtomInstance';
import { Ecosystem } from '../Ecosystem';
import { AtomTemplateBase } from './AtomTemplateBase';
export declare class AtomTemplate<G extends AtomGenerics, AtomInstanceType extends AtomInstance<G> = AtomInstance<G>> extends AtomTemplateBase<G, AtomInstanceType> {
    /**
     * This method should be overridden when creating custom atom classes that
     * create a custom atom instance class. Return a new instance of your atom
     * instance class.
     */
    _createInstance(ecosystem: Ecosystem, id: string, params: G['Params']): AtomInstanceType;
    getInstanceId(ecosystem: Ecosystem, params?: G['Params']): string;
    override(newValue: AtomValueOrFactory<G>): AtomTemplate<{
        Exports: Record<string, any>;
        Params: any[];
        Promise: import("../../types/index").AtomApiPromise;
        State: any;
        Store: import("packages/core/dist/esm").Store<any>;
    }, AtomInstance<{
        Exports: Record<string, any>;
        Params: any[];
        Promise: import("../../types/index").AtomApiPromise;
        State: any;
        Store: import("packages/core/dist/esm").Store<any>;
    }, AtomTemplateBase<{
        Exports: Record<string, any>;
        Params: any[];
        Promise: import("../../types/index").AtomApiPromise;
        State: any;
        Store: import("packages/core/dist/esm").Store<any>;
    }, AtomInstance<{
        Exports: Record<string, any>;
        Params: any[];
        Promise: import("../../types/index").AtomApiPromise;
        State: any;
        Store: import("packages/core/dist/esm").Store<any>;
    }, any>>>>;
}
