// Copyright Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;
namespace EpicGames.Perforce
{
///
/// Base interface for Perforce clients
///
public interface IPerforceConnection : IDisposable
{
///
/// Connection settings
///
IPerforceSettings Settings { get; }
///
/// Logger for this connection
///
ILogger Logger { get; }
///
/// Queues a Perforce command to be executed
///
/// The command name
/// Arguments for the command
/// File arguments (may be put into a response file)
/// Input data to be passed to the command
/// Response for login prompts
/// Whether to intercept file I/O and return it in the reponse stream. Only supported by the native client.
/// Response object
IPerforceOutput Command(string command, IReadOnlyList arguments, IReadOnlyList? fileArguments, byte[]? inputData, string? promptResponse, bool interceptIo);
///
/// Creates a record from a set of input fields
///
/// Fields for the record
/// Serialized record data
PerforceRecord CreateRecord(List> fields);
}
}