import { SemVer } from 'semver';
import { AnyFS } from '@teambit/any-fs';
import ComponentConfig from './config';
import ComponentFS from './component-fs';
import TagMap from './tag-map';
import ComponentID from './id';
import State from './state';
import Snap, { Author } from './snap';
export default class Component {
    readonly id: ComponentID;
    readonly head: Snap | null;
    readonly state: State;
    readonly tags: TagMap;
    constructor(id: ComponentID, head: Snap | null, state: State, tags?: TagMap);
    get config(): ComponentConfig;
    get filesystem(): ComponentFS;
    stringify(): string;
    graph(): Promise<void>;
    capsule(): void;
    snap(author: Author, message?: string): Component;
    tag(version: SemVer): void;
    isModified(): boolean;
    isNew(): boolean;
    checkout(version: SemVer): void;
    write(path: string, fs?: AnyFS): void;
    fromString(str: string): Component;
    equals(component: Component): boolean;
}
