using PipServices3.Commons.Config;
using PipServices3.Commons.Refer;
using PipServices3.Commons.Run;
using System.Threading.Tasks;

public class MyComponent: IConfigurable, IReferenceable, IUnreferenceable, IOpenable, IExecutable, INotifiable, 
ICleanable
{
    public MyComponent() { /* Initialize the component */ }
    public void Configure(ConfigParams config) { /* configure the component */ }
    public void SetReferences(IReferences references) { /* set component dependencies */ }
    public void UnsetReferences() { /* unset component references */ }
    public bool IsOpen() { /* return the component open state */ }
    public Task OpenAsync(string correlationId) { /* open the component */ }
    public Task CloseAsync(string correlationId) { /* close the component */ }
    public Task<object> ExecuteAsync(string correlationId, Parameters args) { /* execute the component 
transaction */ }
    public Task NotifyAsync(string correlationId, Parameters args) { /* notify the component about events*/ }
    public Task ClearAsync(string correlationId) { /* clear the component state */ }
}