package com.atlassian.stash.internal.repository.sync.command;

import com.atlassian.stash.internal.repository.sync.RefSyncResult;
import com.atlassian.bitbucket.repository.RefChange;
import com.atlassian.bitbucket.scm.Command;

import javax.annotation.Nonnull;

/**
 * @since 2.6
 */
public interface RefSyncCommandFactory {

    @Nonnull
    Command<RefChange> discardRef(@Nonnull DiscardRefCommandParameters parameters);

    @Nonnull
    Command<RefChange> mergeRef(@Nonnull MergeRefCommandParameters parameters);

    @Nonnull
    Command<RefSyncResult> reviewRefs(@Nonnull ReviewRefsCommandParameters parameters);

    @Nonnull
    Command<RefSyncResult> synchronizeRefs(@Nonnull SynchronizeRefsCommandParameters parameters);
}
