package com.atlassian.bitbucket.scm.git.command.notes;

import javax.annotation.Nonnull;

/**
 * Decision gate for choosing what {@code git notes} subcommand will be executed when the builder is created.
 */
public interface GitNotes {

    /**
     * @param object the object (identified by name or hash) of the object to apply the note to
     * @return a builder to add a new note to the specified object
     */
    @Nonnull
    GitNotesAddBuilder add(@Nonnull String object);

    /**
     * @param object the object (identified by name or hash) of the object to remove the note from
     * @return a builder to remove an existing note from the specified object
     */
    @Nonnull
    GitNotesRemoveBuilder remove(@Nonnull String object);

    /**
     * @param object the object (identified by name or hash) of the object to show the note on
     * @return a builder to show an existing note on the specified object
     */
    @Nonnull
    GitNotesShowBuilder show(@Nonnull String object);
}
