import Service from "../service";
import Client from "../client";
import PlatformsAccount, { AccountTypesEnum } from "./resource/platforms/account";
import PlatformsFund from "./resource/platforms/fund";
import PlatformsHostedOnboardingPage from "./resource/platforms/hop";
import { GetAccountHolderRequest, GetUploadedDocumentsRequest, GetAccountHolderResponse, GetUploadedDocumentsResponse, CreateAccountHolderRequest, CreateAccountHolderResponse, CloseAccountHolderRequest, CloseAccountHolderResponse, CreateAccountRequest, CreateAccountResponse, DeleteBankAccountRequest, GenericResponse, DeletePayoutMethodRequest, UpdateAccountRequest, UpdateAccountResponse, UploadDocumentRequest, UnSuspendAccountHolderRequest, UnSuspendAccountHolderResponse, CloseAccountRequest, CloseAccountResponse, SuspendAccountHolderRequest, SuspendAccountHolderResponse, UpdateAccountHolderRequest, UpdateAccountHolderResponse, DeleteShareholderRequest, PerformVerificationRequest, UpdateAccountHolderStateRequest, GetAccountHolderStatusResponse, GetTaxFormRequest, GetTaxFormResponse } from "../typings/platformsAccount/models";
import { GetOnboardingUrlRequest, GetOnboardingUrlResponse, GetPciUrlRequest, GetPciUrlResponse } from "../typings/platformsHostedOnboardingPage/models";
import { DebitAccountHolderRequest, DebitAccountHolderResponse } from "../typings/platformsFund/models";
type AccountType = AccountTypesEnum.Accounts;
type VerificationType = AccountTypesEnum.Verification;
type AccountHoldersType = AccountTypesEnum.AccountHolders;
type AccountsAccount = PlatformsAccount<AccountType>;
type AccountsVerification = PlatformsAccount<VerificationType>;
type AccountsAccountHolders = PlatformsAccount<AccountHoldersType>;
type PlatformsTypes = AccountsAccount | AccountsVerification | AccountsAccountHolders | PlatformsFund | PlatformsHostedOnboardingPage;
declare class Platforms extends Service {
    private readonly _closeAccount;
    private readonly _updateAccount;
    private readonly _createAccount;
    private readonly _uploadDocument;
    private readonly _getUploadedDocuments;
    private readonly _deleteBankAccounts;
    private readonly _deletePayoutMethods;
    private readonly _deleteShareholders;
    private readonly _checkAccountHolder;
    private readonly _createAccountHolder;
    private readonly _getAccountHolder;
    private readonly _updateAccountHolder;
    private readonly _updateAccountHolderState;
    private readonly _suspendAccountHolder;
    private readonly _unSuspendAccountHolder;
    private readonly _closeAccountHolder;
    private readonly _getTaxForm;
    private readonly _accountHolderBalance;
    private readonly _accountHolderTransactionList;
    private readonly _payoutAccountHolder;
    private readonly _transferFunds;
    private readonly _refundFundsTransfer;
    private readonly _setupBeneficiary;
    private readonly _refundNotPaidOutTransfers;
    private readonly _debitAccountHolder;
    private readonly _getOnboardingUrl;
    private readonly _getPciQuestionnaireUrl;
    private readonly _createNotificationConfiguration;
    private readonly _getNotificationConfiguration;
    private readonly _getNotificationConfigurationList;
    private readonly _testNotificationConfiguration;
    private readonly _updateNotificationConfiguration;
    private readonly _deleteNotificationConfiguration;
    constructor(client: Client);
    createRequest: <T extends PlatformsTypes, U, V>(service: T) => (request: U) => Promise<V>;
    get Account(): {
        getAccountHolder: (request: GetAccountHolderRequest) => Promise<GetAccountHolderResponse>;
        getUploadedDocuments: (request: GetUploadedDocumentsRequest) => Promise<GetUploadedDocumentsResponse>;
        createAccountHolder: (request: CreateAccountHolderRequest) => Promise<CreateAccountHolderResponse>;
        closeAccountHolder: (request: CloseAccountHolderRequest) => Promise<CloseAccountHolderResponse>;
        createAccount: (request: CreateAccountRequest) => Promise<CreateAccountResponse>;
        deleteBankAccounts: (request: DeleteBankAccountRequest) => Promise<GenericResponse>;
        deletePayoutMethods: (request: DeletePayoutMethodRequest) => Promise<GenericResponse>;
        updateAccount: (request: UpdateAccountRequest) => Promise<UpdateAccountResponse>;
        uploadDocument: (request: UploadDocumentRequest) => Promise<GetUploadedDocumentsResponse>;
        unSuspendAccountHolder: (request: UnSuspendAccountHolderRequest) => Promise<UnSuspendAccountHolderResponse>;
        closeAccount: (request: CloseAccountRequest) => Promise<CloseAccountResponse>;
        suspendAccountHolder: (request: SuspendAccountHolderRequest) => Promise<SuspendAccountHolderResponse>;
        updateAccountHolder: (request: UpdateAccountHolderRequest) => Promise<UpdateAccountHolderResponse>;
        deleteShareholders: (request: DeleteShareholderRequest) => Promise<GenericResponse>;
        checkAccountHolder: (request: PerformVerificationRequest) => Promise<GenericResponse>;
        updateAccountHolderState: (request: UpdateAccountHolderStateRequest) => Promise<GetAccountHolderStatusResponse>;
        getTaxForm: (request: GetTaxFormRequest) => Promise<GetTaxFormResponse>;
    };
    get Fund(): {
        refundNotPaidOutTransfers: (request: IPlatformsFund.RefundNotPaidOutTransfersRequest) => Promise<IPlatformsFund.RefundNotPaidOutTransfersResponse>;
        accountHolderTransactionList: (request: IPlatformsFund.AccountHolderTransactionListRequest) => Promise<IPlatformsFund.AccountHolderTransactionListResponse>;
        setupBeneficiary: (request: IPlatformsFund.SetupBeneficiaryRequest) => Promise<IPlatformsFund.SetupBeneficiaryResponse>;
        transferFunds: (request: IPlatformsFund.TransferFundsRequest) => Promise<IPlatformsFund.TransferFundsResponse>;
        refundFundsTransfer: (request: IPlatformsFund.RefundFundsTransferRequest) => Promise<IPlatformsFund.RefundFundsTransferResponse>;
        payoutAccountHolder: (request: IPlatformsFund.PayoutAccountHolderRequest) => Promise<IPlatformsFund.PayoutAccountHolderResponse>;
        accountHolderBalance: (request: IPlatformsFund.AccountHolderBalanceRequest) => Promise<IPlatformsFund.AccountHolderBalanceResponse>;
        debitAccountHolder: (request: DebitAccountHolderRequest) => Promise<DebitAccountHolderResponse>;
    };
    get HostedOnboardingPage(): {
        getOnboardingUrl: (request: GetOnboardingUrlRequest) => Promise<GetOnboardingUrlResponse>;
        getPciQuestionnaireUrl: (request: GetPciUrlRequest) => Promise<GetPciUrlResponse>;
    };
    get NotificationConfiguration(): {
        createNotificationConfiguration: (request: IPlatformsNotificationConfiguration.CreateNotificationConfigurationRequest) => Promise<IPlatformsNotificationConfiguration.GetNotificationConfigurationResponse>;
        updateNotificationConfiguration: (request: IPlatformsNotificationConfiguration.UpdateNotificationConfigurationRequest) => Promise<IPlatformsNotificationConfiguration.GetNotificationConfigurationResponse>;
        getNotificationConfiguration: (request: IPlatformsNotificationConfiguration.GetNotificationConfigurationRequest) => Promise<IPlatformsNotificationConfiguration.GetNotificationConfigurationResponse>;
        testNotificationConfiguration: (request: IPlatformsNotificationConfiguration.TestNotificationConfigurationRequest) => Promise<IPlatformsNotificationConfiguration.TestNotificationConfigurationResponse>;
        getNotificationConfigurationList: (request: Record<string, unknown>) => Promise<IPlatformsNotificationConfiguration.GetNotificationConfigurationListResponse>;
        deleteNotificationConfigurations: (request: IPlatformsNotificationConfiguration.DeleteNotificationConfigurationRequest) => Promise<IPlatformsNotificationConfiguration.GenericResponse>;
    };
}
export default Platforms;
