import { ClientServiceConfig } from './ClientServiceConfig';
import { HDict, HStr } from 'haystack-core';
import { HGrid, HaysonDict, HMarker } from 'haystack-core';
/**
 * A project record.
 */
export interface Project extends HDict {
    proj: HMarker;
    projName: HStr;
}
/**
 * An implementation of the FIN project service.
 */
export declare class ProjectService<ProjectType extends Project = Project> {
    #private;
    /**
     * Constructs a new project service object.
     *
     * @param serviceConfig Service configuration.
     */
    constructor(serviceConfig: ClientServiceConfig);
    /**
     * Read a project via its name.
     *
     * @param name The name of the project to read.
     * @returns The project record.
     * @throws An error if the project can't be found.
     */
    readByName(name: string): Promise<ProjectType>;
    /**
     * Query all projects.
     *
     * @returns The result of the read operation.
     */
    readAll(): Promise<HGrid<ProjectType>>;
    /**
     * Create a project.
     *
     * @params project The project to create.
     * @returns The created project. Please note, the record only contains the name.
     */
    createProject(project: ProjectType | HaysonDict): Promise<ProjectType>;
    /**
     * Update a project record.
     *
     * @param project The project record to update.
     * @returns A updated project record.
     */
    update(project: ProjectType | HaysonDict): Promise<ProjectType>;
}
