int transactionId); Result<CardPayment> GetLastCardPayment(Party recipient, Person payer); IEnumerable<Merchant> SearchMerchants(GeoLocation currentCoordinate, Country country, int skip = 0, int take = 20); IEnumerable<Merchant> SearchMerchants(string name, Country userCountry, int skip = 0, int take = 20); IEnumerable<Merchant> GetMerchantRecommendationsForPerson(Person person, int skip = 0, int take = 20); Merchant GetMerchant(int merchantId, bool includeClosed = false); Merchant GetMerchantFromHandle(string handle); Merchant GetMerchantFromIdOrHandle(string idOrHandle); IEnumerable<ReferenceDefinition> GetReferenceDefinitions(Merchant merchant, bool includeRemoved = false); Person GetPerson(int personId); IEnumerable<Merchant> GetPersonsFavouriteMerchants(Person person, int skip = 0, int take = 50); GeoLocation GetPersonsLastKnownLocation(Person person); IEnumerable<Merchant> GetRecipientsForPayer(Person person); void CreateOrUpdatePushpayer(Person person, PushpayerAccountStatus status, int activityScore); #endregion // Huh? void Detach(Entity entity); #region Pushpayer Registration Stuff CreateCustomerResult BeginRegistration(CreateCustomerModel model); void CompleteRegistration(Person person, RegisterSource unknown); RegisterInfoResult RegisterInfo(Guid authToken, RegisterInfoModel info); Result MergeRegistrationWithExistingPerson(Guid registrationToken, Guid authToken); #endregion #region Pushpayer-Admin Own Account Result<MerchantPersonRelationship> AddFavourite(Person person, Merchant merchant); Result<MerchantPersonRelationship> RemoveFavourite(Person person, Merchant merchant); #endregion #region UserLogin / Auth / Security LoginResult Login(string username, string password); SessionToken Authenticate(Guid authToken); LoginResult LoginWeb(string username, string password); Result<SessionToken> AuthenticateWeb(Guid webToken); Result<SessionToken> ValidateSession(Guid sessionToken, SessionType sessionType = SessionType.App); Result<Guid> SendForgotPassword(string email); bool ValidatePasswordResetToken(Guid webToken); bool ResetPassword(Guid webToken, string password); void Logout(Person person, SessionToken sessionToken = null); void FreezeAccount(Person person); #endregion #region Merchant-Admin Own Account Result<MerchantAccountUpdateResultCode> UpdateMerchantInformation(MerchantAccountUpdateModel model, Merchant merchant); Result<MerchantControlTransferResultCode, Merchant> TransferMerchantAdmin(MerchantControlTransferModel model, Merchant merchant); #endregion }