using InABox.Core;
using InABox.Core.Postable;
using InABox.Scripting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InABox.Poster.MYOB;

[Caption("MYOB")]
public interface IMYOBPoster<TPostable, TSettings> : IPoster<TPostable, TSettings>, IGlobalSettingsPoster<MYOBGlobalPosterSettings>
    where TPostable : Entity, IPostable, IRemotable, IPersistent, new()
    where TSettings : MYOBPosterSettings
{
    ScriptDocument? Script { get; set; }

    MYOBConnectionData ConnectionData { get; set; }

    bool BeforePost(IDataModel<TPostable> model);

    IPostResult<TPostable> Process(IDataModel<TPostable> model);
}
