package com.lob.client;
import com.google.common.util.concurrent.ListenableFuture;
import com.lob.id.AddressId;
import com.lob.id.AreaMailId;
import com.lob.id.BankAccountId;
import com.lob.id.CheckId;
import com.lob.id.LetterId;
import com.lob.id.PostcardId;
import com.lob.protocol.request.*;
import com.lob.protocol.response.*;
public interface LobClient {
public final static String LOB_VERSION_HEADER = "Lob-Version";
public void close();
public void closeAsynchronously();
// Address methods
public ListenableFuture<AddressResponse> createAddress(final AddressRequest addressRequest);
public ListenableFuture<AddressResponse> getAddress(final AddressId id);
public ListenableFuture<AddressResponseList> getAddresses();
@Deprecated
public ListenableFuture<AddressResponseList> getAddresses(final int count);
@Deprecated
public ListenableFuture<AddressResponseList> getAddresses(final int count, final int offset);
public ListenableFuture<AddressResponseList> getAddresses(final Filter filter);
public ListenableFuture<AddressDeleteResponse> deleteAddress(final AddressId id);
// Letter methods
public ListenableFuture<LetterResponse> createLetter(final LetterRequest letterRequest);
public ListenableFuture<LetterResponse> getLetter(final LetterId id);
public ListenableFuture<LetterResponseList> getLetters();
@Deprecated
public ListenableFuture<LetterResponseList> getLetters(final int count);
@Deprecated
public ListenableFuture<LetterResponseList> getLetters(final int count, final int offset);
public ListenableFuture<LetterResponseList> getLetters(final Filter filter);
public ListenableFuture<LetterDeleteResponse> deleteLetter(final LetterId id);
// Postcard methods
public ListenableFuture<PostcardResponse> createPostcard(final PostcardRequest postcardRequest);
public ListenableFuture<PostcardResponse> getPostcard(final PostcardId id);
public ListenableFuture<PostcardResponseList> getPostcards();
@Deprecated
public ListenableFuture<PostcardResponseList> getPostcards(final int count);
@Deprecated
public ListenableFuture<PostcardResponseList> getPostcards(final int count, final int offset);
public ListenableFuture<PostcardResponseList> getPostcards(final Filter filter);
public ListenableFuture<PostcardDeleteResponse> deletePostcard(final PostcardId id);
// Check methods
public ListenableFuture<CheckResponse> createCheck(final CheckRequest checkRequest);
public ListenableFuture<CheckResponse> getCheck(final CheckId id);
public ListenableFuture<CheckResponseList> getChecks();
@Deprecated
public ListenableFuture<CheckResponseList> getChecks(final int count);
@Deprecated
public ListenableFuture<CheckResponseList> getChecks(final int count, final int offset);
public ListenableFuture<CheckResponseList> getChecks(final Filter filter);
public ListenableFuture<CheckDeleteResponse> deleteCheck(final CheckId id);
// Bank account methods
public ListenableFuture<BankAccountResponse> createBankAccount(final BankAccountRequest bankAccountRequest);
public ListenableFuture<BankAccountResponse> getBankAccount(final BankAccountId id);
public ListenableFuture<BankAccountResponseList> getBankAccounts();
@Deprecated
public ListenableFuture<BankAccountResponseList> getBankAccounts(final int count);
@Deprecated
public ListenableFuture<BankAccountResponseList> getBankAccounts(final int count, final int offset);
public ListenableFuture<BankAccountResponseList> getBankAccounts(final Filter filter);
public ListenableFuture<BankAccountDeleteResponse> deleteBankAccount(final BankAccountId id);
public ListenableFuture<BankAccountResponse> verifyBankAccount(final BankAccountVerifyRequest request);
// Area mail methods
public ListenableFuture<AreaMailResponse> createAreaMail(final AreaMailRequest areaMailRequest);
public ListenableFuture<AreaMailResponse> getAreaMail(final AreaMailId id);
public ListenableFuture<AreaMailResponseList> getAreaMails();
@Deprecated
public ListenableFuture<AreaMailResponseList> getAreaMails(final int count);
@Deprecated
public ListenableFuture<AreaMailResponseList> getAreaMails(final int count, final int offset);
public ListenableFuture<AreaMailResponseList> getAreaMails(final Filter filter);
public ListenableFuture<ZipCodeRouteResponseList> getZipCodeRoutes(final ZipCodeRouteRequest request);
public ListenableFuture<USVerificationResponse> verifyUSAddress(final USVerificationRequest request);
public ListenableFuture<IntlVerificationResponse> verifyIntlAddress(final IntlVerificationRequest request);
// Resources
public ListenableFuture<CountryResponseList> getCountries();
public ListenableFuture<StateResponseList> getStates();
}