import { Species } from './Species';
import { Organism } from './Organism';
import { ConnectionGene } from './ConnectionGene';
import { NodeGene } from './NodeGene';
import { FitnessFunction, NEATConfig } from '../types';
export declare class Population {
    size: number;
    species: Array<Species>;
    organisms: Array<Organism>;
    config: NEATConfig;
    generation: number;
    constructor(config: NEATConfig);
    save(): void;
    static from(config: NEATConfig, { nodes, connections }: {
        nodes: NodeGene[];
        connections: ConnectionGene[];
    }): Population;
    getSuperChamp(): Organism | null;
    addOrganism(organism: Organism): void;
    removeOrganism(organism: Organism): void;
    speciate(): void;
    epoch(): void;
    run(fitnessFn: FitnessFunction, maxRuns?: number, delay?: number): Promise<Organism>;
}
