"use strict";
/* tslint:disable */
/* eslint-disable */
/**
 * The Plaid API
 * The Plaid REST API. Please see https://plaid.com/docs/api for more details.
 *
 * The version of the OpenAPI document: 2020-09-14_1.617.1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CraBankIncomeCompleteResult = exports.CraBankIncomeBonusType = exports.CountryCode = exports.CounterpartyType = exports.ConsumerReportPermissiblePurpose = exports.ConsumerDisputeCategory = exports.ConsentEventType = exports.ConsentEventInitiator = exports.ConsentEventCode = exports.CashflowAttributesVersion = exports.BeaconUserStatus = exports.BeaconReportType = exports.BeaconReportCreateType = exports.BeaconMatchSummaryCode = exports.BeaconAuditTrailSource = exports.BeaconAccountRiskEvaluateEvaluationReason = exports.BaseReportWarningCode = exports.BaseReportTransactionType = exports.BankTransferType = exports.BankTransferStatus = exports.BankTransferNetwork = exports.BankTransferEventType = exports.BankTransferEventListDirection = exports.BankTransferEventListBankTransferType = exports.BankTransferDirection = exports.BankIncomeRefreshCompleteResult = exports.BankIncomeCompleteResult = exports.BalancePlusRiskLevel = exports.AuthUpdateTypes = exports.AssetType = exports.AssetTransactionType = exports.AssetTransactionCategoryType = exports.AssetReportType = exports.AssetReportTransactionType = exports.AssetReportAddOns = exports.AddressPurposeLabel = exports.ActivityType = exports.ActionState = exports.AccountVerificationInsightsAccountNumberFormat = exports.AccountType = exports.AccountSubtype = exports.AccountSelectionCardinality = exports.AccountIdentityMatchScoreVerificationStatusEnum = exports.AccountIdentityDocumentUploadVerificationStatusEnum = exports.AccountIdentityVerificationStatusEnum = exports.AccountHolderCategory = exports.AccountBaseVerificationStatusEnum = exports.AccountAssetsVerificationStatusEnum = exports.APRAprTypeEnum = exports.ACHClass = void 0;
exports.FraudCheckOutcome = exports.Form1099Type = exports.FDXPartyType = exports.FDXPartyRegistry = exports.FDXNotificationType = exports.FDXNotificationSeverity = exports.FDXNotificationPriority = exports.FDXNotificationPayloadIdType = exports.FDXNotificationCategory = exports.FDXHateoasLinkAction = exports.FDXContentTypes = exports.ExpirationDate = exports.EntityWatchlistCode = exports.EntityDocumentType = exports.EnrichTransactionDirection = exports.EmploymentVerificationStatus = exports.EmploymentSourceType = exports.EmailTypeEnum = exports.EarningsBreakdownCanonicalDescription = exports.DocumentStatus = exports.DocumentNameMatchCode = exports.DocumentDateOfBirthMatchCode = exports.DocumentAuthenticityMatchCode = exports.DocType = exports.DepositoryAccountSubtype = exports.DepositSwitchTargetAccountAccountSubtypeEnum = exports.DepositSwitchGetResponseSwitchMethodEnum = exports.DepositSwitchGetResponseStateEnum = exports.DepositSwitchCreateRequestCountryCodeEnum = exports.DepositSwitchAltCreateRequestCountryCodeEnum = exports.DataSources = exports.DashboardUserStatus = exports.CreditSessionBankIncomeStatus = exports.CreditSessionBankEmploymentStatus = exports.CreditPayStubPayBasisType = exports.CreditBankIncomeWarningType = exports.CreditBankIncomeWarningCode = exports.CreditBankIncomePayFrequency = exports.CreditBankIncomeErrorType = exports.CreditBankIncomeCategory = exports.CreditBankIncomeAccountType = exports.CreditBankEmploymentWarningType = exports.CreditAccountSubtype = exports.CreditACHClass = exports.CraPDFAddOns = exports.CraLoanType = exports.CraLoanStatus = exports.CraLoanPaymentSchedule = exports.CraLoanApplicationDecision = exports.CraBankIncomeWarningCode = void 0;
exports.OwnershipType = exports.OverrideAccountType = exports.OtherAccountSubtype = exports.OriginatorExpectedTransferFrequency = exports.OmittableTransferType = exports.NetworkStatusGetResponseNetworkStatus = exports.MonitoringItemStatusCode = exports.MonitoringInsightsStatus = exports.MonitoringConsumerReportPermissiblePurpose = exports.MatchSummaryCode = exports.LoanIdentifierType = exports.LoanAccountSubtype = exports.LinkTokenCreateRequestAuthFlowTypeEnum = exports.LinkTokenCreateRequestAuthRerouteToCredentialsEnum = exports.LinkSessionSuccessMetadataTransferStatus = exports.LinkEventName = exports.LinkDeliveryWebhookDeliveryStatus = exports.LinkDeliveryWebhookCommunicationMethod = exports.LinkDeliveryWebhookCallbackType = exports.LinkDeliveryVerificationStatus = exports.LinkDeliverySessionStatus = exports.LinkDeliveryDeliveryMethod = exports.ItemWithConsentFieldsUpdateTypeEnum = exports.ItemCreateAuthentication = exports.ItemConsentedDataScope = exports.ItemAuthMethod = exports.ItemUpdateTypeEnum = exports.IssuingCountry = exports.IssuesStatus = exports.InvestmentTransactionType = exports.InvestmentTransactionSubtype = exports.InvestmentAccountSubtype = exports.IndividualWatchlistCode = exports.IncomeVerificationSourceType = exports.IncomeVerificationPrecheckConfidence = exports.IncomeVerificationPayrollFlowType = exports.IncomeVerificationDocParsingConfig = exports.IncomeBreakdownType = exports.IncidentUpdateStatusEnum = exports.ImageQualityOutcome = exports.ImageQuality = exports.IdentityVerificationStepStatus = exports.IdentityVerificationStatus = exports.IdentityVerificationAutofillStatus = exports.IdentityUpdateTypes = exports.ISOCurrencyCode = exports.IDNumberType = exports.HostedLinkDeliveryMethod = exports.HiddenMatchSummaryCode = exports.FraudCheckOutcomeWithNoData = void 0;
exports.RiskCheckEmailTopLevelDomainIsSuspicious = exports.RiskCheckEmailIsDeliverableStatus = exports.RiskCheckEmailDomainIsFreeProvider = exports.RiskCheckEmailDomainIsDisposable = exports.RiskCheckEmailDomainIsCustom = exports.RiskCheckBehaviorUserInteractionsLabel = exports.RiskCheckBehaviorFraudRingDetectedLabel = exports.RiskCheckBehaviorBotDetectedLabel = exports.ReportType = exports.RecurringTransactionFrequency = exports.RecurringFrequency = exports.RecommendationString = exports.ProxyType = exports.ProgramNameSensitivity = exports.Products = exports.ProductStatusBreakdownRefreshIntervalEnum = exports.ProductStatusStatusEnum = exports.ProcessorTokenCreateRequestProcessorEnum = exports.PrismProduct = exports.PrismInsightsVersion = exports.PrismFirstDetectVersion = exports.PrismCashScoreVersion = exports.PlaidErrorType = exports.PhysicalDocumentCategory = exports.PhoneType = exports.PhoneNumberTypeEnum = exports.PendingDisconnectWebhookReason = exports.PaystubPayFrequency = exports.PaymentScheme = exports.PaymentScheduleInterval = exports.PaymentProfileStatus = exports.PaymentInitiationPaymentStatus = exports.PaymentInitiationPaymentCreateStatus = exports.PaymentInitiationConsentType = exports.PaymentInitiationConsentStatus = exports.PaymentInitiationConsentScope = exports.PaymentInitiationConsentProcessingMode = exports.PaymentConsentPeriodicInterval = exports.PaymentConsentPeriodicAlignment = exports.PaymentChannel = exports.PaymentAmountCurrency = exports.PayPeriodDetailsPayFrequency = exports.PayFrequencyValue = exports.PartyRoleType = exports.PartnerEndCustomerStatus = exports.PartnerEndCustomerQuestionnaireStatus = exports.PartnerEndCustomerOAuthStatusUpdatedValues = exports.PartnerEndCustomerOAuthInstitutionApplicationStatus = exports.PartnerEndCustomerFlowdownStatus = exports.POBoxStatus = void 0;
exports.TransferDocumentPurpose = exports.TransferDiligenceStatus = exports.TransferCreditFundsSource = exports.TransferBalanceType = exports.TransferAuthorizationRiskLevel = exports.TransferAuthorizationGuaranteeDecisionRationaleCode = exports.TransferAuthorizationGuaranteeDecision = exports.TransferAuthorizationDecisionRationaleCode = exports.TransferAuthorizationDecision = exports.TransferACHNetwork = exports.TransactionsUpdateStatus = exports.TransactionsRuleType = exports.TransactionsRuleField = exports.TransactionStreamStatus = exports.TransactionCode = exports.TransactionBaseTransactionTypeEnum = exports.TransactionAllOfPaymentChannelEnum = exports.TransactionPaymentChannelEnum = exports.TransactionTransactionTypeEnum = exports.TotalCanonicalDescription = exports.TaxpayerIdentifierType = exports.SweepTrigger = exports.SweepStatus = exports.StudentRepaymentPlanTypeEnum = exports.StudentLoanStatusTypeEnum = exports.Strategy = exports.StatementsRefreshCompleteResult = exports.Source = exports.SignalScheduleDefaultPaymentMethod = exports.SignalPaymentMethod = exports.SignalDecisionOutcome = exports.ServiceProductFulfillmentIdentifier = exports.SelfieStatus = exports.SelfieCheckStatus = exports.SelfieAnalysisLivenessCheck = exports.SelfieAnalysisFacialAnalysisOutcome = exports.SelfieAnalysisDocumentComparison = exports.ScopesContext = exports.SandboxItemSetVerificationStatusRequestVerificationStatusEnum = exports.SandboxItemFireWebhookRequestWebhookCodeEnum = exports.SandboxIncomeWebhookFireRequestWebhookCode = exports.SandboxIncomeFireWebhookRequestVerificationStatusEnum = exports.SandboxBankIncomeWebhookFireRequestWebhookCode = exports.SMSVerificationStatus = exports.RiskSignalFileType = exports.RiskSignalDocumentType = exports.RiskSignalDocumentStatus = exports.RiskLevelWithNoData = exports.RiskLevel = exports.RiskCheckLinkedService = void 0;
exports.PlaidApi = exports.PlaidApiFactory = exports.PlaidApiFp = exports.PlaidApiAxiosParamCreator = exports.YieldRateType = exports.WebhookType = exports.WebhookEnvironmentValues = exports.WeakAliasDetermination = exports.WatchlistScreeningStatus = exports.WatchlistScreeningIndividualUpdateRequestResettableField = exports.WatchlistScreeningHitStatus = exports.WatchlistScreeningEntityUpdateRequestResettableField = exports.WatchlistScreeningDocumentType = exports.WarningWarningCodeEnum = exports.WalletTransactionStatus = exports.WalletTransactionRelationTypeEnum = exports.WalletTransactionGetResponseTypeEnum = exports.WalletTransactionFailureReason = exports.WalletTransactionTypeEnum = exports.WalletStatus = exports.WalletPaymentScheme = exports.WalletISOCurrencyCode = exports.VerifySMSDetailsStatus = exports.VerificationStatus = exports.VerificationRefreshStatus = exports.UserStatedIncomeSourcePayType = exports.UserStatedIncomeSourceFrequency = exports.UserStatedIncomeSourceCategory = exports.TransferType = exports.TransferSweepStatus = exports.TransferStatus = exports.TransferScheduleIntervalUnit = exports.TransferRefundStatus = exports.TransferRecurringStatus = exports.TransferRecurringNetwork = exports.TransferNetwork = exports.TransferLedgerSweepSimulateEventType = exports.TransferIntentStatus = exports.TransferIntentCreateNetwork = exports.TransferIntentCreateMode = exports.TransferIntentAuthorizationDecision = exports.TransferEventType = exports.TransferEventListTransferType = void 0;
const axios_1 = __importDefault(require("axios"));
// Some imports not used depending on template conditions
// @ts-ignore
const common_1 = require("./common");
// @ts-ignore
const base_1 = require("./base");
/**
 * Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC codes](https://plaid.com/docs/transfer/creating-transfers/#ach-sec-codes).  Codes supported for credits: `ccd`, `ppd` Codes supported for debits: `ccd`, `tel`, `web`  `\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts  `\"ppd\"` - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, e.g. bill payment  `\"tel\"` - Telephone-Initiated Entry  `\"web\"` - Internet-Initiated Entry - debits from a consumer’s account where their authorization is obtained over the Internet
 * @export
 * @enum {string}
 */
var ACHClass;
(function (ACHClass) {
    ACHClass["Ccd"] = "ccd";
    ACHClass["Ppd"] = "ppd";
    ACHClass["Tel"] = "tel";
    ACHClass["Web"] = "web";
})(ACHClass = exports.ACHClass || (exports.ACHClass = {}));
/**
    * @export
    * @enum {string}
    */
var APRAprTypeEnum;
(function (APRAprTypeEnum) {
    APRAprTypeEnum["BalanceTransferApr"] = "balance_transfer_apr";
    APRAprTypeEnum["CashApr"] = "cash_apr";
    APRAprTypeEnum["PurchaseApr"] = "purchase_apr";
    APRAprTypeEnum["Special"] = "special";
})(APRAprTypeEnum = exports.APRAprTypeEnum || (exports.APRAprTypeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var AccountAssetsVerificationStatusEnum;
(function (AccountAssetsVerificationStatusEnum) {
    AccountAssetsVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    AccountAssetsVerificationStatusEnum["PendingAutomaticVerification"] = "pending_automatic_verification";
    AccountAssetsVerificationStatusEnum["PendingManualVerification"] = "pending_manual_verification";
    AccountAssetsVerificationStatusEnum["ManuallyVerified"] = "manually_verified";
    AccountAssetsVerificationStatusEnum["VerificationExpired"] = "verification_expired";
    AccountAssetsVerificationStatusEnum["VerificationFailed"] = "verification_failed";
    AccountAssetsVerificationStatusEnum["DatabaseMatched"] = "database_matched";
})(AccountAssetsVerificationStatusEnum = exports.AccountAssetsVerificationStatusEnum || (exports.AccountAssetsVerificationStatusEnum = {}));
/**
    * @export
    * @enum {string}
    */
var AccountBaseVerificationStatusEnum;
(function (AccountBaseVerificationStatusEnum) {
    AccountBaseVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    AccountBaseVerificationStatusEnum["PendingAutomaticVerification"] = "pending_automatic_verification";
    AccountBaseVerificationStatusEnum["PendingManualVerification"] = "pending_manual_verification";
    AccountBaseVerificationStatusEnum["ManuallyVerified"] = "manually_verified";
    AccountBaseVerificationStatusEnum["VerificationExpired"] = "verification_expired";
    AccountBaseVerificationStatusEnum["VerificationFailed"] = "verification_failed";
    AccountBaseVerificationStatusEnum["DatabaseMatched"] = "database_matched";
    AccountBaseVerificationStatusEnum["DatabaseInsightsPass"] = "database_insights_pass";
    AccountBaseVerificationStatusEnum["DatabaseInsightsPassWithCaution"] = "database_insights_pass_with_caution";
    AccountBaseVerificationStatusEnum["DatabaseInsightsFail"] = "database_insights_fail";
})(AccountBaseVerificationStatusEnum = exports.AccountBaseVerificationStatusEnum || (exports.AccountBaseVerificationStatusEnum = {}));
/**
 * Indicates the account\'s categorization as either a personal or a business account. This field is currently in beta; to request access, contact your account manager.
 * @export
 * @enum {string}
 */
var AccountHolderCategory;
(function (AccountHolderCategory) {
    AccountHolderCategory["Business"] = "business";
    AccountHolderCategory["Personal"] = "personal";
    AccountHolderCategory["Unrecognized"] = "unrecognized";
})(AccountHolderCategory = exports.AccountHolderCategory || (exports.AccountHolderCategory = {}));
/**
    * @export
    * @enum {string}
    */
var AccountIdentityVerificationStatusEnum;
(function (AccountIdentityVerificationStatusEnum) {
    AccountIdentityVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    AccountIdentityVerificationStatusEnum["PendingAutomaticVerification"] = "pending_automatic_verification";
    AccountIdentityVerificationStatusEnum["PendingManualVerification"] = "pending_manual_verification";
    AccountIdentityVerificationStatusEnum["ManuallyVerified"] = "manually_verified";
    AccountIdentityVerificationStatusEnum["VerificationExpired"] = "verification_expired";
    AccountIdentityVerificationStatusEnum["VerificationFailed"] = "verification_failed";
    AccountIdentityVerificationStatusEnum["DatabaseMatched"] = "database_matched";
    AccountIdentityVerificationStatusEnum["DatabaseInsightsPass"] = "database_insights_pass";
    AccountIdentityVerificationStatusEnum["DatabaseInsightsPassWithCaution"] = "database_insights_pass_with_caution";
    AccountIdentityVerificationStatusEnum["DatabaseInsightsFail"] = "database_insights_fail";
})(AccountIdentityVerificationStatusEnum = exports.AccountIdentityVerificationStatusEnum || (exports.AccountIdentityVerificationStatusEnum = {}));
/**
    * @export
    * @enum {string}
    */
var AccountIdentityDocumentUploadVerificationStatusEnum;
(function (AccountIdentityDocumentUploadVerificationStatusEnum) {
    AccountIdentityDocumentUploadVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    AccountIdentityDocumentUploadVerificationStatusEnum["PendingAutomaticVerification"] = "pending_automatic_verification";
    AccountIdentityDocumentUploadVerificationStatusEnum["PendingManualVerification"] = "pending_manual_verification";
    AccountIdentityDocumentUploadVerificationStatusEnum["ManuallyVerified"] = "manually_verified";
    AccountIdentityDocumentUploadVerificationStatusEnum["VerificationExpired"] = "verification_expired";
    AccountIdentityDocumentUploadVerificationStatusEnum["VerificationFailed"] = "verification_failed";
    AccountIdentityDocumentUploadVerificationStatusEnum["DatabaseMatched"] = "database_matched";
    AccountIdentityDocumentUploadVerificationStatusEnum["DatabaseInsightsPass"] = "database_insights_pass";
    AccountIdentityDocumentUploadVerificationStatusEnum["DatabaseInsightsPassWithCaution"] = "database_insights_pass_with_caution";
    AccountIdentityDocumentUploadVerificationStatusEnum["DatabaseInsightsFail"] = "database_insights_fail";
})(AccountIdentityDocumentUploadVerificationStatusEnum = exports.AccountIdentityDocumentUploadVerificationStatusEnum || (exports.AccountIdentityDocumentUploadVerificationStatusEnum = {}));
/**
    * @export
    * @enum {string}
    */
var AccountIdentityMatchScoreVerificationStatusEnum;
(function (AccountIdentityMatchScoreVerificationStatusEnum) {
    AccountIdentityMatchScoreVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    AccountIdentityMatchScoreVerificationStatusEnum["PendingAutomaticVerification"] = "pending_automatic_verification";
    AccountIdentityMatchScoreVerificationStatusEnum["PendingManualVerification"] = "pending_manual_verification";
    AccountIdentityMatchScoreVerificationStatusEnum["ManuallyVerified"] = "manually_verified";
    AccountIdentityMatchScoreVerificationStatusEnum["VerificationExpired"] = "verification_expired";
    AccountIdentityMatchScoreVerificationStatusEnum["VerificationFailed"] = "verification_failed";
    AccountIdentityMatchScoreVerificationStatusEnum["DatabaseMatched"] = "database_matched";
    AccountIdentityMatchScoreVerificationStatusEnum["DatabaseInsightsPass"] = "database_insights_pass";
    AccountIdentityMatchScoreVerificationStatusEnum["DatabaseInsightsPassWithCaution"] = "database_insights_pass_with_caution";
    AccountIdentityMatchScoreVerificationStatusEnum["DatabaseInsightsFail"] = "database_insights_fail";
})(AccountIdentityMatchScoreVerificationStatusEnum = exports.AccountIdentityMatchScoreVerificationStatusEnum || (exports.AccountIdentityMatchScoreVerificationStatusEnum = {}));
/**
 * The application requires that accounts be limited to a specific cardinality. `MULTI_SELECT`: indicates that the user should be allowed to pick multiple accounts. `SINGLE_SELECT`: indicates that the user should be allowed to pick only a single account. `ALL`: indicates that the user must share all of their accounts and should not be given the opportunity to de-select
 * @export
 * @enum {string}
 */
var AccountSelectionCardinality;
(function (AccountSelectionCardinality) {
    AccountSelectionCardinality["SingleSelect"] = "SINGLE_SELECT";
    AccountSelectionCardinality["MultiSelect"] = "MULTI_SELECT";
    AccountSelectionCardinality["All"] = "ALL";
})(AccountSelectionCardinality = exports.AccountSelectionCardinality || (exports.AccountSelectionCardinality = {}));
/**
 * See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes.
 * @export
 * @enum {string}
 */
var AccountSubtype;
(function (AccountSubtype) {
    AccountSubtype["_401a"] = "401a";
    AccountSubtype["_401k"] = "401k";
    AccountSubtype["_403B"] = "403B";
    AccountSubtype["_457b"] = "457b";
    AccountSubtype["_529"] = "529";
    AccountSubtype["Auto"] = "auto";
    AccountSubtype["Brokerage"] = "brokerage";
    AccountSubtype["Business"] = "business";
    AccountSubtype["CashIsa"] = "cash isa";
    AccountSubtype["CashManagement"] = "cash management";
    AccountSubtype["Cd"] = "cd";
    AccountSubtype["Checking"] = "checking";
    AccountSubtype["Commercial"] = "commercial";
    AccountSubtype["Construction"] = "construction";
    AccountSubtype["Consumer"] = "consumer";
    AccountSubtype["CreditCard"] = "credit card";
    AccountSubtype["CryptoExchange"] = "crypto exchange";
    AccountSubtype["Ebt"] = "ebt";
    AccountSubtype["EducationSavingsAccount"] = "education savings account";
    AccountSubtype["FixedAnnuity"] = "fixed annuity";
    AccountSubtype["Gic"] = "gic";
    AccountSubtype["HealthReimbursementArrangement"] = "health reimbursement arrangement";
    AccountSubtype["HomeEquity"] = "home equity";
    AccountSubtype["Hsa"] = "hsa";
    AccountSubtype["Isa"] = "isa";
    AccountSubtype["Ira"] = "ira";
    AccountSubtype["Keogh"] = "keogh";
    AccountSubtype["Lif"] = "lif";
    AccountSubtype["LifeInsurance"] = "life insurance";
    AccountSubtype["LineOfCredit"] = "line of credit";
    AccountSubtype["Lira"] = "lira";
    AccountSubtype["Loan"] = "loan";
    AccountSubtype["Lrif"] = "lrif";
    AccountSubtype["Lrsp"] = "lrsp";
    AccountSubtype["MoneyMarket"] = "money market";
    AccountSubtype["Mortgage"] = "mortgage";
    AccountSubtype["MutualFund"] = "mutual fund";
    AccountSubtype["NonCustodialWallet"] = "non-custodial wallet";
    AccountSubtype["NonTaxableBrokerageAccount"] = "non-taxable brokerage account";
    AccountSubtype["Other"] = "other";
    AccountSubtype["OtherInsurance"] = "other insurance";
    AccountSubtype["OtherAnnuity"] = "other annuity";
    AccountSubtype["Overdraft"] = "overdraft";
    AccountSubtype["Paypal"] = "paypal";
    AccountSubtype["Payroll"] = "payroll";
    AccountSubtype["Pension"] = "pension";
    AccountSubtype["Prepaid"] = "prepaid";
    AccountSubtype["Prif"] = "prif";
    AccountSubtype["ProfitSharingPlan"] = "profit sharing plan";
    AccountSubtype["Rdsp"] = "rdsp";
    AccountSubtype["Resp"] = "resp";
    AccountSubtype["Retirement"] = "retirement";
    AccountSubtype["Rlif"] = "rlif";
    AccountSubtype["Roth"] = "roth";
    AccountSubtype["Roth401k"] = "roth 401k";
    AccountSubtype["Rrif"] = "rrif";
    AccountSubtype["Rrsp"] = "rrsp";
    AccountSubtype["Sarsep"] = "sarsep";
    AccountSubtype["Savings"] = "savings";
    AccountSubtype["SepIra"] = "sep ira";
    AccountSubtype["SimpleIra"] = "simple ira";
    AccountSubtype["Sipp"] = "sipp";
    AccountSubtype["StockPlan"] = "stock plan";
    AccountSubtype["Student"] = "student";
    AccountSubtype["ThriftSavingsPlan"] = "thrift savings plan";
    AccountSubtype["Tfsa"] = "tfsa";
    AccountSubtype["Trust"] = "trust";
    AccountSubtype["Ugma"] = "ugma";
    AccountSubtype["Utma"] = "utma";
    AccountSubtype["VariableAnnuity"] = "variable annuity";
})(AccountSubtype = exports.AccountSubtype || (exports.AccountSubtype = {}));
/**
 * `investment:` Investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage` instead.  `credit:` Credit card  `depository:` Depository account  `loan:` Loan account  `other:` Non-specified account type  See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
 * @export
 * @enum {string}
 */
var AccountType;
(function (AccountType) {
    AccountType["Investment"] = "investment";
    AccountType["Credit"] = "credit";
    AccountType["Depository"] = "depository";
    AccountType["Loan"] = "loan";
    AccountType["Brokerage"] = "brokerage";
    AccountType["Other"] = "other";
})(AccountType = exports.AccountType || (exports.AccountType = {}));
/**
 * Indicator of account number format validity for institution.  `valid`: indicates that the account number has a correct format for the institution.  `invalid`: indicates that the account number has an incorrect format for the institution.  `unknown`: indicates that there was not enough information to determine whether the format is correct for the institution.
 * @export
 * @enum {string}
 */
var AccountVerificationInsightsAccountNumberFormat;
(function (AccountVerificationInsightsAccountNumberFormat) {
    AccountVerificationInsightsAccountNumberFormat["Valid"] = "valid";
    AccountVerificationInsightsAccountNumberFormat["Invalid"] = "invalid";
    AccountVerificationInsightsAccountNumberFormat["Unknown"] = "unknown";
})(AccountVerificationInsightsAccountNumberFormat = exports.AccountVerificationInsightsAccountNumberFormat || (exports.AccountVerificationInsightsAccountNumberFormat = {}));
/**
 * Enum representing the state of the action/activity.
 * @export
 * @enum {string}
 */
var ActionState;
(function (ActionState) {
    ActionState["Unknown"] = "UNKNOWN";
    ActionState["Attempt"] = "ATTEMPT";
    ActionState["Success"] = "SUCCESS";
    ActionState["Failure"] = "FAILURE";
    ActionState["Skipped"] = "SKIPPED";
})(ActionState = exports.ActionState || (exports.ActionState = {}));
/**
 * Types of consent activities
 * @export
 * @enum {string}
 */
var ActivityType;
(function (ActivityType) {
    ActivityType["Unknown"] = "UNKNOWN";
    ActivityType["ItemCreate"] = "ITEM_CREATE";
    ActivityType["ItemImport"] = "ITEM_IMPORT";
    ActivityType["ItemUpdate"] = "ITEM_UPDATE";
    ActivityType["ItemUnlink"] = "ITEM_UNLINK";
    ActivityType["PortalUnlink"] = "PORTAL_UNLINK";
    ActivityType["PortalItemsDelete"] = "PORTAL_ITEMS_DELETE";
    ActivityType["ItemRemove"] = "ITEM_REMOVE";
    ActivityType["InvariantCheckerDeletion"] = "INVARIANT_CHECKER_DELETION";
    ActivityType["ScopesUpdate"] = "SCOPES_UPDATE";
})(ActivityType = exports.ActivityType || (exports.ActivityType = {}));
/**
 * Field describing whether the associated address is being used for commercial or residential purposes.  Note: This value will be `no_data` when Plaid does not have sufficient data to determine the address\'s use.
 * @export
 * @enum {string}
 */
var AddressPurposeLabel;
(function (AddressPurposeLabel) {
    AddressPurposeLabel["Residential"] = "residential";
    AddressPurposeLabel["Commercial"] = "commercial";
    AddressPurposeLabel["NoData"] = "no_data";
})(AddressPurposeLabel = exports.AddressPurposeLabel || (exports.AddressPurposeLabel = {}));
/**
 * A list of add-ons that should be included in the Asset Report.  `fast_assets`: When Fast Assets is requested, Plaid will create two versions of the Asset Report: the Fast Asset Report, which will contain only Identity and Balance information, and the Full Asset Report, which will also contain Transactions information. A `PRODUCT_READY` webhook will be fired for each Asset Report when it is ready, and the `report_type` field will indicate whether the webhook is firing for the `full` or `fast` Asset Report. To retrieve the Fast Asset Report, call `/asset_report/get` with `fast_report` set to `true`. There is no additional charge for using Fast Assets. To create a Fast Asset Report, Plaid must successfully retrieve both Identity and Balance data; if Plaid encounters an error obtaining this data, the Fast Asset Report will not be created. However, as long as Plaid can obtain Transactions data, the Full Asset Report will still be available.  `investments`: Request an Asset Report with Investments. This add-on is in closed beta and not generally available.
 * @export
 * @enum {string}
 */
var AssetReportAddOns;
(function (AssetReportAddOns) {
    AssetReportAddOns["Investments"] = "investments";
    AssetReportAddOns["FastAssets"] = "fast_assets";
})(AssetReportAddOns = exports.AssetReportAddOns || (exports.AssetReportAddOns = {}));
/**
 * `digital:` transactions that took place online.  `place:` transactions that were made at a physical location.  `special:` transactions that relate to banks, e.g. fees or deposits.  `unresolved:` transactions that do not fit into the other three types.
 * @export
 * @enum {string}
 */
var AssetReportTransactionType;
(function (AssetReportTransactionType) {
    AssetReportTransactionType["Digital"] = "digital";
    AssetReportTransactionType["Place"] = "place";
    AssetReportTransactionType["Special"] = "special";
    AssetReportTransactionType["Unresolved"] = "unresolved";
})(AssetReportTransactionType = exports.AssetReportTransactionType || (exports.AssetReportTransactionType = {}));
/**
 * Indicates either a Fast Asset Report, which will contain only current identity and balance information, or a Full Asset Report, which will also contain historical balance information and transaction data.
 * @export
 * @enum {string}
 */
var AssetReportType;
(function (AssetReportType) {
    AssetReportType["Full"] = "FULL";
    AssetReportType["Fast"] = "FAST";
})(AssetReportType = exports.AssetReportType || (exports.AssetReportType = {}));
/**
 * Asset Transaction Category Type Enumerated derived by Vendor.
 * @export
 * @enum {string}
 */
var AssetTransactionCategoryType;
(function (AssetTransactionCategoryType) {
    AssetTransactionCategoryType["AtmFee"] = "ATMFee";
    AssetTransactionCategoryType["Advertising"] = "Advertising";
    AssetTransactionCategoryType["AirTravel"] = "AirTravel";
    AssetTransactionCategoryType["AlcoholBars"] = "AlcoholBars";
    AssetTransactionCategoryType["Allowance"] = "Allowance";
    AssetTransactionCategoryType["Amusement"] = "Amusement";
    AssetTransactionCategoryType["Arts"] = "Arts";
    AssetTransactionCategoryType["AutoTransport"] = "AutoTransport";
    AssetTransactionCategoryType["AutoInsurance"] = "AutoInsurance";
    AssetTransactionCategoryType["AutoPayment"] = "AutoPayment";
    AssetTransactionCategoryType["BabySupplies"] = "BabySupplies";
    AssetTransactionCategoryType["BabysitterDaycare"] = "BabysitterDaycare";
    AssetTransactionCategoryType["BankFee"] = "BankFee";
    AssetTransactionCategoryType["BillsUtilities"] = "BillsUtilities";
    AssetTransactionCategoryType["Bonus"] = "Bonus";
    AssetTransactionCategoryType["BooksSupplies"] = "BooksSupplies";
    AssetTransactionCategoryType["BusinessServices"] = "Business Services";
    AssetTransactionCategoryType["Buy"] = "Buy";
    AssetTransactionCategoryType["CashAtm"] = "CashATM";
    AssetTransactionCategoryType["Charity"] = "Charity";
    AssetTransactionCategoryType["Check"] = "Check";
    AssetTransactionCategoryType["ChildSupport"] = "ChildSupport";
    AssetTransactionCategoryType["Clothing"] = "Clothing";
    AssetTransactionCategoryType["CoffeeShops"] = "CoffeeShops";
    AssetTransactionCategoryType["CreditCardPayment"] = "CreditCardPayment";
    AssetTransactionCategoryType["Dentist"] = "Dentist";
    AssetTransactionCategoryType["Doctor"] = "Doctor";
    AssetTransactionCategoryType["Education"] = "Education";
    AssetTransactionCategoryType["ElectronicsSoftware"] = "ElectronicsSoftware";
    AssetTransactionCategoryType["Entertainment"] = "Entertainment";
    AssetTransactionCategoryType["Eyecare"] = "Eyecare";
    AssetTransactionCategoryType["FastFood"] = "FastFood";
    AssetTransactionCategoryType["FederalTax"] = "FederalTax";
    AssetTransactionCategoryType["FeesCharges"] = "FeesCharges";
    AssetTransactionCategoryType["FinanceCharge"] = "FinanceCharge";
    AssetTransactionCategoryType["Financial"] = "Financial";
    AssetTransactionCategoryType["FinancialAdvisor"] = "FinancialAdvisor";
    AssetTransactionCategoryType["FoodDining"] = "FoodDining";
    AssetTransactionCategoryType["Furnishings"] = "Furnishings";
    AssetTransactionCategoryType["GasFuel"] = "GasFuel";
    AssetTransactionCategoryType["GiftsDonations"] = "GiftsDonations";
    AssetTransactionCategoryType["Groceries"] = "Groceries";
    AssetTransactionCategoryType["Gym"] = "Gym";
    AssetTransactionCategoryType["Hair"] = "Hair";
    AssetTransactionCategoryType["HealthFitness"] = "HealthFitness";
    AssetTransactionCategoryType["HealthInsurance"] = "HealthInsurance";
    AssetTransactionCategoryType["Hobbies"] = "Hobbies";
    AssetTransactionCategoryType["Home"] = "Home";
    AssetTransactionCategoryType["HomeImprovement"] = "HomeImprovement";
    AssetTransactionCategoryType["HomeInsurance"] = "HomeInsurance";
    AssetTransactionCategoryType["HomePhone"] = "HomePhone";
    AssetTransactionCategoryType["HomeServices"] = "HomeServices";
    AssetTransactionCategoryType["HomeSupplies"] = "HomeSupplies";
    AssetTransactionCategoryType["Hotel"] = "Hotel";
    AssetTransactionCategoryType["Income"] = "Income";
    AssetTransactionCategoryType["InterestIncome"] = "InterestIncome";
    AssetTransactionCategoryType["Internet"] = "Internet";
    AssetTransactionCategoryType["Investments"] = "Investments";
    AssetTransactionCategoryType["Kids"] = "Kids";
    AssetTransactionCategoryType["KidsActivities"] = "KidsActivities";
    AssetTransactionCategoryType["LateFee"] = "LateFee";
    AssetTransactionCategoryType["Laundry"] = "Laundry";
    AssetTransactionCategoryType["LawnGarden"] = "LawnGarden";
    AssetTransactionCategoryType["Legal"] = "Legal";
    AssetTransactionCategoryType["LifeInsurance"] = "LifeInsurance";
    AssetTransactionCategoryType["LoanInsurance"] = "LoanInsurance";
    AssetTransactionCategoryType["LoanPayment"] = "LoanPayment";
    AssetTransactionCategoryType["Loans"] = "Loans";
    AssetTransactionCategoryType["MobilePhone"] = "MobilePhone";
    AssetTransactionCategoryType["MortgageRent"] = "MortgageRent";
    AssetTransactionCategoryType["MoviesDvds"] = "MoviesDVDs";
    AssetTransactionCategoryType["Music"] = "Music";
    AssetTransactionCategoryType["NewspapersMagazines"] = "NewspapersMagazines";
    AssetTransactionCategoryType["OfficeSupplies"] = "OfficeSupplies";
    AssetTransactionCategoryType["Parking"] = "Parking";
    AssetTransactionCategoryType["Paycheck"] = "Paycheck";
    AssetTransactionCategoryType["PersonalCare"] = "PersonalCare";
    AssetTransactionCategoryType["PetFoodSupplies"] = "PetFoodSupplies";
    AssetTransactionCategoryType["PetGrooming"] = "PetGrooming";
    AssetTransactionCategoryType["Pets"] = "Pets";
    AssetTransactionCategoryType["Pharmacy"] = "Pharmacy";
    AssetTransactionCategoryType["Printing"] = "Printing";
    AssetTransactionCategoryType["PropertyTax"] = "Property Tax";
    AssetTransactionCategoryType["PublicTransportation"] = "Public Transportation";
    AssetTransactionCategoryType["Reimbursement"] = "Reimbursement";
    AssetTransactionCategoryType["RentalCarTaxi"] = "RentalCarTaxi";
    AssetTransactionCategoryType["Restaurants"] = "Restaurants";
    AssetTransactionCategoryType["SalesTax"] = "SalesTax";
    AssetTransactionCategoryType["ServiceParts"] = "ServiceParts";
    AssetTransactionCategoryType["ServiceFee"] = "ServiceFee";
    AssetTransactionCategoryType["Shipping"] = "Shipping";
    AssetTransactionCategoryType["Shopping"] = "Shopping";
    AssetTransactionCategoryType["SpaMassage"] = "SpaMassage";
    AssetTransactionCategoryType["SportingGoods"] = "SportingGoods";
    AssetTransactionCategoryType["Sports"] = "Sports";
    AssetTransactionCategoryType["StateTax"] = "StateTax";
    AssetTransactionCategoryType["StudentLoan"] = "Student Loan";
    AssetTransactionCategoryType["Taxes"] = "Taxes";
    AssetTransactionCategoryType["Television"] = "Television";
    AssetTransactionCategoryType["Toys"] = "Toys";
    AssetTransactionCategoryType["Transfer"] = "Transfer";
    AssetTransactionCategoryType["Travel"] = "Travel";
    AssetTransactionCategoryType["Tuition"] = "Tuition";
    AssetTransactionCategoryType["Uncategorized"] = "Uncategorized";
    AssetTransactionCategoryType["Utilities"] = "Utilities";
    AssetTransactionCategoryType["Vacation"] = "Vacation";
    AssetTransactionCategoryType["Veterinary"] = "Veterinary";
})(AssetTransactionCategoryType = exports.AssetTransactionCategoryType || (exports.AssetTransactionCategoryType = {}));
/**
 * Asset Transaction Type.
 * @export
 * @enum {string}
 */
var AssetTransactionType;
(function (AssetTransactionType) {
    AssetTransactionType["Credit"] = "Credit";
    AssetTransactionType["Debit"] = "Debit";
})(AssetTransactionType = exports.AssetTransactionType || (exports.AssetTransactionType = {}));
/**
 * A value from a MISMO prescribed list that specifies financial assets in a mortgage loan transaction. Assets may be either liquid or fixed and are associated with a corresponding asset amount.
 * @export
 * @enum {string}
 */
var AssetType;
(function (AssetType) {
    AssetType["CheckingAccount"] = "CheckingAccount";
    AssetType["SavingsAccount"] = "SavingsAccount";
    AssetType["Investment"] = "Investment";
    AssetType["MoneyMarketFund"] = "MoneyMarketFund";
    AssetType["Other"] = "Other";
})(AssetType = exports.AssetType || (exports.AssetType = {}));
/**
 * The possible types of auth data that may have changed.
 * @export
 * @enum {string}
 */
var AuthUpdateTypes;
(function (AuthUpdateTypes) {
    AuthUpdateTypes["AccountNumber"] = "ACCOUNT_NUMBER";
    AuthUpdateTypes["RoutingNumber"] = "ROUTING_NUMBER";
})(AuthUpdateTypes = exports.AuthUpdateTypes || (exports.AuthUpdateTypes = {}));
/**
 * A five-tier risk assessment for the transaction, based on the probability distribution of ACH returns, measured by the incident rate.   Each tier corresponds to a distribution with a different mean (average) probability.   `HIGH`: The mean probability of ACH return risk is above 40%. `MEDIUM_HIGH`: The mean probability of ACH return risk is 15%-40%.  `MEDIUM`: The mean probability of ACH return risk is 5-10%. `MEDIUM_LOW`: The mean probability of ACH return risk is 1%-2%. `LOW`: The mean probability of ACH return risk is below 1%.   Note that these tiers correspond to probability *distributions* and not to discrete probabilities.   These tier definitions are specific to Balance Plus and do not apply to risk tiers generated by other Plaid endpoints.
 * @export
 * @enum {string}
 */
var BalancePlusRiskLevel;
(function (BalancePlusRiskLevel) {
    BalancePlusRiskLevel["High"] = "HIGH";
    BalancePlusRiskLevel["MediumHigh"] = "MEDIUM_HIGH";
    BalancePlusRiskLevel["Medium"] = "MEDIUM";
    BalancePlusRiskLevel["MediumLow"] = "MEDIUM_LOW";
    BalancePlusRiskLevel["Low"] = "LOW";
})(BalancePlusRiskLevel = exports.BalancePlusRiskLevel || (exports.BalancePlusRiskLevel = {}));
/**
 * The result of the bank income report generation  `SUCCESS`: The bank income report was successfully generated and can be retrieved via `/credit/bank_income/get`.  `FAILURE`: The bank income report failed to be generated
 * @export
 * @enum {string}
 */
var BankIncomeCompleteResult;
(function (BankIncomeCompleteResult) {
    BankIncomeCompleteResult["Success"] = "SUCCESS";
    BankIncomeCompleteResult["Failure"] = "FAILURE";
})(BankIncomeCompleteResult = exports.BankIncomeCompleteResult || (exports.BankIncomeCompleteResult = {}));
/**
 * The result of the bank income refresh report generation  `SUCCESS`: The refreshed report was successfully generated and can be retrieved via `/credit/bank_income/get`.  `FAILURE`: The refreshed report failed to be generated
 * @export
 * @enum {string}
 */
var BankIncomeRefreshCompleteResult;
(function (BankIncomeRefreshCompleteResult) {
    BankIncomeRefreshCompleteResult["Success"] = "SUCCESS";
    BankIncomeRefreshCompleteResult["Failure"] = "FAILURE";
})(BankIncomeRefreshCompleteResult = exports.BankIncomeRefreshCompleteResult || (exports.BankIncomeRefreshCompleteResult = {}));
/**
 * Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received by the FBO account.
 * @export
 * @enum {string}
 */
var BankTransferDirection;
(function (BankTransferDirection) {
    BankTransferDirection["Outbound"] = "outbound";
    BankTransferDirection["Inbound"] = "inbound";
    BankTransferDirection["Null"] = "null";
})(BankTransferDirection = exports.BankTransferDirection || (exports.BankTransferDirection = {}));
/**
 * The type of bank transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
 * @export
 * @enum {string}
 */
var BankTransferEventListBankTransferType;
(function (BankTransferEventListBankTransferType) {
    BankTransferEventListBankTransferType["Debit"] = "debit";
    BankTransferEventListBankTransferType["Credit"] = "credit";
    BankTransferEventListBankTransferType["Null"] = "null";
})(BankTransferEventListBankTransferType = exports.BankTransferEventListBankTransferType || (exports.BankTransferEventListBankTransferType = {}));
/**
 * Indicates the direction of the transfer: `outbound`: for API-initiated transfers `inbound`: for payments received by the FBO account.
 * @export
 * @enum {string}
 */
var BankTransferEventListDirection;
(function (BankTransferEventListDirection) {
    BankTransferEventListDirection["Inbound"] = "inbound";
    BankTransferEventListDirection["Outbound"] = "outbound";
    BankTransferEventListDirection["Null"] = "null";
})(BankTransferEventListDirection = exports.BankTransferEventListDirection || (exports.BankTransferEventListDirection = {}));
/**
 * The type of event that this bank transfer represents.  `pending`: A new transfer was created; it is in the pending state.  `cancelled`: The transfer was cancelled by the client.  `failed`: The transfer failed, no funds were moved.  `posted`: The transfer has been successfully submitted to the payment network.  `reversed`: A posted transfer was reversed.
 * @export
 * @enum {string}
 */
var BankTransferEventType;
(function (BankTransferEventType) {
    BankTransferEventType["Pending"] = "pending";
    BankTransferEventType["Cancelled"] = "cancelled";
    BankTransferEventType["Failed"] = "failed";
    BankTransferEventType["Posted"] = "posted";
    BankTransferEventType["Reversed"] = "reversed";
})(BankTransferEventType = exports.BankTransferEventType || (exports.BankTransferEventType = {}));
/**
 * The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`.
 * @export
 * @enum {string}
 */
var BankTransferNetwork;
(function (BankTransferNetwork) {
    BankTransferNetwork["Ach"] = "ach";
    BankTransferNetwork["SameDayAch"] = "same-day-ach";
    BankTransferNetwork["Wire"] = "wire";
})(BankTransferNetwork = exports.BankTransferNetwork || (exports.BankTransferNetwork = {}));
/**
 * The status of the transfer.
 * @export
 * @enum {string}
 */
var BankTransferStatus;
(function (BankTransferStatus) {
    BankTransferStatus["Pending"] = "pending";
    BankTransferStatus["Posted"] = "posted";
    BankTransferStatus["Cancelled"] = "cancelled";
    BankTransferStatus["Failed"] = "failed";
    BankTransferStatus["Reversed"] = "reversed";
})(BankTransferStatus = exports.BankTransferStatus || (exports.BankTransferStatus = {}));
/**
 * The type of bank transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
 * @export
 * @enum {string}
 */
var BankTransferType;
(function (BankTransferType) {
    BankTransferType["Debit"] = "debit";
    BankTransferType["Credit"] = "credit";
})(BankTransferType = exports.BankTransferType || (exports.BankTransferType = {}));
/**
 * `digital:` transactions that took place online.  `place:` transactions that were made at a physical location.  `special:` transactions that relate to banks, e.g. fees or deposits.  `unresolved:` transactions that do not fit into the other types.
 * @export
 * @enum {string}
 */
var BaseReportTransactionType;
(function (BaseReportTransactionType) {
    BaseReportTransactionType["Digital"] = "digital";
    BaseReportTransactionType["Place"] = "place";
    BaseReportTransactionType["Special"] = "special";
    BaseReportTransactionType["Unresolved"] = "unresolved";
})(BaseReportTransactionType = exports.BaseReportTransactionType || (exports.BaseReportTransactionType = {}));
/**
 * The warning code identifies a specific kind of warning. `OWNERS_UNAVAILABLE` indicates that account-owner information is not available. `TRANSACTIONS_UNAVAILABLE` indicates that transactions information associated with Credit and Depository accounts are unavailable. `USER_FRAUD_ALERT` indicates that the User has placed a fraud alert on their Plaid Check consumer report due to suspected fraud.
 * @export
 * @enum {string}
 */
var BaseReportWarningCode;
(function (BaseReportWarningCode) {
    BaseReportWarningCode["OwnersUnavailable"] = "OWNERS_UNAVAILABLE";
    BaseReportWarningCode["TransactionsUnavailable"] = "TRANSACTIONS_UNAVAILABLE";
    BaseReportWarningCode["UserFraudAlert"] = "USER_FRAUD_ALERT";
})(BaseReportWarningCode = exports.BaseReportWarningCode || (exports.BaseReportWarningCode = {}));
/**
 * Description of the reason you want to evaluate risk. `ONBOARDING`: user links a first bank account as part of the onboarding flow of your platform. `NEW_ACCOUNT`: user links another bank account or replaces the currently linked bank account on your platform. `INFORMATION_CHANGE`: user changes their information on your platform, e.g., updating their phone number. `DORMANT_USER`:  you decide to re-evaluate a user that becomes active after a period of inactivity.   `OTHER`: any other reasons not listed here Possible values:  `ONBOARDING`, `NEW_ACCOUNT`, `INFORMATION_CHANGE`, `DORMANT_USER`, `OTHER`
 * @export
 * @enum {string}
 */
var BeaconAccountRiskEvaluateEvaluationReason;
(function (BeaconAccountRiskEvaluateEvaluationReason) {
    BeaconAccountRiskEvaluateEvaluationReason["Onboarding"] = "ONBOARDING";
    BeaconAccountRiskEvaluateEvaluationReason["NewAccount"] = "NEW_ACCOUNT";
    BeaconAccountRiskEvaluateEvaluationReason["InformationChange"] = "INFORMATION_CHANGE";
    BeaconAccountRiskEvaluateEvaluationReason["DormantUser"] = "DORMANT_USER";
    BeaconAccountRiskEvaluateEvaluationReason["Other"] = "OTHER";
})(BeaconAccountRiskEvaluateEvaluationReason = exports.BeaconAccountRiskEvaluateEvaluationReason || (exports.BeaconAccountRiskEvaluateEvaluationReason = {}));
/**
 * A type indicating what caused a resource to be changed or updated.   `dashboard` - The resource was created or updated by a member of your team via the Plaid dashboard.  `api` - The resource was created or updated via the Plaid API.  `system` - The resource was created or updated automatically by a part of the Plaid Beacon system. For example, if another business using Plaid Beacon created a fraud report that matched one of your users, your matching user\'s status would automatically be updated and the audit trail source would be `system`.  `bulk_import` - The resource was created or updated as part of a bulk import process. For example, if your company provided a CSV of user data as part of your initial onboarding, the audit trail source would be `bulk_import`.
 * @export
 * @enum {string}
 */
var BeaconAuditTrailSource;
(function (BeaconAuditTrailSource) {
    BeaconAuditTrailSource["Dashboard"] = "dashboard";
    BeaconAuditTrailSource["Api"] = "api";
    BeaconAuditTrailSource["System"] = "system";
    BeaconAuditTrailSource["BulkImport"] = "bulk_import";
})(BeaconAuditTrailSource = exports.BeaconAuditTrailSource || (exports.BeaconAuditTrailSource = {}));
/**
 * An enum indicating the match type between two Beacon Users.   `match` indicates that the provided input data was a strong match against the other Beacon User.  `partial_match` indicates the data approximately matched the other Beacon User. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.  `no_match` indicates that Plaid was able to compare this field against the other Beacon User and it did not match the provided input data.  `no_data` indicates that Plaid was unable to compare this field against the original Beacon User because the field was not present in one of the Beacon Users.
 * @export
 * @enum {string}
 */
var BeaconMatchSummaryCode;
(function (BeaconMatchSummaryCode) {
    BeaconMatchSummaryCode["Match"] = "match";
    BeaconMatchSummaryCode["PartialMatch"] = "partial_match";
    BeaconMatchSummaryCode["NoMatch"] = "no_match";
    BeaconMatchSummaryCode["NoData"] = "no_data";
})(BeaconMatchSummaryCode = exports.BeaconMatchSummaryCode || (exports.BeaconMatchSummaryCode = {}));
/**
 * The type of Beacon Report.  `first_party`: If this is the same individual as the one who submitted the KYC.  `stolen`: If this is a different individual from the one who submitted the KYC.  `synthetic`: If this is an individual using fabricated information.  `account_takeover`: If this individual\'s account was compromised.  `unknown`: If you aren\'t sure who committed the fraud.
 * @export
 * @enum {string}
 */
var BeaconReportCreateType;
(function (BeaconReportCreateType) {
    BeaconReportCreateType["FirstParty"] = "first_party";
    BeaconReportCreateType["Stolen"] = "stolen";
    BeaconReportCreateType["Synthetic"] = "synthetic";
    BeaconReportCreateType["AccountTakeover"] = "account_takeover";
    BeaconReportCreateType["DataBreach"] = "data_breach";
    BeaconReportCreateType["Unknown"] = "unknown";
})(BeaconReportCreateType = exports.BeaconReportCreateType || (exports.BeaconReportCreateType = {}));
/**
 * The type of Beacon Report.  `first_party`: If this is the same individual as the one who submitted the KYC.  `stolen`: If this is a different individual from the one who submitted the KYC.  `synthetic`: If this is an individual using fabricated information.  `account_takeover`: If this individual\'s account was compromised.  `data_breach`: If this individual\'s data was compromised in a breach.  `unknown`: If you aren\'t sure who committed the fraud.
 * @export
 * @enum {string}
 */
var BeaconReportType;
(function (BeaconReportType) {
    BeaconReportType["FirstParty"] = "first_party";
    BeaconReportType["Stolen"] = "stolen";
    BeaconReportType["Synthetic"] = "synthetic";
    BeaconReportType["AccountTakeover"] = "account_takeover";
    BeaconReportType["DataBreach"] = "data_breach";
    BeaconReportType["Unknown"] = "unknown";
})(BeaconReportType = exports.BeaconReportType || (exports.BeaconReportType = {}));
/**
 * A status of a Beacon User.  `rejected`: The Beacon User has been rejected for fraud. Users can be automatically or manually rejected.  `pending_review`: The Beacon User has been marked for review.  `cleared`: The Beacon User has been cleared of fraud.
 * @export
 * @enum {string}
 */
var BeaconUserStatus;
(function (BeaconUserStatus) {
    BeaconUserStatus["Rejected"] = "rejected";
    BeaconUserStatus["PendingReview"] = "pending_review";
    BeaconUserStatus["Cleared"] = "cleared";
})(BeaconUserStatus = exports.BeaconUserStatus || (exports.BeaconUserStatus = {}));
/**
 * The versions of cashflow attributes
 * @export
 * @enum {string}
 */
var CashflowAttributesVersion;
(function (CashflowAttributesVersion) {
    CashflowAttributesVersion["V10"] = "v1.0";
})(CashflowAttributesVersion = exports.CashflowAttributesVersion || (exports.CashflowAttributesVersion = {}));
/**
 * Codes describing the object of a consent event.
 * @export
 * @enum {string}
 */
var ConsentEventCode;
(function (ConsentEventCode) {
    ConsentEventCode["UserAgreement"] = "USER_AGREEMENT";
    ConsentEventCode["UseCases"] = "USE_CASES";
    ConsentEventCode["DataScopes"] = "DATA_SCOPES";
    ConsentEventCode["AccountScopes"] = "ACCOUNT_SCOPES";
})(ConsentEventCode = exports.ConsentEventCode || (exports.ConsentEventCode = {}));
/**
 * The entity that initiated collection of consent.
 * @export
 * @enum {string}
 */
var ConsentEventInitiator;
(function (ConsentEventInitiator) {
    ConsentEventInitiator["Plaid"] = "PLAID";
    ConsentEventInitiator["DataProvider"] = "DATA_PROVIDER";
    ConsentEventInitiator["Customer"] = "CUSTOMER";
    ConsentEventInitiator["EndUser"] = "END_USER";
})(ConsentEventInitiator = exports.ConsentEventInitiator || (exports.ConsentEventInitiator = {}));
/**
 * A broad categorization of the consent event.
 * @export
 * @enum {string}
 */
var ConsentEventType;
(function (ConsentEventType) {
    ConsentEventType["Granted"] = "CONSENT_GRANTED";
    ConsentEventType["Revoked"] = "CONSENT_REVOKED";
    ConsentEventType["Updated"] = "CONSENT_UPDATED";
})(ConsentEventType = exports.ConsentEventType || (exports.ConsentEventType = {}));
/**
 * Type of data being disputed by the consumer
 * @export
 * @enum {string}
 */
var ConsumerDisputeCategory;
(function (ConsumerDisputeCategory) {
    ConsumerDisputeCategory["Transaction"] = "TRANSACTION";
    ConsumerDisputeCategory["Balance"] = "BALANCE";
    ConsumerDisputeCategory["Identity"] = "IDENTITY";
    ConsumerDisputeCategory["Other"] = "OTHER";
})(ConsumerDisputeCategory = exports.ConsumerDisputeCategory || (exports.ConsumerDisputeCategory = {}));
/**
 * Describes the reason you are generating a Consumer Report for this user.   `ACCOUNT_REVIEW_CREDIT`: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A).  `ACCOUNT_REVIEW_NON_CREDIT`: For a legitimate business need of the information to review a non-credit account provided primarily for personal, family, or household purposes to determine whether the consumer continues to meet the terms of the account pursuant to FCRA Section 604(a)(3)(F)(2).  `EMPLOYMENT`: For employment purposes pursuant to FCRA 604(a)(3)(B), including hiring, retention and promotion purposes.  `EXTENSION_OF_CREDIT`: In connection with a credit transaction initiated by and involving the consumer pursuant to FCRA Section 604(a)(3)(A).  `LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING`: For a legitimate business need in connection with a business transaction initiated by the consumer primarily for personal, family, or household purposes in connection with a property rental assessment pursuant to FCRA Section 604(a)(3)(F)(i).  `LEGITIMATE_BUSINESS_NEED_OTHER`: For a legitimate business need in connection with a business transaction made primarily for personal, family, or household initiated by the consumer pursuant to FCRA Section 604(a)(3)(F)(i).  `WRITTEN_INSTRUCTION_PREQUALIFICATION`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application’s profile to make an offer to the consumer.  `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan.
 * @export
 * @enum {string}
 */
var ConsumerReportPermissiblePurpose;
(function (ConsumerReportPermissiblePurpose) {
    ConsumerReportPermissiblePurpose["AccountReviewCredit"] = "ACCOUNT_REVIEW_CREDIT";
    ConsumerReportPermissiblePurpose["AccountReviewNonCredit"] = "ACCOUNT_REVIEW_NON_CREDIT";
    ConsumerReportPermissiblePurpose["Employment"] = "EMPLOYMENT";
    ConsumerReportPermissiblePurpose["ExtensionOfCredit"] = "EXTENSION_OF_CREDIT";
    ConsumerReportPermissiblePurpose["LegitimateBusinessNeedTenantScreening"] = "LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING";
    ConsumerReportPermissiblePurpose["LegitimateBusinessNeedOther"] = "LEGITIMATE_BUSINESS_NEED_OTHER";
    ConsumerReportPermissiblePurpose["WrittenInstructionPrequalification"] = "WRITTEN_INSTRUCTION_PREQUALIFICATION";
    ConsumerReportPermissiblePurpose["WrittenInstructionOther"] = "WRITTEN_INSTRUCTION_OTHER";
})(ConsumerReportPermissiblePurpose = exports.ConsumerReportPermissiblePurpose || (exports.ConsumerReportPermissiblePurpose = {}));
/**
 * The counterparty type.  `merchant`: a provider of goods or services for purchase `financial_institution`: a financial entity (bank, credit union, BNPL, fintech) `payment_app`: a transfer or P2P app (e.g. Zelle) `marketplace`: a marketplace (e.g DoorDash, Google Play Store) `payment_terminal`: a point-of-sale payment terminal (e.g Square, Toast) `income_source`: the payer in an income transaction (e.g., an employer, client, or government agency)
 * @export
 * @enum {string}
 */
var CounterpartyType;
(function (CounterpartyType) {
    CounterpartyType["Merchant"] = "merchant";
    CounterpartyType["FinancialInstitution"] = "financial_institution";
    CounterpartyType["PaymentApp"] = "payment_app";
    CounterpartyType["Marketplace"] = "marketplace";
    CounterpartyType["PaymentTerminal"] = "payment_terminal";
    CounterpartyType["IncomeSource"] = "income_source";
})(CounterpartyType = exports.CounterpartyType || (exports.CounterpartyType = {}));
/**
 * ISO-3166-1 alpha-2 country code standard.
 * @export
 * @enum {string}
 */
var CountryCode;
(function (CountryCode) {
    CountryCode["Us"] = "US";
    CountryCode["Gb"] = "GB";
    CountryCode["Es"] = "ES";
    CountryCode["Nl"] = "NL";
    CountryCode["Fr"] = "FR";
    CountryCode["Ie"] = "IE";
    CountryCode["Ca"] = "CA";
    CountryCode["De"] = "DE";
    CountryCode["It"] = "IT";
    CountryCode["Pl"] = "PL";
    CountryCode["Dk"] = "DK";
    CountryCode["No"] = "NO";
    CountryCode["Se"] = "SE";
    CountryCode["Ee"] = "EE";
    CountryCode["Lt"] = "LT";
    CountryCode["Lv"] = "LV";
    CountryCode["Pt"] = "PT";
    CountryCode["Be"] = "BE";
})(CountryCode = exports.CountryCode || (exports.CountryCode = {}));
/**
 * The type of bonus that this transaction represents, if it is a bonus. `BONUS_INCLUDED`: Bonus is included in this transaction along with the normal pay `BONUS_ONLY`: This transaction is a standalone bonus
 * @export
 * @enum {string}
 */
var CraBankIncomeBonusType;
(function (CraBankIncomeBonusType) {
    CraBankIncomeBonusType["BonusIncluded"] = "BONUS_INCLUDED";
    CraBankIncomeBonusType["BonusOnly"] = "BONUS_ONLY";
    CraBankIncomeBonusType["Null"] = "null";
})(CraBankIncomeBonusType = exports.CraBankIncomeBonusType || (exports.CraBankIncomeBonusType = {}));
/**
 * The result of the bank income report generation  `SUCCESS`: The bank income report was successfully generated and can be retrieved via `/cra/bank_income/get`.  `FAILURE`: The bank income report failed to be generated
 * @export
 * @enum {string}
 */
var CraBankIncomeCompleteResult;
(function (CraBankIncomeCompleteResult) {
    CraBankIncomeCompleteResult["Success"] = "SUCCESS";
    CraBankIncomeCompleteResult["Failure"] = "FAILURE";
})(CraBankIncomeCompleteResult = exports.CraBankIncomeCompleteResult || (exports.CraBankIncomeCompleteResult = {}));
/**
 * The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item `TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item `REPORT_DELETED`: Report deleted due to customer or consumer request `DATA_UNAVAILABLE`: No relevant data was found for the Item
 * @export
 * @enum {string}
 */
var CraBankIncomeWarningCode;
(function (CraBankIncomeWarningCode) {
    CraBankIncomeWarningCode["IdentityUnavailable"] = "IDENTITY_UNAVAILABLE";
    CraBankIncomeWarningCode["TransactionsUnavailable"] = "TRANSACTIONS_UNAVAILABLE";
    CraBankIncomeWarningCode["ReportDeleted"] = "REPORT_DELETED";
    CraBankIncomeWarningCode["DataUnavailable"] = "DATA_UNAVAILABLE";
})(CraBankIncomeWarningCode = exports.CraBankIncomeWarningCode || (exports.CraBankIncomeWarningCode = {}));
/**
 * The decision of the loan application.
 * @export
 * @enum {string}
 */
var CraLoanApplicationDecision;
(function (CraLoanApplicationDecision) {
    CraLoanApplicationDecision["Approved"] = "APPROVED";
    CraLoanApplicationDecision["Declined"] = "DECLINED";
    CraLoanApplicationDecision["Other"] = "OTHER";
})(CraLoanApplicationDecision = exports.CraLoanApplicationDecision || (exports.CraLoanApplicationDecision = {}));
/**
 * The frequency of a loan\'s payment schedule. `BIWEEKLY` represents one payment every two weeks.
 * @export
 * @enum {string}
 */
var CraLoanPaymentSchedule;
(function (CraLoanPaymentSchedule) {
    CraLoanPaymentSchedule["Daily"] = "DAILY";
    CraLoanPaymentSchedule["Weekly"] = "WEEKLY";
    CraLoanPaymentSchedule["Biweekly"] = "BIWEEKLY";
    CraLoanPaymentSchedule["Monthly"] = "MONTHLY";
    CraLoanPaymentSchedule["Quarterly"] = "QUARTERLY";
    CraLoanPaymentSchedule["Annually"] = "ANNUALLY";
    CraLoanPaymentSchedule["Other"] = "OTHER";
})(CraLoanPaymentSchedule = exports.CraLoanPaymentSchedule || (exports.CraLoanPaymentSchedule = {}));
/**
 * The status of the loan.
 * @export
 * @enum {string}
 */
var CraLoanStatus;
(function (CraLoanStatus) {
    CraLoanStatus["Approved"] = "APPROVED";
    CraLoanStatus["Declined"] = "DECLINED";
    CraLoanStatus["Booked"] = "BOOKED";
    CraLoanStatus["Current"] = "CURRENT";
    CraLoanStatus["Delinquent"] = "DELINQUENT";
    CraLoanStatus["Default"] = "DEFAULT";
    CraLoanStatus["ChargedOff"] = "CHARGED_OFF";
    CraLoanStatus["Transferred"] = "TRANSFERRED";
    CraLoanStatus["PaidOff"] = "PAID_OFF";
    CraLoanStatus["Other"] = "OTHER";
})(CraLoanStatus = exports.CraLoanStatus || (exports.CraLoanStatus = {}));
/**
 * The type of loan the user applied for.
 * @export
 * @enum {string}
 */
var CraLoanType;
(function (CraLoanType) {
    CraLoanType["Personal"] = "PERSONAL";
    CraLoanType["CreditCard"] = "CREDIT_CARD";
    CraLoanType["Business"] = "BUSINESS";
    CraLoanType["Mortgage"] = "MORTGAGE";
    CraLoanType["Auto"] = "AUTO";
    CraLoanType["Payday"] = "PAYDAY";
    CraLoanType["Student"] = "STUDENT";
    CraLoanType["HomeEquity"] = "HOME_EQUITY";
    CraLoanType["Other"] = "OTHER";
})(CraLoanType = exports.CraLoanType || (exports.CraLoanType = {}));
/**
 * A list of add-ons that can be included in the PDF.  `cra_income_insights`: Include Income Insights report in the PDF.
 * @export
 * @enum {string}
 */
var CraPDFAddOns;
(function (CraPDFAddOns) {
    CraPDFAddOns["CraIncomeInsights"] = "cra_income_insights";
})(CraPDFAddOns = exports.CraPDFAddOns || (exports.CraPDFAddOns = {}));
/**
 * Specifies the use case of the transfer. Required for transfers on an ACH network.  `\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts  `\"ppd\"` - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, eg. bill payment  `\"web\"` - A credit Entry initiated by or on behalf of a holder of a Consumer Account that is intended for a Consumer Account of a Receiver
 * @export
 * @enum {string}
 */
var CreditACHClass;
(function (CreditACHClass) {
    CreditACHClass["Ccd"] = "ccd";
    CreditACHClass["Ppd"] = "ppd";
    CreditACHClass["Web"] = "web";
})(CreditACHClass = exports.CreditACHClass || (exports.CreditACHClass = {}));
/**
 * Valid account subtypes for credit accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-credit).
 * @export
 * @enum {string}
 */
var CreditAccountSubtype;
(function (CreditAccountSubtype) {
    CreditAccountSubtype["CreditCard"] = "credit card";
    CreditAccountSubtype["Paypal"] = "paypal";
    CreditAccountSubtype["All"] = "all";
})(CreditAccountSubtype = exports.CreditAccountSubtype || (exports.CreditAccountSubtype = {}));
/**
 * The warning type which will always be `BANK_EMPLOYMENT_WARNING`.
 * @export
 * @enum {string}
 */
var CreditBankEmploymentWarningType;
(function (CreditBankEmploymentWarningType) {
    CreditBankEmploymentWarningType["BankEmploymentWarning"] = "BANK_EMPLOYMENT_WARNING";
})(CreditBankEmploymentWarningType = exports.CreditBankEmploymentWarningType || (exports.CreditBankEmploymentWarningType = {}));
/**
 * The account type. This will always be `depository`.
 * @export
 * @enum {string}
 */
var CreditBankIncomeAccountType;
(function (CreditBankIncomeAccountType) {
    CreditBankIncomeAccountType["Depository"] = "depository";
})(CreditBankIncomeAccountType = exports.CreditBankIncomeAccountType || (exports.CreditBankIncomeAccountType = {}));
/**
 * The income category.  `BANK_INTEREST`: Interest earned from a bank account. `BENEFIT_OTHER`: Government benefits other than retirement, unemployment, child support, or disability. Currently used only in the UK, to represent benefits such as Cost of Living Payments. `CASH`: Deprecated and used only for existing legacy implementations. Has been replaced by `CASH_DEPOSIT` and `TRANSFER_FROM_APPLICATION`. `CASH_DEPOSIT`: A cash or check deposit. `CHILD_SUPPORT`: Child support payments received. `GIG_ECONOMY`: Income earned as a gig economy worker, e.g. driving for Uber, Lyft, Postmates, DoorDash, etc. `LONG_TERM_DISABILITY`: Disability payments, including Social Security disability benefits. `OTHER`: Income that could not be categorized as any other income category. `MILITARY`: Veterans benefits. Income earned as salary for serving in the military (e.g. through DFAS) will be classified as `SALARY` rather than `MILITARY`.  `RENTAL`: Income earned from a rental property. Income may be identified as rental when the payment is received through a rental platform, e.g. Airbnb; rent paid directly by the tenant to the property owner (e.g. via cash, check, or ACH) will typically not be classified as rental income.  `RETIREMENT`: Payments from private retirement systems, pensions, and government retirement programs, including Social Security retirement benefits. `SALARY`: Payment from an employer to an earner or other form of permanent employment. `TAX_REFUND`: A tax refund. `TRANSFER_FROM_APPLICATION`: Deposits from a money transfer app, such as Venmo, Cash App, or Zelle. `UNEMPLOYMENT`: Unemployment benefits. In the UK, includes certain low-income benefits such as the Universal Credit.
 * @export
 * @enum {string}
 */
var CreditBankIncomeCategory;
(function (CreditBankIncomeCategory) {
    CreditBankIncomeCategory["Salary"] = "SALARY";
    CreditBankIncomeCategory["Unemployment"] = "UNEMPLOYMENT";
    CreditBankIncomeCategory["Cash"] = "CASH";
    CreditBankIncomeCategory["GigEconomy"] = "GIG_ECONOMY";
    CreditBankIncomeCategory["Rental"] = "RENTAL";
    CreditBankIncomeCategory["ChildSupport"] = "CHILD_SUPPORT";
    CreditBankIncomeCategory["Military"] = "MILITARY";
    CreditBankIncomeCategory["Retirement"] = "RETIREMENT";
    CreditBankIncomeCategory["LongTermDisability"] = "LONG_TERM_DISABILITY";
    CreditBankIncomeCategory["BankInterest"] = "BANK_INTEREST";
    CreditBankIncomeCategory["CashDeposit"] = "CASH_DEPOSIT";
    CreditBankIncomeCategory["TransferFromApplication"] = "TRANSFER_FROM_APPLICATION";
    CreditBankIncomeCategory["TaxRefund"] = "TAX_REFUND";
    CreditBankIncomeCategory["BenefitOther"] = "BENEFIT_OTHER";
    CreditBankIncomeCategory["Other"] = "OTHER";
})(CreditBankIncomeCategory = exports.CreditBankIncomeCategory || (exports.CreditBankIncomeCategory = {}));
/**
 * A broad categorization of the error. Safe for programmatic use.
 * @export
 * @enum {string}
 */
var CreditBankIncomeErrorType;
(function (CreditBankIncomeErrorType) {
    CreditBankIncomeErrorType["InternalServerError"] = "INTERNAL_SERVER_ERROR";
    CreditBankIncomeErrorType["InsufficientCredentials"] = "INSUFFICIENT_CREDENTIALS";
    CreditBankIncomeErrorType["ItemLocked"] = "ITEM_LOCKED";
    CreditBankIncomeErrorType["UserSetupRequired"] = "USER_SETUP_REQUIRED";
    CreditBankIncomeErrorType["CountryNotSupported"] = "COUNTRY_NOT_SUPPORTED";
    CreditBankIncomeErrorType["InstitutionDown"] = "INSTITUTION_DOWN";
    CreditBankIncomeErrorType["InstitutionNoLongerSupported"] = "INSTITUTION_NO_LONGER_SUPPORTED";
    CreditBankIncomeErrorType["InstitutionNotResponding"] = "INSTITUTION_NOT_RESPONDING";
    CreditBankIncomeErrorType["InvalidCredentials"] = "INVALID_CREDENTIALS";
    CreditBankIncomeErrorType["InvalidMfa"] = "INVALID_MFA";
    CreditBankIncomeErrorType["InvalidSendMethod"] = "INVALID_SEND_METHOD";
    CreditBankIncomeErrorType["ItemLoginRequired"] = "ITEM_LOGIN_REQUIRED";
    CreditBankIncomeErrorType["MfaNotSupported"] = "MFA_NOT_SUPPORTED";
    CreditBankIncomeErrorType["NoAccounts"] = "NO_ACCOUNTS";
    CreditBankIncomeErrorType["ItemNotSupported"] = "ITEM_NOT_SUPPORTED";
    CreditBankIncomeErrorType["AccessNotGranted"] = "ACCESS_NOT_GRANTED";
})(CreditBankIncomeErrorType = exports.CreditBankIncomeErrorType || (exports.CreditBankIncomeErrorType = {}));
/**
 * The income pay frequency.
 * @export
 * @enum {string}
 */
var CreditBankIncomePayFrequency;
(function (CreditBankIncomePayFrequency) {
    CreditBankIncomePayFrequency["Weekly"] = "WEEKLY";
    CreditBankIncomePayFrequency["Biweekly"] = "BIWEEKLY";
    CreditBankIncomePayFrequency["SemiMonthly"] = "SEMI_MONTHLY";
    CreditBankIncomePayFrequency["Monthly"] = "MONTHLY";
    CreditBankIncomePayFrequency["Daily"] = "DAILY";
    CreditBankIncomePayFrequency["Unknown"] = "UNKNOWN";
})(CreditBankIncomePayFrequency = exports.CreditBankIncomePayFrequency || (exports.CreditBankIncomePayFrequency = {}));
/**
 * The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item `TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item `ITEM_UNAPPROVED`: User exited flow before giving permission to share data for the Item `REPORT_DELETED`: Report deleted due to customer or consumer request `DATA_UNAVAILABLE`: No relevant data was found for the Item
 * @export
 * @enum {string}
 */
var CreditBankIncomeWarningCode;
(function (CreditBankIncomeWarningCode) {
    CreditBankIncomeWarningCode["IdentityUnavailable"] = "IDENTITY_UNAVAILABLE";
    CreditBankIncomeWarningCode["TransactionsUnavailable"] = "TRANSACTIONS_UNAVAILABLE";
    CreditBankIncomeWarningCode["ItemUnapproved"] = "ITEM_UNAPPROVED";
    CreditBankIncomeWarningCode["ReportDeleted"] = "REPORT_DELETED";
    CreditBankIncomeWarningCode["DataUnavailable"] = "DATA_UNAVAILABLE";
})(CreditBankIncomeWarningCode = exports.CreditBankIncomeWarningCode || (exports.CreditBankIncomeWarningCode = {}));
/**
 * The warning type which will always be `BANK_INCOME_WARNING`.
 * @export
 * @enum {string}
 */
var CreditBankIncomeWarningType;
(function (CreditBankIncomeWarningType) {
    CreditBankIncomeWarningType["BankIncomeWarning"] = "BANK_INCOME_WARNING";
})(CreditBankIncomeWarningType = exports.CreditBankIncomeWarningType || (exports.CreditBankIncomeWarningType = {}));
/**
 * The explicit pay basis on the paystub (if present).
 * @export
 * @enum {string}
 */
var CreditPayStubPayBasisType;
(function (CreditPayStubPayBasisType) {
    CreditPayStubPayBasisType["Salary"] = "SALARY";
    CreditPayStubPayBasisType["Hourly"] = "HOURLY";
    CreditPayStubPayBasisType["Commission"] = "COMMISSION";
})(CreditPayStubPayBasisType = exports.CreditPayStubPayBasisType || (exports.CreditPayStubPayBasisType = {}));
/**
 * Status of the Bank Employment Link session.  `APPROVED`: User has approved and verified their employment.  `NO_EMPLOYMENTS_FOUND`: We attempted, but were unable to find any employment in the connected account.  `EMPLOYER_NOT_LISTED`: The user explicitly indicated that they did not see their current or previous employer in the list of employer names found.  `STARTED`: The user began the bank income portion of the link flow.  `INTERNAL_ERROR`: The user encountered an internal error.
 * @export
 * @enum {string}
 */
var CreditSessionBankEmploymentStatus;
(function (CreditSessionBankEmploymentStatus) {
    CreditSessionBankEmploymentStatus["Approved"] = "APPROVED";
    CreditSessionBankEmploymentStatus["NoEmployersFound"] = "NO_EMPLOYERS_FOUND";
    CreditSessionBankEmploymentStatus["EmployerNotListed"] = "EMPLOYER_NOT_LISTED";
})(CreditSessionBankEmploymentStatus = exports.CreditSessionBankEmploymentStatus || (exports.CreditSessionBankEmploymentStatus = {}));
/**
 * Status of the Bank Income Link session.  `APPROVED`: User has approved and verified their income  `NO_DEPOSITS_FOUND`: We attempted, but were unable to find any income in the connected account.  `USER_REPORTED_NO_INCOME`: The user explicitly indicated that they don\'t receive income in the connected account.  `STARTED`: The user began the bank income portion of the link flow.  `INTERNAL_ERROR`: The user encountered an internal error.
 * @export
 * @enum {string}
 */
var CreditSessionBankIncomeStatus;
(function (CreditSessionBankIncomeStatus) {
    CreditSessionBankIncomeStatus["Approved"] = "APPROVED";
    CreditSessionBankIncomeStatus["NoDepositsFound"] = "NO_DEPOSITS_FOUND";
    CreditSessionBankIncomeStatus["UserReportedNoIncome"] = "USER_REPORTED_NO_INCOME";
})(CreditSessionBankIncomeStatus = exports.CreditSessionBankIncomeStatus || (exports.CreditSessionBankIncomeStatus = {}));
/**
 * The current status of the user.
 * @export
 * @enum {string}
 */
var DashboardUserStatus;
(function (DashboardUserStatus) {
    DashboardUserStatus["Invited"] = "invited";
    DashboardUserStatus["Active"] = "active";
    DashboardUserStatus["Deactivated"] = "deactivated";
})(DashboardUserStatus = exports.DashboardUserStatus || (exports.DashboardUserStatus = {}));
/**
 * A description of the source of data for a given product/data type.  `INSTITUTION`: The institution supports this product, and the data was provided by the institution. `INSTITUTION_MASK`: The user manually provided the full account number, which was matched to the account mask provided by the institution. Only applicable to the `numbers` data type. `USER`: The institution does not support this product, and the data was manually provided by the user.
 * @export
 * @enum {string}
 */
var DataSources;
(function (DataSources) {
    DataSources["Institution"] = "INSTITUTION";
    DataSources["InstitutionMask"] = "INSTITUTION_MASK";
    DataSources["User"] = "USER";
})(DataSources = exports.DataSources || (exports.DataSources = {}));
/**
    * @export
    * @enum {string}
    */
var DepositSwitchAltCreateRequestCountryCodeEnum;
(function (DepositSwitchAltCreateRequestCountryCodeEnum) {
    DepositSwitchAltCreateRequestCountryCodeEnum["Us"] = "US";
    DepositSwitchAltCreateRequestCountryCodeEnum["Ca"] = "CA";
})(DepositSwitchAltCreateRequestCountryCodeEnum = exports.DepositSwitchAltCreateRequestCountryCodeEnum || (exports.DepositSwitchAltCreateRequestCountryCodeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var DepositSwitchCreateRequestCountryCodeEnum;
(function (DepositSwitchCreateRequestCountryCodeEnum) {
    DepositSwitchCreateRequestCountryCodeEnum["Us"] = "US";
    DepositSwitchCreateRequestCountryCodeEnum["Ca"] = "CA";
})(DepositSwitchCreateRequestCountryCodeEnum = exports.DepositSwitchCreateRequestCountryCodeEnum || (exports.DepositSwitchCreateRequestCountryCodeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var DepositSwitchGetResponseStateEnum;
(function (DepositSwitchGetResponseStateEnum) {
    DepositSwitchGetResponseStateEnum["Initialized"] = "initialized";
    DepositSwitchGetResponseStateEnum["Processing"] = "processing";
    DepositSwitchGetResponseStateEnum["Completed"] = "completed";
    DepositSwitchGetResponseStateEnum["Error"] = "error";
})(DepositSwitchGetResponseStateEnum = exports.DepositSwitchGetResponseStateEnum || (exports.DepositSwitchGetResponseStateEnum = {}));
/**
    * @export
    * @enum {string}
    */
var DepositSwitchGetResponseSwitchMethodEnum;
(function (DepositSwitchGetResponseSwitchMethodEnum) {
    DepositSwitchGetResponseSwitchMethodEnum["Instant"] = "instant";
    DepositSwitchGetResponseSwitchMethodEnum["Mail"] = "mail";
    DepositSwitchGetResponseSwitchMethodEnum["Pdf"] = "pdf";
    DepositSwitchGetResponseSwitchMethodEnum["Null"] = "null";
})(DepositSwitchGetResponseSwitchMethodEnum = exports.DepositSwitchGetResponseSwitchMethodEnum || (exports.DepositSwitchGetResponseSwitchMethodEnum = {}));
/**
    * @export
    * @enum {string}
    */
var DepositSwitchTargetAccountAccountSubtypeEnum;
(function (DepositSwitchTargetAccountAccountSubtypeEnum) {
    DepositSwitchTargetAccountAccountSubtypeEnum["Checking"] = "checking";
    DepositSwitchTargetAccountAccountSubtypeEnum["Savings"] = "savings";
})(DepositSwitchTargetAccountAccountSubtypeEnum = exports.DepositSwitchTargetAccountAccountSubtypeEnum || (exports.DepositSwitchTargetAccountAccountSubtypeEnum = {}));
/**
 * Valid account subtypes for depository accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-depository).
 * @export
 * @enum {string}
 */
var DepositoryAccountSubtype;
(function (DepositoryAccountSubtype) {
    DepositoryAccountSubtype["Checking"] = "checking";
    DepositoryAccountSubtype["Savings"] = "savings";
    DepositoryAccountSubtype["Hsa"] = "hsa";
    DepositoryAccountSubtype["Cd"] = "cd";
    DepositoryAccountSubtype["MoneyMarket"] = "money market";
    DepositoryAccountSubtype["Paypal"] = "paypal";
    DepositoryAccountSubtype["Prepaid"] = "prepaid";
    DepositoryAccountSubtype["CashManagement"] = "cash management";
    DepositoryAccountSubtype["Ebt"] = "ebt";
    DepositoryAccountSubtype["All"] = "all";
})(DepositoryAccountSubtype = exports.DepositoryAccountSubtype || (exports.DepositoryAccountSubtype = {}));
/**
 * The type of document.  `DOCUMENT_TYPE_PAYSTUB`: A paystub.  `DOCUMENT_TYPE_BANK_STATEMENT`: A bank statement.  `DOCUMENT_TYPE_US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.  `DOCUMENT_TYPE_US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military.  `DOCUMENT_TYPE_US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military.  `DOCUMENT_TYPE_US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military.  `DOCUMENT_TYPE_GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.  `DOCUMENT_TYPE_NONE`: Used to indicate that there is no underlying document for the data.  `DOCUMENT_TYPE_PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid.  `UNKNOWN`: Document type could not be determined.
 * @export
 * @enum {string}
 */
var DocType;
(function (DocType) {
    DocType["Unknown"] = "UNKNOWN";
    DocType["DocumentTypePaystub"] = "DOCUMENT_TYPE_PAYSTUB";
    DocType["DocumentTypeBankStatement"] = "DOCUMENT_TYPE_BANK_STATEMENT";
    DocType["DocumentTypeUsTaxW2"] = "DOCUMENT_TYPE_US_TAX_W2";
    DocType["DocumentTypeUsMilitaryEras"] = "DOCUMENT_TYPE_US_MILITARY_ERAS";
    DocType["DocumentTypeUsMilitaryLes"] = "DOCUMENT_TYPE_US_MILITARY_LES";
    DocType["DocumentTypeUsMilitaryCles"] = "DOCUMENT_TYPE_US_MILITARY_CLES";
    DocType["DocumentTypeGig"] = "DOCUMENT_TYPE_GIG";
    DocType["DocumentTypeNone"] = "DOCUMENT_TYPE_NONE";
    DocType["DocumentTypeUsTax1099Misc"] = "DOCUMENT_TYPE_US_TAX_1099_MISC";
    DocType["DocumentTypeUsTax1099K"] = "DOCUMENT_TYPE_US_TAX_1099_K";
    DocType["DocumentTypePlaidGeneratedPaystubPdf"] = "DOCUMENT_TYPE_PLAID_GENERATED_PAYSTUB_PDF";
})(DocType = exports.DocType || (exports.DocType = {}));
/**
 * High level summary of whether the document in the provided image matches the formatting rules and security checks for the associated jurisdiction.  For example, most identity documents have formatting rules like the following:   The image of the person\'s face must have a certain contrast in order to highlight skin tone   The subject in the document\'s image must remove eye glasses and pose in a certain way   The informational fields (name, date of birth, ID number, etc.) must be colored and aligned according to specific rules   Security features like watermarks and background patterns must be present  So a `match` status for this field indicates that the document in the provided image seems to conform to the various formatting and security rules associated with the detected document.
 * @export
 * @enum {string}
 */
var DocumentAuthenticityMatchCode;
(function (DocumentAuthenticityMatchCode) {
    DocumentAuthenticityMatchCode["Match"] = "match";
    DocumentAuthenticityMatchCode["PartialMatch"] = "partial_match";
    DocumentAuthenticityMatchCode["NoMatch"] = "no_match";
    DocumentAuthenticityMatchCode["NoData"] = "no_data";
})(DocumentAuthenticityMatchCode = exports.DocumentAuthenticityMatchCode || (exports.DocumentAuthenticityMatchCode = {}));
/**
 * A match summary describing the cross comparison between the subject\'s date of birth, extracted from the document image, and the date of birth they separately provided to the identity verification attempt.
 * @export
 * @enum {string}
 */
var DocumentDateOfBirthMatchCode;
(function (DocumentDateOfBirthMatchCode) {
    DocumentDateOfBirthMatchCode["Match"] = "match";
    DocumentDateOfBirthMatchCode["PartialMatch"] = "partial_match";
    DocumentDateOfBirthMatchCode["NoMatch"] = "no_match";
    DocumentDateOfBirthMatchCode["NoData"] = "no_data";
})(DocumentDateOfBirthMatchCode = exports.DocumentDateOfBirthMatchCode || (exports.DocumentDateOfBirthMatchCode = {}));
/**
 * A match summary describing the cross comparison between the subject\'s name, extracted from the document image, and the name they separately provided to identity verification attempt.
 * @export
 * @enum {string}
 */
var DocumentNameMatchCode;
(function (DocumentNameMatchCode) {
    DocumentNameMatchCode["Match"] = "match";
    DocumentNameMatchCode["PartialMatch"] = "partial_match";
    DocumentNameMatchCode["NoMatch"] = "no_match";
    DocumentNameMatchCode["NoData"] = "no_data";
})(DocumentNameMatchCode = exports.DocumentNameMatchCode || (exports.DocumentNameMatchCode = {}));
/**
 * An outcome status for this specific document submission. Distinct from the overall `documentary_verification.status` that summarizes the verification outcome from one or more documents.
 * @export
 * @enum {string}
 */
var DocumentStatus;
(function (DocumentStatus) {
    DocumentStatus["Success"] = "success";
    DocumentStatus["Failed"] = "failed";
    DocumentStatus["ManuallyApproved"] = "manually_approved";
})(DocumentStatus = exports.DocumentStatus || (exports.DocumentStatus = {}));
/**
 * Commonly used term to describe the earning line item.
 * @export
 * @enum {string}
 */
var EarningsBreakdownCanonicalDescription;
(function (EarningsBreakdownCanonicalDescription) {
    EarningsBreakdownCanonicalDescription["Bonus"] = "BONUS";
    EarningsBreakdownCanonicalDescription["Commission"] = "COMMISSION";
    EarningsBreakdownCanonicalDescription["Overtime"] = "OVERTIME";
    EarningsBreakdownCanonicalDescription["PaidTimeOff"] = "PAID TIME OFF";
    EarningsBreakdownCanonicalDescription["RegularPay"] = "REGULAR PAY";
    EarningsBreakdownCanonicalDescription["Vacation"] = "VACATION";
    EarningsBreakdownCanonicalDescription["BasicAllowanceHousing"] = "BASIC ALLOWANCE HOUSING";
    EarningsBreakdownCanonicalDescription["BasicAllowanceSubsistence"] = "BASIC ALLOWANCE SUBSISTENCE";
    EarningsBreakdownCanonicalDescription["Other"] = "OTHER";
    EarningsBreakdownCanonicalDescription["Null"] = "null";
})(EarningsBreakdownCanonicalDescription = exports.EarningsBreakdownCanonicalDescription || (exports.EarningsBreakdownCanonicalDescription = {}));
/**
    * @export
    * @enum {string}
    */
var EmailTypeEnum;
(function (EmailTypeEnum) {
    EmailTypeEnum["Primary"] = "primary";
    EmailTypeEnum["Secondary"] = "secondary";
    EmailTypeEnum["Other"] = "other";
})(EmailTypeEnum = exports.EmailTypeEnum || (exports.EmailTypeEnum = {}));
/**
 * The types of source employment data that users should be able to share
 * @export
 * @enum {string}
 */
var EmploymentSourceType;
(function (EmploymentSourceType) {
    EmploymentSourceType["Bank"] = "bank";
    EmploymentSourceType["Payroll"] = "payroll";
})(EmploymentSourceType = exports.EmploymentSourceType || (exports.EmploymentSourceType = {}));
/**
 * Current employment status.
 * @export
 * @enum {string}
 */
var EmploymentVerificationStatus;
(function (EmploymentVerificationStatus) {
    EmploymentVerificationStatus["EmploymentStatusActive"] = "EMPLOYMENT_STATUS_ACTIVE";
    EmploymentVerificationStatus["EmploymentStatusInactive"] = "EMPLOYMENT_STATUS_INACTIVE";
    EmploymentVerificationStatus["Null"] = "null";
})(EmploymentVerificationStatus = exports.EmploymentVerificationStatus || (exports.EmploymentVerificationStatus = {}));
/**
 * The direction of the transaction from the perspective of the account holder:  `OUTFLOW` - Includes outgoing transfers, purchases, and fees. (Typically represented as a negative value on checking accounts and debit cards and a positive value on credit cards.)  `INFLOW` - Includes incoming transfers, refunds, and income. (Typically represented as a positive value on checking accounts and debit cards and a negative value on credit cards.)
 * @export
 * @enum {string}
 */
var EnrichTransactionDirection;
(function (EnrichTransactionDirection) {
    EnrichTransactionDirection["Inflow"] = "INFLOW";
    EnrichTransactionDirection["Outflow"] = "OUTFLOW";
})(EnrichTransactionDirection = exports.EnrichTransactionDirection || (exports.EnrichTransactionDirection = {}));
/**
 * The kind of official document represented by this object.  `bik` - Russian bank code  `business_number` - A number that uniquely identifies the business within a category of businesses  `imo` - Number assigned to the entity by the International Maritime Organization  `other` - Any document not covered by other categories  `swift` - Number identifying a bank and branch.  `tax_id` - Identification issued for the purpose of collecting taxes
 * @export
 * @enum {string}
 */
var EntityDocumentType;
(function (EntityDocumentType) {
    EntityDocumentType["Bik"] = "bik";
    EntityDocumentType["BusinessNumber"] = "business_number";
    EntityDocumentType["Imo"] = "imo";
    EntityDocumentType["Other"] = "other";
    EntityDocumentType["Swift"] = "swift";
    EntityDocumentType["TaxId"] = "tax_id";
})(EntityDocumentType = exports.EntityDocumentType || (exports.EntityDocumentType = {}));
/**
 * Shorthand identifier for a specific screening list for entities.  `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List  `CA_CON`: Government of Canada Consolidated List of Sanctions  `EU_CON`: European External Action Service Consolidated List  `IZ_SOE`: State Owned Enterprise List  `IZ_UNC`: United Nations Consolidated Sanctions  `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals  `US_CAP`: US OFAC Correspondent Account or Payable-Through Account Sanctions  `US_FSE`: US OFAC Foreign Sanctions Evaders  `US_MBS`: US Non-SDN Menu-Based Sanctions  `US_SDN`: US Specially Designated Nationals List  `US_SSI`: US OFAC Sectoral Sanctions Identifications  `US_CMC`: US OFAC Non-SDN Chinese Military-Industrial Complex List  `US_UVL`: Bureau of Industry and Security Unverified List  `UK_HMC`: UK HM Treasury Consolidated List
 * @export
 * @enum {string}
 */
var EntityWatchlistCode;
(function (EntityWatchlistCode) {
    EntityWatchlistCode["CaCon"] = "CA_CON";
    EntityWatchlistCode["EuCon"] = "EU_CON";
    EntityWatchlistCode["IzSoe"] = "IZ_SOE";
    EntityWatchlistCode["IzUnc"] = "IZ_UNC";
    EntityWatchlistCode["IzWbk"] = "IZ_WBK";
    EntityWatchlistCode["UsCap"] = "US_CAP";
    EntityWatchlistCode["UsFse"] = "US_FSE";
    EntityWatchlistCode["UsMbs"] = "US_MBS";
    EntityWatchlistCode["UsSdn"] = "US_SDN";
    EntityWatchlistCode["UsSsi"] = "US_SSI";
    EntityWatchlistCode["UsCmc"] = "US_CMC";
    EntityWatchlistCode["UsUvl"] = "US_UVL";
    EntityWatchlistCode["AuCon"] = "AU_CON";
    EntityWatchlistCode["UkHmc"] = "UK_HMC";
})(EntityWatchlistCode = exports.EntityWatchlistCode || (exports.EntityWatchlistCode = {}));
/**
 * A description of whether the associated document was expired when the verification was performed.  Note: In the case where an expiration date is not present on the document or failed to be extracted, this value will be `no_data`.
 * @export
 * @enum {string}
 */
var ExpirationDate;
(function (ExpirationDate) {
    ExpirationDate["NotExpired"] = "not_expired";
    ExpirationDate["Expired"] = "expired";
    ExpirationDate["NoData"] = "no_data";
})(ExpirationDate = exports.ExpirationDate || (exports.ExpirationDate = {}));
/**
 * Types of document formats. (Suggested values)
 * @export
 * @enum {string}
 */
var FDXContentTypes;
(function (FDXContentTypes) {
    FDXContentTypes["ApplicationPdf"] = "application/pdf";
    FDXContentTypes["ImageGif"] = "image/gif";
    FDXContentTypes["ImageJpeg"] = "image/jpeg";
    FDXContentTypes["ImageTiff"] = "image/tiff";
    FDXContentTypes["ImagePng"] = "image/png";
    FDXContentTypes["ApplicationJson"] = "application/json";
})(FDXContentTypes = exports.FDXContentTypes || (exports.FDXContentTypes = {}));
/**
 * HTTP Method to use for the request
 * @export
 * @enum {string}
 */
var FDXHateoasLinkAction;
(function (FDXHateoasLinkAction) {
    FDXHateoasLinkAction["Get"] = "GET";
    FDXHateoasLinkAction["Post"] = "POST";
    FDXHateoasLinkAction["Patch"] = "PATCH";
    FDXHateoasLinkAction["Delete"] = "DELETE";
    FDXHateoasLinkAction["Put"] = "PUT";
})(FDXHateoasLinkAction = exports.FDXHateoasLinkAction || (exports.FDXHateoasLinkAction = {}));
/**
 * Category of Notification
 * @export
 * @enum {string}
 */
var FDXNotificationCategory;
(function (FDXNotificationCategory) {
    FDXNotificationCategory["Security"] = "SECURITY";
    FDXNotificationCategory["Maintenance"] = "MAINTENANCE";
    FDXNotificationCategory["Fraud"] = "FRAUD";
    FDXNotificationCategory["Consent"] = "CONSENT";
    FDXNotificationCategory["NewData"] = "NEW_DATA";
})(FDXNotificationCategory = exports.FDXNotificationCategory || (exports.FDXNotificationCategory = {}));
/**
 * Type of entity causing origination of a notification
 * @export
 * @enum {string}
 */
var FDXNotificationPayloadIdType;
(function (FDXNotificationPayloadIdType) {
    FDXNotificationPayloadIdType["Account"] = "ACCOUNT";
    FDXNotificationPayloadIdType["Customer"] = "CUSTOMER";
    FDXNotificationPayloadIdType["Party"] = "PARTY";
    FDXNotificationPayloadIdType["Maintenance"] = "MAINTENANCE";
    FDXNotificationPayloadIdType["Consent"] = "CONSENT";
})(FDXNotificationPayloadIdType = exports.FDXNotificationPayloadIdType || (exports.FDXNotificationPayloadIdType = {}));
/**
 * Priority of notification
 * @export
 * @enum {string}
 */
var FDXNotificationPriority;
(function (FDXNotificationPriority) {
    FDXNotificationPriority["High"] = "HIGH";
    FDXNotificationPriority["Medium"] = "MEDIUM";
    FDXNotificationPriority["Low"] = "LOW";
})(FDXNotificationPriority = exports.FDXNotificationPriority || (exports.FDXNotificationPriority = {}));
/**
 * Severity level of notification
 * @export
 * @enum {string}
 */
var FDXNotificationSeverity;
(function (FDXNotificationSeverity) {
    FDXNotificationSeverity["Emergency"] = "EMERGENCY";
    FDXNotificationSeverity["Alert"] = "ALERT";
    FDXNotificationSeverity["Warning"] = "WARNING";
    FDXNotificationSeverity["Notice"] = "NOTICE";
    FDXNotificationSeverity["Info"] = "INFO";
})(FDXNotificationSeverity = exports.FDXNotificationSeverity || (exports.FDXNotificationSeverity = {}));
/**
 * Type of Notification
 * @export
 * @enum {string}
 */
var FDXNotificationType;
(function (FDXNotificationType) {
    FDXNotificationType["ConsentRevoked"] = "CONSENT_REVOKED";
    FDXNotificationType["ConsentUpdated"] = "CONSENT_UPDATED";
    FDXNotificationType["Custom"] = "CUSTOM";
    FDXNotificationType["Service"] = "SERVICE";
    FDXNotificationType["Balance"] = "BALANCE";
    FDXNotificationType["PlannedOutage"] = "PLANNED_OUTAGE";
})(FDXNotificationType = exports.FDXNotificationType || (exports.FDXNotificationType = {}));
/**
 * The registry containing the party’s registration with name and id
 * @export
 * @enum {string}
 */
var FDXPartyRegistry;
(function (FDXPartyRegistry) {
    FDXPartyRegistry["Fdx"] = "FDX";
    FDXPartyRegistry["Gleif"] = "GLEIF";
    FDXPartyRegistry["Icann"] = "ICANN";
    FDXPartyRegistry["Private"] = "PRIVATE";
})(FDXPartyRegistry = exports.FDXPartyRegistry || (exports.FDXPartyRegistry = {}));
/**
 * Identifies the type of a party
 * @export
 * @enum {string}
 */
var FDXPartyType;
(function (FDXPartyType) {
    FDXPartyType["DataAccessPlatform"] = "DATA_ACCESS_PLATFORM";
    FDXPartyType["DataProvider"] = "DATA_PROVIDER";
    FDXPartyType["DataRecipient"] = "DATA_RECIPIENT";
    FDXPartyType["Individual"] = "INDIVIDUAL";
    FDXPartyType["Merchant"] = "MERCHANT";
    FDXPartyType["Vendor"] = "VENDOR";
})(FDXPartyType = exports.FDXPartyType || (exports.FDXPartyType = {}));
/**
 * Form 1099 Type
 * @export
 * @enum {string}
 */
var Form1099Type;
(function (Form1099Type) {
    Form1099Type["Unknown"] = "FORM_1099_TYPE_UNKNOWN";
    Form1099Type["Misc"] = "FORM_1099_TYPE_MISC";
    Form1099Type["K"] = "FORM_1099_TYPE_K";
})(Form1099Type = exports.Form1099Type || (exports.Form1099Type = {}));
/**
 * The outcome of the fraud check.
 * @export
 * @enum {string}
 */
var FraudCheckOutcome;
(function (FraudCheckOutcome) {
    FraudCheckOutcome["Success"] = "success";
    FraudCheckOutcome["Failed"] = "failed";
})(FraudCheckOutcome = exports.FraudCheckOutcome || (exports.FraudCheckOutcome = {}));
/**
 * The outcome of the fraud check, when available.
 * @export
 * @enum {string}
 */
var FraudCheckOutcomeWithNoData;
(function (FraudCheckOutcomeWithNoData) {
    FraudCheckOutcomeWithNoData["Success"] = "success";
    FraudCheckOutcomeWithNoData["Failed"] = "failed";
    FraudCheckOutcomeWithNoData["NoData"] = "no_data";
})(FraudCheckOutcomeWithNoData = exports.FraudCheckOutcomeWithNoData || (exports.FraudCheckOutcomeWithNoData = {}));
/**
 * An enum indicating the match type between data provided by user and data checked against an external data source.   `match` indicates that the provided input data was a strong match against external data.  `partial_match` indicates the data approximately matched against external data. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.  `no_match` indicates that Plaid was able to perform a check against an external data source and it did not match the provided input data.  `no_data` indicates that Plaid was unable to find external data to compare against the provided input data.  `no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user.
 * @export
 * @enum {string}
 */
var HiddenMatchSummaryCode;
(function (HiddenMatchSummaryCode) {
    HiddenMatchSummaryCode["Match"] = "match";
    HiddenMatchSummaryCode["PartialMatch"] = "partial_match";
    HiddenMatchSummaryCode["NoMatch"] = "no_match";
    HiddenMatchSummaryCode["NoData"] = "no_data";
    HiddenMatchSummaryCode["NoInput"] = "no_input";
})(HiddenMatchSummaryCode = exports.HiddenMatchSummaryCode || (exports.HiddenMatchSummaryCode = {}));
/**
 * How Plaid should deliver the Plaid Link session to the customer. Only available to customers enabled for Link Delivery (beta). To request Link Delivery access, contact your account manager. \'sms\' will deliver via SMS. Must pass `user.phone_number`. \'email\' will deliver via email. Must pass `user.email_address`. In the Sandbox environment, this field will be ignored; use the Production environment to test Link Delivery instead.
 * @export
 * @enum {string}
 */
var HostedLinkDeliveryMethod;
(function (HostedLinkDeliveryMethod) {
    HostedLinkDeliveryMethod["Sms"] = "sms";
    HostedLinkDeliveryMethod["Email"] = "email";
})(HostedLinkDeliveryMethod = exports.HostedLinkDeliveryMethod || (exports.HostedLinkDeliveryMethod = {}));
/**
 * A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see [Hybrid Input Validation](https://plaid.com/docs/identity-verification/hybrid-input-validation).
 * @export
 * @enum {string}
 */
var IDNumberType;
(function (IDNumberType) {
    IDNumberType["ArDni"] = "ar_dni";
    IDNumberType["AuDriversLicense"] = "au_drivers_license";
    IDNumberType["AuPassport"] = "au_passport";
    IDNumberType["BrCpf"] = "br_cpf";
    IDNumberType["CaSin"] = "ca_sin";
    IDNumberType["ClRun"] = "cl_run";
    IDNumberType["CnResidentCard"] = "cn_resident_card";
    IDNumberType["CoNit"] = "co_nit";
    IDNumberType["DkCpr"] = "dk_cpr";
    IDNumberType["EgNationalId"] = "eg_national_id";
    IDNumberType["EsDni"] = "es_dni";
    IDNumberType["EsNie"] = "es_nie";
    IDNumberType["HkHkid"] = "hk_hkid";
    IDNumberType["InPan"] = "in_pan";
    IDNumberType["ItCf"] = "it_cf";
    IDNumberType["JoCivilId"] = "jo_civil_id";
    IDNumberType["JpMyNumber"] = "jp_my_number";
    IDNumberType["KeHudumaNamba"] = "ke_huduma_namba";
    IDNumberType["KwCivilId"] = "kw_civil_id";
    IDNumberType["MxCurp"] = "mx_curp";
    IDNumberType["MxRfc"] = "mx_rfc";
    IDNumberType["MyNric"] = "my_nric";
    IDNumberType["NgNin"] = "ng_nin";
    IDNumberType["NzDriversLicense"] = "nz_drivers_license";
    IDNumberType["OmCivilId"] = "om_civil_id";
    IDNumberType["PhPsn"] = "ph_psn";
    IDNumberType["PlPesel"] = "pl_pesel";
    IDNumberType["RoCnp"] = "ro_cnp";
    IDNumberType["SaNationalId"] = "sa_national_id";
    IDNumberType["SePin"] = "se_pin";
    IDNumberType["SgNric"] = "sg_nric";
    IDNumberType["TrTcKimlik"] = "tr_tc_kimlik";
    IDNumberType["UsSsn"] = "us_ssn";
    IDNumberType["UsSsnLast4"] = "us_ssn_last_4";
    IDNumberType["ZaSmartId"] = "za_smart_id";
})(IDNumberType = exports.IDNumberType || (exports.IDNumberType = {}));
/**
 * An ISO-4217 currency code.
 * @export
 * @enum {string}
 */
var ISOCurrencyCode;
(function (ISOCurrencyCode) {
    ISOCurrencyCode["Usd"] = "USD";
})(ISOCurrencyCode = exports.ISOCurrencyCode || (exports.ISOCurrencyCode = {}));
/**
 * The possible types of identity data that may have changed.
 * @export
 * @enum {string}
 */
var IdentityUpdateTypes;
(function (IdentityUpdateTypes) {
    IdentityUpdateTypes["Phones"] = "PHONES";
    IdentityUpdateTypes["Addresses"] = "ADDRESSES";
    IdentityUpdateTypes["Emails"] = "EMAILS";
    IdentityUpdateTypes["Names"] = "NAMES";
})(IdentityUpdateTypes = exports.IdentityUpdateTypes || (exports.IdentityUpdateTypes = {}));
/**
 * A status enum indicating whether autofill succeeded or failed.
 * @export
 * @enum {string}
 */
var IdentityVerificationAutofillStatus;
(function (IdentityVerificationAutofillStatus) {
    IdentityVerificationAutofillStatus["Success"] = "success";
    IdentityVerificationAutofillStatus["Failed"] = "failed";
})(IdentityVerificationAutofillStatus = exports.IdentityVerificationAutofillStatus || (exports.IdentityVerificationAutofillStatus = {}));
/**
 * The status of this Identity Verification attempt.   `active` - The Identity Verification attempt is incomplete. The user may have completed part of the session, but has neither failed or passed.  `success` - The Identity Verification attempt has completed, passing all steps defined to the associated Identity Verification template  `failed` - The user failed one or more steps in the session and was told to contact support.  `expired` - The Identity Verification attempt was active for a long period of time without being completed and was automatically marked as expired. Note that sessions currently do not expire. Automatic expiration is expected to be enabled in the future.  `canceled` - The Identity Verification attempt was canceled, either via the dashboard by a user, or via API. The user may have completed part of the session, but has neither failed or passed.  `pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review.
 * @export
 * @enum {string}
 */
var IdentityVerificationStatus;
(function (IdentityVerificationStatus) {
    IdentityVerificationStatus["Active"] = "active";
    IdentityVerificationStatus["Success"] = "success";
    IdentityVerificationStatus["Failed"] = "failed";
    IdentityVerificationStatus["Expired"] = "expired";
    IdentityVerificationStatus["Canceled"] = "canceled";
    IdentityVerificationStatus["PendingReview"] = "pending_review";
})(IdentityVerificationStatus = exports.IdentityVerificationStatus || (exports.IdentityVerificationStatus = {}));
/**
 * The status of a step in the Identity Verification process.
 * @export
 * @enum {string}
 */
var IdentityVerificationStepStatus;
(function (IdentityVerificationStepStatus) {
    IdentityVerificationStepStatus["Success"] = "success";
    IdentityVerificationStepStatus["Active"] = "active";
    IdentityVerificationStepStatus["Failed"] = "failed";
    IdentityVerificationStepStatus["WaitingForPrerequisite"] = "waiting_for_prerequisite";
    IdentityVerificationStepStatus["NotApplicable"] = "not_applicable";
    IdentityVerificationStepStatus["Skipped"] = "skipped";
    IdentityVerificationStepStatus["Expired"] = "expired";
    IdentityVerificationStepStatus["Canceled"] = "canceled";
    IdentityVerificationStepStatus["PendingReview"] = "pending_review";
    IdentityVerificationStepStatus["ManuallyApproved"] = "manually_approved";
    IdentityVerificationStepStatus["ManuallyRejected"] = "manually_rejected";
})(IdentityVerificationStepStatus = exports.IdentityVerificationStepStatus || (exports.IdentityVerificationStepStatus = {}));
/**
 * A high level description of the quality of the image the user submitted.  For example, an image that is blurry, distorted by glare from a nearby light source, or improperly framed might be marked as low or medium quality. Poor quality images are more likely to fail OCR and/or template conformity checks.  Note: By default, Plaid will let a user recapture document images twice before failing the entire session if we attribute the failure to low image quality.
 * @export
 * @enum {string}
 */
var ImageQuality;
(function (ImageQuality) {
    ImageQuality["High"] = "high";
    ImageQuality["Medium"] = "medium";
    ImageQuality["Low"] = "low";
})(ImageQuality = exports.ImageQuality || (exports.ImageQuality = {}));
/**
 * The outcome of the image quality check.
 * @export
 * @enum {string}
 */
var ImageQualityOutcome;
(function (ImageQualityOutcome) {
    ImageQualityOutcome["Success"] = "success";
    ImageQualityOutcome["Failed"] = "failed";
})(ImageQualityOutcome = exports.ImageQualityOutcome || (exports.ImageQualityOutcome = {}));
/**
    * @export
    * @enum {string}
    */
var IncidentUpdateStatusEnum;
(function (IncidentUpdateStatusEnum) {
    IncidentUpdateStatusEnum["Investigating"] = "INVESTIGATING";
    IncidentUpdateStatusEnum["Identified"] = "IDENTIFIED";
    IncidentUpdateStatusEnum["Scheduled"] = "SCHEDULED";
    IncidentUpdateStatusEnum["Resolved"] = "RESOLVED";
    IncidentUpdateStatusEnum["Unknown"] = "UNKNOWN";
})(IncidentUpdateStatusEnum = exports.IncidentUpdateStatusEnum || (exports.IncidentUpdateStatusEnum = {}));
/**
 * The type of income. Possible values include:   `\"regular\"`: regular income   `\"overtime\"`: overtime income   `\"bonus\"`: bonus income
 * @export
 * @enum {string}
 */
var IncomeBreakdownType;
(function (IncomeBreakdownType) {
    IncomeBreakdownType["Bonus"] = "bonus";
    IncomeBreakdownType["Overtime"] = "overtime";
    IncomeBreakdownType["Regular"] = "regular";
    IncomeBreakdownType["Null"] = "null";
})(IncomeBreakdownType = exports.IncomeBreakdownType || (exports.IncomeBreakdownType = {}));
/**
 * Analysis options to enable for document parsing
 * @export
 * @enum {string}
 */
var IncomeVerificationDocParsingConfig;
(function (IncomeVerificationDocParsingConfig) {
    IncomeVerificationDocParsingConfig["Ocr"] = "ocr";
    IncomeVerificationDocParsingConfig["RiskSignals"] = "risk_signals";
})(IncomeVerificationDocParsingConfig = exports.IncomeVerificationDocParsingConfig || (exports.IncomeVerificationDocParsingConfig = {}));
/**
 * Flow types to retrieve payroll income data
 * @export
 * @enum {string}
 */
var IncomeVerificationPayrollFlowType;
(function (IncomeVerificationPayrollFlowType) {
    IncomeVerificationPayrollFlowType["DigitalIncome"] = "payroll_digital_income";
    IncomeVerificationPayrollFlowType["DocumentIncome"] = "payroll_document_income";
})(IncomeVerificationPayrollFlowType = exports.IncomeVerificationPayrollFlowType || (exports.IncomeVerificationPayrollFlowType = {}));
/**
 * The confidence that Plaid can support the user in the digital income verification flow instead of requiring a manual paystub upload. One of the following:  `\"HIGH\"`: It is very likely that this user can use the digital income verification flow.  \"`LOW`\": It is unlikely that this user can use the digital income verification flow.  `\"UNKNOWN\"`: It was not possible to determine if the user is supportable with the information passed.
 * @export
 * @enum {string}
 */
var IncomeVerificationPrecheckConfidence;
(function (IncomeVerificationPrecheckConfidence) {
    IncomeVerificationPrecheckConfidence["High"] = "HIGH";
    IncomeVerificationPrecheckConfidence["Low"] = "LOW";
    IncomeVerificationPrecheckConfidence["Unknown"] = "UNKNOWN";
})(IncomeVerificationPrecheckConfidence = exports.IncomeVerificationPrecheckConfidence || (exports.IncomeVerificationPrecheckConfidence = {}));
/**
 * The types of source income data that users should be able to share
 * @export
 * @enum {string}
 */
var IncomeVerificationSourceType;
(function (IncomeVerificationSourceType) {
    IncomeVerificationSourceType["Bank"] = "bank";
    IncomeVerificationSourceType["Payroll"] = "payroll";
})(IncomeVerificationSourceType = exports.IncomeVerificationSourceType || (exports.IncomeVerificationSourceType = {}));
/**
 * Shorthand identifier for a specific screening list for individuals.  `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List  `CA_CON`: Government of Canada Consolidated List of Sanctions  `EU_CON`: European External Action Service Consolidated List  `IZ_CIA`: CIA List of Chiefs of State and Cabinet Members  `IZ_IPL`: Interpol Red Notices for Wanted Persons List  `IZ_PEP`: Politically Exposed Persons List  `IZ_UNC`: United Nations Consolidated Sanctions  `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals  `UK_HMC`: UK HM Treasury Consolidated List  `US_DPL`: Bureau of Industry and Security Denied Persons List  `US_DTC`: US Department of State AECA Debarred  `US_FBI`: US Department of Justice FBI Wanted List  `US_FSE`: US OFAC Foreign Sanctions Evaders  `US_ISN`: US Department of State Nonproliferation Sanctions  `US_PLC`: US OFAC Palestinian Legislative Council  `US_SDN`: US OFAC Specially Designated Nationals List  `US_SSI`: US OFAC Sectoral Sanctions Identifications  `SG_SOF`: Government of Singapore Terrorists and Terrorist Entities  `TR_TWL`: Government of Turkey Terrorist Wanted List  `TR_DFD`: Government of Turkey Domestic Freezing Decisions  `TR_FOR`: Government of Turkey Foreign Freezing Requests  `TR_WMD`: Government of Turkey Weapons of Mass Destruction  `TR_CMB`: Government of Turkey Capital Markets Board
 * @export
 * @enum {string}
 */
var IndividualWatchlistCode;
(function (IndividualWatchlistCode) {
    IndividualWatchlistCode["AuCon"] = "AU_CON";
    IndividualWatchlistCode["CaCon"] = "CA_CON";
    IndividualWatchlistCode["EuCon"] = "EU_CON";
    IndividualWatchlistCode["IzCia"] = "IZ_CIA";
    IndividualWatchlistCode["IzIpl"] = "IZ_IPL";
    IndividualWatchlistCode["IzPep"] = "IZ_PEP";
    IndividualWatchlistCode["IzUnc"] = "IZ_UNC";
    IndividualWatchlistCode["IzWbk"] = "IZ_WBK";
    IndividualWatchlistCode["UkHmc"] = "UK_HMC";
    IndividualWatchlistCode["UsDpl"] = "US_DPL";
    IndividualWatchlistCode["UsDtc"] = "US_DTC";
    IndividualWatchlistCode["UsFbi"] = "US_FBI";
    IndividualWatchlistCode["UsFse"] = "US_FSE";
    IndividualWatchlistCode["UsIsn"] = "US_ISN";
    IndividualWatchlistCode["UsMbs"] = "US_MBS";
    IndividualWatchlistCode["UsPlc"] = "US_PLC";
    IndividualWatchlistCode["UsSdn"] = "US_SDN";
    IndividualWatchlistCode["UsSsi"] = "US_SSI";
    IndividualWatchlistCode["SgSof"] = "SG_SOF";
    IndividualWatchlistCode["TrTwl"] = "TR_TWL";
    IndividualWatchlistCode["TrDfd"] = "TR_DFD";
    IndividualWatchlistCode["TrFor"] = "TR_FOR";
    IndividualWatchlistCode["TrWmd"] = "TR_WMD";
    IndividualWatchlistCode["TrCmb"] = "TR_CMB";
})(IndividualWatchlistCode = exports.IndividualWatchlistCode || (exports.IndividualWatchlistCode = {}));
/**
 * Valid account subtypes for investment accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-investment).
 * @export
 * @enum {string}
 */
var InvestmentAccountSubtype;
(function (InvestmentAccountSubtype) {
    InvestmentAccountSubtype["_529"] = "529";
    InvestmentAccountSubtype["_401a"] = "401a";
    InvestmentAccountSubtype["_401k"] = "401k";
    InvestmentAccountSubtype["_403B"] = "403B";
    InvestmentAccountSubtype["_457b"] = "457b";
    InvestmentAccountSubtype["Brokerage"] = "brokerage";
    InvestmentAccountSubtype["CashIsa"] = "cash isa";
    InvestmentAccountSubtype["CryptoExchange"] = "crypto exchange";
    InvestmentAccountSubtype["EducationSavingsAccount"] = "education savings account";
    InvestmentAccountSubtype["FixedAnnuity"] = "fixed annuity";
    InvestmentAccountSubtype["Gic"] = "gic";
    InvestmentAccountSubtype["HealthReimbursementArrangement"] = "health reimbursement arrangement";
    InvestmentAccountSubtype["Hsa"] = "hsa";
    InvestmentAccountSubtype["Ira"] = "ira";
    InvestmentAccountSubtype["Isa"] = "isa";
    InvestmentAccountSubtype["Keogh"] = "keogh";
    InvestmentAccountSubtype["Lif"] = "lif";
    InvestmentAccountSubtype["LifeInsurance"] = "life insurance";
    InvestmentAccountSubtype["Lira"] = "lira";
    InvestmentAccountSubtype["Lrif"] = "lrif";
    InvestmentAccountSubtype["Lrsp"] = "lrsp";
    InvestmentAccountSubtype["MutualFund"] = "mutual fund";
    InvestmentAccountSubtype["NonCustodialWallet"] = "non-custodial wallet";
    InvestmentAccountSubtype["NonTaxableBrokerageAccount"] = "non-taxable brokerage account";
    InvestmentAccountSubtype["Other"] = "other";
    InvestmentAccountSubtype["OtherAnnuity"] = "other annuity";
    InvestmentAccountSubtype["OtherInsurance"] = "other insurance";
    InvestmentAccountSubtype["Pension"] = "pension";
    InvestmentAccountSubtype["Prif"] = "prif";
    InvestmentAccountSubtype["ProfitSharingPlan"] = "profit sharing plan";
    InvestmentAccountSubtype["Qshr"] = "qshr";
    InvestmentAccountSubtype["Rdsp"] = "rdsp";
    InvestmentAccountSubtype["Resp"] = "resp";
    InvestmentAccountSubtype["Retirement"] = "retirement";
    InvestmentAccountSubtype["Rlif"] = "rlif";
    InvestmentAccountSubtype["Roth"] = "roth";
    InvestmentAccountSubtype["Roth401k"] = "roth 401k";
    InvestmentAccountSubtype["Rrif"] = "rrif";
    InvestmentAccountSubtype["Rrsp"] = "rrsp";
    InvestmentAccountSubtype["Sarsep"] = "sarsep";
    InvestmentAccountSubtype["SepIra"] = "sep ira";
    InvestmentAccountSubtype["SimpleIra"] = "simple ira";
    InvestmentAccountSubtype["Sipp"] = "sipp";
    InvestmentAccountSubtype["StockPlan"] = "stock plan";
    InvestmentAccountSubtype["Tfsa"] = "tfsa";
    InvestmentAccountSubtype["Trust"] = "trust";
    InvestmentAccountSubtype["Ugma"] = "ugma";
    InvestmentAccountSubtype["Utma"] = "utma";
    InvestmentAccountSubtype["VariableAnnuity"] = "variable annuity";
    InvestmentAccountSubtype["All"] = "all";
})(InvestmentAccountSubtype = exports.InvestmentAccountSubtype || (exports.InvestmentAccountSubtype = {}));
/**
 * For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
 * @export
 * @enum {string}
 */
var InvestmentTransactionSubtype;
(function (InvestmentTransactionSubtype) {
    InvestmentTransactionSubtype["AccountFee"] = "account fee";
    InvestmentTransactionSubtype["Adjustment"] = "adjustment";
    InvestmentTransactionSubtype["Assignment"] = "assignment";
    InvestmentTransactionSubtype["Buy"] = "buy";
    InvestmentTransactionSubtype["BuyToCover"] = "buy to cover";
    InvestmentTransactionSubtype["Contribution"] = "contribution";
    InvestmentTransactionSubtype["Deposit"] = "deposit";
    InvestmentTransactionSubtype["Distribution"] = "distribution";
    InvestmentTransactionSubtype["Dividend"] = "dividend";
    InvestmentTransactionSubtype["DividendReinvestment"] = "dividend reinvestment";
    InvestmentTransactionSubtype["Exercise"] = "exercise";
    InvestmentTransactionSubtype["Expire"] = "expire";
    InvestmentTransactionSubtype["FundFee"] = "fund fee";
    InvestmentTransactionSubtype["Interest"] = "interest";
    InvestmentTransactionSubtype["InterestReceivable"] = "interest receivable";
    InvestmentTransactionSubtype["InterestReinvestment"] = "interest reinvestment";
    InvestmentTransactionSubtype["LegalFee"] = "legal fee";
    InvestmentTransactionSubtype["LoanPayment"] = "loan payment";
    InvestmentTransactionSubtype["LongTermCapitalGain"] = "long-term capital gain";
    InvestmentTransactionSubtype["LongTermCapitalGainReinvestment"] = "long-term capital gain reinvestment";
    InvestmentTransactionSubtype["ManagementFee"] = "management fee";
    InvestmentTransactionSubtype["MarginExpense"] = "margin expense";
    InvestmentTransactionSubtype["Merger"] = "merger";
    InvestmentTransactionSubtype["MiscellaneousFee"] = "miscellaneous fee";
    InvestmentTransactionSubtype["NonQualifiedDividend"] = "non-qualified dividend";
    InvestmentTransactionSubtype["NonResidentTax"] = "non-resident tax";
    InvestmentTransactionSubtype["PendingCredit"] = "pending credit";
    InvestmentTransactionSubtype["PendingDebit"] = "pending debit";
    InvestmentTransactionSubtype["QualifiedDividend"] = "qualified dividend";
    InvestmentTransactionSubtype["Rebalance"] = "rebalance";
    InvestmentTransactionSubtype["ReturnOfPrincipal"] = "return of principal";
    InvestmentTransactionSubtype["Request"] = "request";
    InvestmentTransactionSubtype["Sell"] = "sell";
    InvestmentTransactionSubtype["SellShort"] = "sell short";
    InvestmentTransactionSubtype["Send"] = "send";
    InvestmentTransactionSubtype["ShortTermCapitalGain"] = "short-term capital gain";
    InvestmentTransactionSubtype["ShortTermCapitalGainReinvestment"] = "short-term capital gain reinvestment";
    InvestmentTransactionSubtype["SpinOff"] = "spin off";
    InvestmentTransactionSubtype["Split"] = "split";
    InvestmentTransactionSubtype["StockDistribution"] = "stock distribution";
    InvestmentTransactionSubtype["Tax"] = "tax";
    InvestmentTransactionSubtype["TaxWithheld"] = "tax withheld";
    InvestmentTransactionSubtype["Trade"] = "trade";
    InvestmentTransactionSubtype["Transfer"] = "transfer";
    InvestmentTransactionSubtype["TransferFee"] = "transfer fee";
    InvestmentTransactionSubtype["TrustFee"] = "trust fee";
    InvestmentTransactionSubtype["UnqualifiedGain"] = "unqualified gain";
    InvestmentTransactionSubtype["Withdrawal"] = "withdrawal";
})(InvestmentTransactionSubtype = exports.InvestmentTransactionSubtype || (exports.InvestmentTransactionSubtype = {}));
/**
 * Value is one of the following: `buy`: Buying an investment `sell`: Selling an investment `cancel`: A cancellation of a pending transaction `cash`: Activity that modifies a cash position `fee`: A fee on the account `transfer`: Activity which modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer  For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
 * @export
 * @enum {string}
 */
var InvestmentTransactionType;
(function (InvestmentTransactionType) {
    InvestmentTransactionType["Buy"] = "buy";
    InvestmentTransactionType["Sell"] = "sell";
    InvestmentTransactionType["Cancel"] = "cancel";
    InvestmentTransactionType["Cash"] = "cash";
    InvestmentTransactionType["Fee"] = "fee";
    InvestmentTransactionType["Transfer"] = "transfer";
})(InvestmentTransactionType = exports.InvestmentTransactionType || (exports.InvestmentTransactionType = {}));
/**
 * The current status of the issue.
 * @export
 * @enum {string}
 */
var IssuesStatus;
(function (IssuesStatus) {
    IssuesStatus["Reported"] = "REPORTED";
    IssuesStatus["AwaitingResolution"] = "AWAITING_RESOLUTION";
    IssuesStatus["FixInProgress"] = "FIX_IN_PROGRESS";
    IssuesStatus["FixPendingValidation"] = "FIX_PENDING_VALIDATION";
    IssuesStatus["CannotFix"] = "CANNOT_FIX";
    IssuesStatus["Resolved"] = "RESOLVED";
})(IssuesStatus = exports.IssuesStatus || (exports.IssuesStatus = {}));
/**
 * A binary match indicator specifying whether the country that issued the provided document matches the country that the user separately provided to Plaid.  Note: You can configure whether a `no_match` on `issuing_country` fails the `documentary_verification` by editing your Plaid Template.
 * @export
 * @enum {string}
 */
var IssuingCountry;
(function (IssuingCountry) {
    IssuingCountry["Match"] = "match";
    IssuingCountry["NoMatch"] = "no_match";
})(IssuingCountry = exports.IssuingCountry || (exports.IssuingCountry = {}));
/**
    * @export
    * @enum {string}
    */
var ItemUpdateTypeEnum;
(function (ItemUpdateTypeEnum) {
    ItemUpdateTypeEnum["Background"] = "background";
    ItemUpdateTypeEnum["UserPresentRequired"] = "user_present_required";
})(ItemUpdateTypeEnum = exports.ItemUpdateTypeEnum || (exports.ItemUpdateTypeEnum = {}));
/**
 * The method used to populate Auth data for the Item. This field is only populated for Items that have had Auth numbers data set on at least one of its accounts, and will be `null` otherwise. For info about the various flows, see our [Auth coverage documentation](https://plaid.com/docs/auth/coverage/).  `INSTANT_AUTH`: The Item\'s Auth data was provided directly by the user\'s institution connection.  `INSTANT_MATCH`: The Item\'s Auth data was provided via the Instant Match fallback flow.  `AUTOMATED_MICRODEPOSITS`: The Item\'s Auth data was provided via the Automated Micro-deposits flow.  `SAME_DAY_MICRODEPOSITS`: The Item\'s Auth data was provided via the Same Day Micro-deposits flow.  `INSTANT_MICRODEPOSITS`: The Item\'s Auth data was provided via the Instant Micro-deposits flow.  `DATABASE_MATCH`: The Item\'s Auth data was provided via the Database Match flow.  `DATABASE_INSIGHTS`: The Item\'s Auth data was provided via the Database Insights flow.  `TRANSFER_MIGRATED`: The Item\'s Auth data was provided via [`/transfer/migrate_account`](https://plaid.com/docs/api/products/transfer/account-linking/#migrate-account-into-transfers).  `INVESTMENTS_FALLBACK`: The Item\'s Auth data for Investments Move was provided via a [fallback flow](https://plaid.com/docs/investments-move/#fallback-flows).
 * @export
 * @enum {string}
 */
var ItemAuthMethod;
(function (ItemAuthMethod) {
    ItemAuthMethod["InstantAuth"] = "INSTANT_AUTH";
    ItemAuthMethod["InstantMatch"] = "INSTANT_MATCH";
    ItemAuthMethod["AutomatedMicrodeposits"] = "AUTOMATED_MICRODEPOSITS";
    ItemAuthMethod["SameDayMicrodeposits"] = "SAME_DAY_MICRODEPOSITS";
    ItemAuthMethod["InstantMicrodeposits"] = "INSTANT_MICRODEPOSITS";
    ItemAuthMethod["DatabaseMatch"] = "DATABASE_MATCH";
    ItemAuthMethod["DatabaseInsights"] = "DATABASE_INSIGHTS";
    ItemAuthMethod["TransferMigrated"] = "TRANSFER_MIGRATED";
    ItemAuthMethod["InvestmentsFallback"] = "INVESTMENTS_FALLBACK";
})(ItemAuthMethod = exports.ItemAuthMethod || (exports.ItemAuthMethod = {}));
/**
 * A data scope for the products that a user can consent to in [Data Transparency Messaging](/docs/link/data-transparency-messaging-migration-guide)
 * @export
 * @enum {string}
 */
var ItemConsentedDataScope;
(function (ItemConsentedDataScope) {
    ItemConsentedDataScope["AccountAndBalanceInfo"] = "account_and_balance_info";
    ItemConsentedDataScope["ContactInfo"] = "contact_info";
    ItemConsentedDataScope["AccountAndRoutingNumbers"] = "account_and_routing_numbers";
    ItemConsentedDataScope["Transactions"] = "transactions";
    ItemConsentedDataScope["CreditAndLoans"] = "credit_and_loans";
    ItemConsentedDataScope["Investments"] = "investments";
    ItemConsentedDataScope["BankStatements"] = "bank_statements";
    ItemConsentedDataScope["RiskInfo"] = "risk_info";
})(ItemConsentedDataScope = exports.ItemConsentedDataScope || (exports.ItemConsentedDataScope = {}));
/**
 * Enum representing the entity authenticating the user.
 * @export
 * @enum {string}
 */
var ItemCreateAuthentication;
(function (ItemCreateAuthentication) {
    ItemCreateAuthentication["Unknown"] = "UNKNOWN";
    ItemCreateAuthentication["DataPartner"] = "DATA_PARTNER";
    ItemCreateAuthentication["Plaid"] = "PLAID";
})(ItemCreateAuthentication = exports.ItemCreateAuthentication || (exports.ItemCreateAuthentication = {}));
/**
    * @export
    * @enum {string}
    */
var ItemWithConsentFieldsUpdateTypeEnum;
(function (ItemWithConsentFieldsUpdateTypeEnum) {
    ItemWithConsentFieldsUpdateTypeEnum["Background"] = "background";
    ItemWithConsentFieldsUpdateTypeEnum["UserPresentRequired"] = "user_present_required";
})(ItemWithConsentFieldsUpdateTypeEnum = exports.ItemWithConsentFieldsUpdateTypeEnum || (exports.ItemWithConsentFieldsUpdateTypeEnum = {}));
/**
 * The delivery method to be used to deliver the Hosted Link session URL.  `SMS`: The URL will be delivered through SMS  `EMAIL`: The URL will be delivered through email
 * @export
 * @enum {string}
 */
var LinkDeliveryDeliveryMethod;
(function (LinkDeliveryDeliveryMethod) {
    LinkDeliveryDeliveryMethod["Sms"] = "SMS";
    LinkDeliveryDeliveryMethod["Email"] = "EMAIL";
})(LinkDeliveryDeliveryMethod = exports.LinkDeliveryDeliveryMethod || (exports.LinkDeliveryDeliveryMethod = {}));
/**
 * The status of the given Hosted Link session.  `CREATED`: The session is created but not yet accessed by the user  `OPENED`: The session is opened by the user but not yet completed  `EXITED`: The session has been exited by the user  `COMPLETED`: The session has been completed by the user  `EXPIRED`: The session has expired
 * @export
 * @enum {string}
 */
var LinkDeliverySessionStatus;
(function (LinkDeliverySessionStatus) {
    LinkDeliverySessionStatus["Created"] = "CREATED";
    LinkDeliverySessionStatus["Opened"] = "OPENED";
    LinkDeliverySessionStatus["Exited"] = "EXITED";
    LinkDeliverySessionStatus["Completed"] = "COMPLETED";
    LinkDeliverySessionStatus["Expired"] = "EXPIRED";
})(LinkDeliverySessionStatus = exports.LinkDeliverySessionStatus || (exports.LinkDeliverySessionStatus = {}));
/**
 * Indicates an Item\'s micro-deposit-based verification or database verification status.
 * @export
 * @enum {string}
 */
var LinkDeliveryVerificationStatus;
(function (LinkDeliveryVerificationStatus) {
    LinkDeliveryVerificationStatus["AutomaticallyVerified"] = "automatically_verified";
    LinkDeliveryVerificationStatus["PendingAutomaticVerification"] = "pending_automatic_verification";
    LinkDeliveryVerificationStatus["PendingManualVerification"] = "pending_manual_verification";
    LinkDeliveryVerificationStatus["ManuallyVerified"] = "manually_verified";
    LinkDeliveryVerificationStatus["VerificationExpired"] = "verification_expired";
    LinkDeliveryVerificationStatus["VerificationFailed"] = "verification_failed";
    LinkDeliveryVerificationStatus["DatabaseMatched"] = "database_matched";
    LinkDeliveryVerificationStatus["DatabaseInsightsPending"] = "database_insights_pending";
})(LinkDeliveryVerificationStatus = exports.LinkDeliveryVerificationStatus || (exports.LinkDeliveryVerificationStatus = {}));
/**
 * The type of Link callback event
 * @export
 * @enum {string}
 */
var LinkDeliveryWebhookCallbackType;
(function (LinkDeliveryWebhookCallbackType) {
    LinkDeliveryWebhookCallbackType["Success"] = "ON_SUCCESS";
    LinkDeliveryWebhookCallbackType["Event"] = "ON_EVENT";
    LinkDeliveryWebhookCallbackType["Exit"] = "ON_EXIT";
})(LinkDeliveryWebhookCallbackType = exports.LinkDeliveryWebhookCallbackType || (exports.LinkDeliveryWebhookCallbackType = {}));
/**
 * The communication method used to deliver the Hosted Link session
 * @export
 * @enum {string}
 */
var LinkDeliveryWebhookCommunicationMethod;
(function (LinkDeliveryWebhookCommunicationMethod) {
    LinkDeliveryWebhookCommunicationMethod["Sms"] = "SMS";
    LinkDeliveryWebhookCommunicationMethod["Email"] = "EMAIL";
})(LinkDeliveryWebhookCommunicationMethod = exports.LinkDeliveryWebhookCommunicationMethod || (exports.LinkDeliveryWebhookCommunicationMethod = {}));
/**
 * The status of the delivery of the Hosted Link to the user
 * @export
 * @enum {string}
 */
var LinkDeliveryWebhookDeliveryStatus;
(function (LinkDeliveryWebhookDeliveryStatus) {
    LinkDeliveryWebhookDeliveryStatus["Success"] = "SUCCESS";
    LinkDeliveryWebhookDeliveryStatus["Failure"] = "FAILURE";
})(LinkDeliveryWebhookDeliveryStatus = exports.LinkDeliveryWebhookDeliveryStatus || (exports.LinkDeliveryWebhookDeliveryStatus = {}));
/**
 * A string representing the event that has just occurred in the Link flow.
 * @export
 * @enum {string}
 */
var LinkEventName;
(function (LinkEventName) {
    LinkEventName["BankIncomeInsightsCompleted"] = "BANK_INCOME_INSIGHTS_COMPLETED";
    LinkEventName["CloseOauth"] = "CLOSE_OAUTH";
    LinkEventName["Error"] = "ERROR";
    LinkEventName["Exit"] = "EXIT";
    LinkEventName["FailOauth"] = "FAIL_OAUTH";
    LinkEventName["Handoff"] = "HANDOFF";
    LinkEventName["IssueFollowed"] = "ISSUE_FOLLOWED";
    LinkEventName["Open"] = "OPEN";
    LinkEventName["OpenMyPlaid"] = "OPEN_MY_PLAID";
    LinkEventName["OpenOauth"] = "OPEN_OAUTH";
    LinkEventName["SearchInstitution"] = "SEARCH_INSTITUTION";
    LinkEventName["SelectAuthType"] = "SELECT_AUTH_TYPE";
    LinkEventName["SelectBrand"] = "SELECT_BRAND";
    LinkEventName["SelectDegradedInstitution"] = "SELECT_DEGRADED_INSTITUTION";
    LinkEventName["SelectDownInstitution"] = "SELECT_DOWN_INSTITUTION";
    LinkEventName["SelectFilteredInstitution"] = "SELECT_FILTERED_INSTITUTION";
    LinkEventName["SelectInstitution"] = "SELECT_INSTITUTION";
    LinkEventName["SubmitAccountNumber"] = "SUBMIT_ACCOUNT_NUMBER";
    LinkEventName["SubmitCredentials"] = "SUBMIT_CREDENTIALS";
    LinkEventName["SubmitDocuments"] = "SUBMIT_DOCUMENTS";
    LinkEventName["SubmitDocumentsError"] = "SUBMIT_DOCUMENTS_ERROR";
    LinkEventName["SubmitDocumentsSuccess"] = "SUBMIT_DOCUMENTS_SUCCESS";
    LinkEventName["SubmitMfa"] = "SUBMIT_MFA";
    LinkEventName["SubmitRoutingNumber"] = "SUBMIT_ROUTING_NUMBER";
    LinkEventName["TransitionView"] = "TRANSITION_VIEW";
    LinkEventName["ViewDataTypes"] = "VIEW_DATA_TYPES";
})(LinkEventName = exports.LinkEventName || (exports.LinkEventName = {}));
/**
 * The status of a transfer. Returned only when [Transfer UI](/docs/transfer/using-transfer-ui) is implemented.  - `COMPLETE` – The transfer was completed. - `INCOMPLETE` – The transfer could not be completed. For help, see [Troubleshooting transfers](/docs/transfer/using-transfer-ui#troubleshooting-transfers).
 * @export
 * @enum {string}
 */
var LinkSessionSuccessMetadataTransferStatus;
(function (LinkSessionSuccessMetadataTransferStatus) {
    LinkSessionSuccessMetadataTransferStatus["Complete"] = "COMPLETE";
    LinkSessionSuccessMetadataTransferStatus["Incomplete"] = "INCOMPLETE";
    LinkSessionSuccessMetadataTransferStatus["Null"] = "null";
})(LinkSessionSuccessMetadataTransferStatus = exports.LinkSessionSuccessMetadataTransferStatus || (exports.LinkSessionSuccessMetadataTransferStatus = {}));
/**
    * @export
    * @enum {string}
    */
var LinkTokenCreateRequestAuthRerouteToCredentialsEnum;
(function (LinkTokenCreateRequestAuthRerouteToCredentialsEnum) {
    LinkTokenCreateRequestAuthRerouteToCredentialsEnum["Off"] = "OFF";
    LinkTokenCreateRequestAuthRerouteToCredentialsEnum["Optional"] = "OPTIONAL";
    LinkTokenCreateRequestAuthRerouteToCredentialsEnum["Forced"] = "FORCED";
})(LinkTokenCreateRequestAuthRerouteToCredentialsEnum = exports.LinkTokenCreateRequestAuthRerouteToCredentialsEnum || (exports.LinkTokenCreateRequestAuthRerouteToCredentialsEnum = {}));
/**
    * @export
    * @enum {string}
    */
var LinkTokenCreateRequestAuthFlowTypeEnum;
(function (LinkTokenCreateRequestAuthFlowTypeEnum) {
    LinkTokenCreateRequestAuthFlowTypeEnum["FlexibleAuth"] = "FLEXIBLE_AUTH";
})(LinkTokenCreateRequestAuthFlowTypeEnum = exports.LinkTokenCreateRequestAuthFlowTypeEnum || (exports.LinkTokenCreateRequestAuthFlowTypeEnum = {}));
/**
 * Valid account subtypes for loan accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-loan).
 * @export
 * @enum {string}
 */
var LoanAccountSubtype;
(function (LoanAccountSubtype) {
    LoanAccountSubtype["Auto"] = "auto";
    LoanAccountSubtype["Business"] = "business";
    LoanAccountSubtype["Commercial"] = "commercial";
    LoanAccountSubtype["Construction"] = "construction";
    LoanAccountSubtype["Consumer"] = "consumer";
    LoanAccountSubtype["HomeEquity"] = "home equity";
    LoanAccountSubtype["Loan"] = "loan";
    LoanAccountSubtype["Mortgage"] = "mortgage";
    LoanAccountSubtype["LineOfCredit"] = "line of credit";
    LoanAccountSubtype["Student"] = "student";
    LoanAccountSubtype["Other"] = "other";
    LoanAccountSubtype["All"] = "all";
})(LoanAccountSubtype = exports.LoanAccountSubtype || (exports.LoanAccountSubtype = {}));
/**
 * A value from a MISMO prescribed list that specifies the type of loan identifier.
 * @export
 * @enum {string}
 */
var LoanIdentifierType;
(function (LoanIdentifierType) {
    LoanIdentifierType["LenderLoan"] = "LenderLoan";
    LoanIdentifierType["UniversalLoan"] = "UniversalLoan";
})(LoanIdentifierType = exports.LoanIdentifierType || (exports.LoanIdentifierType = {}));
/**
 * An enum indicating the match type between data provided by user and data checked against an external data source.   `match` indicates that the provided input data was a strong match against external data.  `partial_match` indicates the data approximately matched against external data. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.  `no_match` indicates that Plaid was able to perform a check against an external data source and it did not match the provided input data.  `no_data` indicates that Plaid was unable to find external data to compare against the provided input data.  `no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user.
 * @export
 * @enum {string}
 */
var MatchSummaryCode;
(function (MatchSummaryCode) {
    MatchSummaryCode["Match"] = "match";
    MatchSummaryCode["PartialMatch"] = "partial_match";
    MatchSummaryCode["NoMatch"] = "no_match";
    MatchSummaryCode["NoData"] = "no_data";
    MatchSummaryCode["NoInput"] = "no_input";
})(MatchSummaryCode = exports.MatchSummaryCode || (exports.MatchSummaryCode = {}));
/**
 * Describes the reason you are generating a Consumer Report for this user.   `ACCOUNT_REVIEW_CREDIT`: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A).  `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan.
 * @export
 * @enum {string}
 */
var MonitoringConsumerReportPermissiblePurpose;
(function (MonitoringConsumerReportPermissiblePurpose) {
    MonitoringConsumerReportPermissiblePurpose["AccountReviewCredit"] = "ACCOUNT_REVIEW_CREDIT";
    MonitoringConsumerReportPermissiblePurpose["WrittenInstructionOther"] = "WRITTEN_INSTRUCTION_OTHER";
})(MonitoringConsumerReportPermissiblePurpose = exports.MonitoringConsumerReportPermissiblePurpose || (exports.MonitoringConsumerReportPermissiblePurpose = {}));
/**
 * Enum for the status of the insights
 * @export
 * @enum {string}
 */
var MonitoringInsightsStatus;
(function (MonitoringInsightsStatus) {
    MonitoringInsightsStatus["Available"] = "AVAILABLE";
    MonitoringInsightsStatus["Failed"] = "FAILED";
    MonitoringInsightsStatus["Pending"] = "PENDING";
    MonitoringInsightsStatus["Unsupported"] = "UNSUPPORTED";
    MonitoringInsightsStatus["Unhealthy"] = "UNHEALTHY";
})(MonitoringInsightsStatus = exports.MonitoringInsightsStatus || (exports.MonitoringInsightsStatus = {}));
/**
 * Enum for the status of the Item\'s insights
 * @export
 * @enum {string}
 */
var MonitoringItemStatusCode;
(function (MonitoringItemStatusCode) {
    MonitoringItemStatusCode["Available"] = "AVAILABLE";
    MonitoringItemStatusCode["Failed"] = "FAILED";
    MonitoringItemStatusCode["Pending"] = "PENDING";
    MonitoringItemStatusCode["ItemNotSupported"] = "ITEM_NOT_SUPPORTED";
    MonitoringItemStatusCode["ItemLoginRequired"] = "ITEM_LOGIN_REQUIRED";
})(MonitoringItemStatusCode = exports.MonitoringItemStatusCode || (exports.MonitoringItemStatusCode = {}));
/**
 * Enum representing the overall network status of the user.
 * @export
 * @enum {string}
 */
var NetworkStatusGetResponseNetworkStatus;
(function (NetworkStatusGetResponseNetworkStatus) {
    NetworkStatusGetResponseNetworkStatus["Unknown"] = "UNKNOWN";
    NetworkStatusGetResponseNetworkStatus["ReturningUser"] = "RETURNING_USER";
})(NetworkStatusGetResponseNetworkStatus = exports.NetworkStatusGetResponseNetworkStatus || (exports.NetworkStatusGetResponseNetworkStatus = {}));
/**
 * The type of transfer. Valid values are `debit` or `credit`.  A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account. This field is omitted for Plaid Ledger Sweep events.
 * @export
 * @enum {string}
 */
var OmittableTransferType;
(function (OmittableTransferType) {
    OmittableTransferType["Debit"] = "debit";
    OmittableTransferType["Credit"] = "credit";
})(OmittableTransferType = exports.OmittableTransferType || (exports.OmittableTransferType = {}));
/**
 * The originator\'s expected transfer frequency.
 * @export
 * @enum {string}
 */
var OriginatorExpectedTransferFrequency;
(function (OriginatorExpectedTransferFrequency) {
    OriginatorExpectedTransferFrequency["OncePerMonth"] = "once_per_month";
    OriginatorExpectedTransferFrequency["TwicePerMonth"] = "twice_per_month";
    OriginatorExpectedTransferFrequency["OncePerWeek"] = "once_per_week";
    OriginatorExpectedTransferFrequency["Daily"] = "daily";
})(OriginatorExpectedTransferFrequency = exports.OriginatorExpectedTransferFrequency || (exports.OriginatorExpectedTransferFrequency = {}));
/**
 * Valid account subtypes for other accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-other).
 * @export
 * @enum {string}
 */
var OtherAccountSubtype;
(function (OtherAccountSubtype) {
    OtherAccountSubtype["Other"] = "other";
    OtherAccountSubtype["All"] = "all";
})(OtherAccountSubtype = exports.OtherAccountSubtype || (exports.OtherAccountSubtype = {}));
/**
 * `investment:` Investment account.  `credit:` Credit card  `depository:` Depository account  `loan:` Loan account  `payroll:` Payroll account  `other:` Non-specified account type  See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
 * @export
 * @enum {string}
 */
var OverrideAccountType;
(function (OverrideAccountType) {
    OverrideAccountType["Investment"] = "investment";
    OverrideAccountType["Credit"] = "credit";
    OverrideAccountType["Depository"] = "depository";
    OverrideAccountType["Loan"] = "loan";
    OverrideAccountType["Payroll"] = "payroll";
    OverrideAccountType["Other"] = "other";
})(OverrideAccountType = exports.OverrideAccountType || (exports.OverrideAccountType = {}));
/**
 * How an asset is owned.  `association`: Ownership by a corporation, partnership, or unincorporated association, including for-profit and not-for-profit organizations. `individual`: Ownership by an individual. `joint`: Joint ownership by multiple parties. `trust`: Ownership by a revocable or irrevocable trust.
 * @export
 * @enum {string}
 */
var OwnershipType;
(function (OwnershipType) {
    OwnershipType["Null"] = "null";
    OwnershipType["Individual"] = "individual";
    OwnershipType["Joint"] = "joint";
    OwnershipType["Association"] = "association";
    OwnershipType["Trust"] = "trust";
})(OwnershipType = exports.OwnershipType || (exports.OwnershipType = {}));
/**
 * Field describing whether the associated address is a post office box. Will be `yes` when a P.O. box is detected, `no` when Plaid confirmed the address is not a P.O. box, and `no_data` when Plaid was not able to determine if the address is a P.O. box.
 * @export
 * @enum {string}
 */
var POBoxStatus;
(function (POBoxStatus) {
    POBoxStatus["Yes"] = "yes";
    POBoxStatus["No"] = "no";
    POBoxStatus["NoData"] = "no_data";
})(POBoxStatus = exports.POBoxStatus || (exports.POBoxStatus = {}));
/**
 * The status of the addendum to the Plaid MSA (\"flowdown\") for the end customer.
 * @export
 * @enum {string}
 */
var PartnerEndCustomerFlowdownStatus;
(function (PartnerEndCustomerFlowdownStatus) {
    PartnerEndCustomerFlowdownStatus["NotStarted"] = "NOT_STARTED";
    PartnerEndCustomerFlowdownStatus["InReview"] = "IN_REVIEW";
    PartnerEndCustomerFlowdownStatus["Negotiation"] = "NEGOTIATION";
    PartnerEndCustomerFlowdownStatus["Complete"] = "COMPLETE";
})(PartnerEndCustomerFlowdownStatus = exports.PartnerEndCustomerFlowdownStatus || (exports.PartnerEndCustomerFlowdownStatus = {}));
/**
 * The registration status for the end customer\'s application.
 * @export
 * @enum {string}
 */
var PartnerEndCustomerOAuthInstitutionApplicationStatus;
(function (PartnerEndCustomerOAuthInstitutionApplicationStatus) {
    PartnerEndCustomerOAuthInstitutionApplicationStatus["NotStarted"] = "NOT_STARTED";
    PartnerEndCustomerOAuthInstitutionApplicationStatus["Processing"] = "PROCESSING";
    PartnerEndCustomerOAuthInstitutionApplicationStatus["Approved"] = "APPROVED";
    PartnerEndCustomerOAuthInstitutionApplicationStatus["Enabled"] = "ENABLED";
    PartnerEndCustomerOAuthInstitutionApplicationStatus["AttentionRequired"] = "ATTENTION_REQUIRED";
})(PartnerEndCustomerOAuthInstitutionApplicationStatus = exports.PartnerEndCustomerOAuthInstitutionApplicationStatus || (exports.PartnerEndCustomerOAuthInstitutionApplicationStatus = {}));
/**
 * The OAuth status of the update
 * @export
 * @enum {string}
 */
var PartnerEndCustomerOAuthStatusUpdatedValues;
(function (PartnerEndCustomerOAuthStatusUpdatedValues) {
    PartnerEndCustomerOAuthStatusUpdatedValues["NotStarted"] = "not-started";
    PartnerEndCustomerOAuthStatusUpdatedValues["Processing"] = "processing";
    PartnerEndCustomerOAuthStatusUpdatedValues["Approved"] = "approved";
    PartnerEndCustomerOAuthStatusUpdatedValues["Enabled"] = "enabled";
    PartnerEndCustomerOAuthStatusUpdatedValues["AttentionRequired"] = "attention-required";
})(PartnerEndCustomerOAuthStatusUpdatedValues = exports.PartnerEndCustomerOAuthStatusUpdatedValues || (exports.PartnerEndCustomerOAuthStatusUpdatedValues = {}));
/**
 * The status of the end customer\'s security questionnaire.
 * @export
 * @enum {string}
 */
var PartnerEndCustomerQuestionnaireStatus;
(function (PartnerEndCustomerQuestionnaireStatus) {
    PartnerEndCustomerQuestionnaireStatus["NotStarted"] = "NOT_STARTED";
    PartnerEndCustomerQuestionnaireStatus["Received"] = "RECEIVED";
    PartnerEndCustomerQuestionnaireStatus["Complete"] = "COMPLETE";
})(PartnerEndCustomerQuestionnaireStatus = exports.PartnerEndCustomerQuestionnaireStatus || (exports.PartnerEndCustomerQuestionnaireStatus = {}));
/**
 * The status of the given end customer.  `UNDER_REVIEW`: The end customer has been created and enabled in Sandbox and Limited Production. The end customer must be manually reviewed by the Plaid team before it can be enabled in full production, at which point its status will automatically transition to `PENDING_ENABLEMENT` or `DENIED`.  `PENDING_ENABLEMENT`: The end customer is ready to be fully enabled in the Production environment. Call the `/partner/customer/enable` endpoint to enable the end customer in full Production.  `ACTIVE`: The end customer has been fully enabled in all environments.  `DENIED`: The end customer has been created and enabled in Sandbox and Limited Production, but it did not pass review by the Plaid team and therefore cannot be enabled for full Production access. Talk to your Account Manager for more information.
 * @export
 * @enum {string}
 */
var PartnerEndCustomerStatus;
(function (PartnerEndCustomerStatus) {
    PartnerEndCustomerStatus["UnderReview"] = "UNDER_REVIEW";
    PartnerEndCustomerStatus["PendingEnablement"] = "PENDING_ENABLEMENT";
    PartnerEndCustomerStatus["Active"] = "ACTIVE";
    PartnerEndCustomerStatus["Denied"] = "DENIED";
})(PartnerEndCustomerStatus = exports.PartnerEndCustomerStatus || (exports.PartnerEndCustomerStatus = {}));
/**
 * A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction.A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction.
 * @export
 * @enum {string}
 */
var PartyRoleType;
(function (PartyRoleType) {
    PartyRoleType["Borrower"] = "Borrower";
})(PartyRoleType = exports.PartyRoleType || (exports.PartyRoleType = {}));
/**
 * The frequency of the pay period.
 * @export
 * @enum {string}
 */
var PayFrequencyValue;
(function (PayFrequencyValue) {
    PayFrequencyValue["Monthly"] = "monthly";
    PayFrequencyValue["Semimonthly"] = "semimonthly";
    PayFrequencyValue["Weekly"] = "weekly";
    PayFrequencyValue["Biweekly"] = "biweekly";
    PayFrequencyValue["Unknown"] = "unknown";
    PayFrequencyValue["Null"] = "null";
})(PayFrequencyValue = exports.PayFrequencyValue || (exports.PayFrequencyValue = {}));
/**
 * The frequency at which an individual is paid.
 * @export
 * @enum {string}
 */
var PayPeriodDetailsPayFrequency;
(function (PayPeriodDetailsPayFrequency) {
    PayPeriodDetailsPayFrequency["PayFrequencyUnknown"] = "PAY_FREQUENCY_UNKNOWN";
    PayPeriodDetailsPayFrequency["PayFrequencyWeekly"] = "PAY_FREQUENCY_WEEKLY";
    PayPeriodDetailsPayFrequency["PayFrequencyBiweekly"] = "PAY_FREQUENCY_BIWEEKLY";
    PayPeriodDetailsPayFrequency["PayFrequencySemimonthly"] = "PAY_FREQUENCY_SEMIMONTHLY";
    PayPeriodDetailsPayFrequency["PayFrequencyMonthly"] = "PAY_FREQUENCY_MONTHLY";
    PayPeriodDetailsPayFrequency["Null"] = "null";
})(PayPeriodDetailsPayFrequency = exports.PayPeriodDetailsPayFrequency || (exports.PayPeriodDetailsPayFrequency = {}));
/**
 * The ISO-4217 currency code of the payment. For standing orders and payment consents, `\"GBP\"` must be used. For Poland, Denmark, Sweden and Norway, only the local currency is currently supported.
 * @export
 * @enum {string}
 */
var PaymentAmountCurrency;
(function (PaymentAmountCurrency) {
    PaymentAmountCurrency["Gbp"] = "GBP";
    PaymentAmountCurrency["Eur"] = "EUR";
    PaymentAmountCurrency["Pln"] = "PLN";
    PaymentAmountCurrency["Sek"] = "SEK";
    PaymentAmountCurrency["Dkk"] = "DKK";
    PaymentAmountCurrency["Nok"] = "NOK";
})(PaymentAmountCurrency = exports.PaymentAmountCurrency || (exports.PaymentAmountCurrency = {}));
/**
 * The channel used to make a payment. `online:` transactions that took place online.  `in store:` transactions that were made at a physical location.  `other:` transactions that relate to banks, e.g. fees or deposits.
 * @export
 * @enum {string}
 */
var PaymentChannel;
(function (PaymentChannel) {
    PaymentChannel["Online"] = "online";
    PaymentChannel["InStore"] = "in store";
    PaymentChannel["Other"] = "other";
})(PaymentChannel = exports.PaymentChannel || (exports.PaymentChannel = {}));
/**
 * Where the payment consent period should start.  If the institution is Monzo, only `CONSENT` alignments are supported.  `CALENDAR`: line up with a calendar.  `CONSENT`: on the date of consent creation.
 * @export
 * @enum {string}
 */
var PaymentConsentPeriodicAlignment;
(function (PaymentConsentPeriodicAlignment) {
    PaymentConsentPeriodicAlignment["Calendar"] = "CALENDAR";
    PaymentConsentPeriodicAlignment["Consent"] = "CONSENT";
})(PaymentConsentPeriodicAlignment = exports.PaymentConsentPeriodicAlignment || (exports.PaymentConsentPeriodicAlignment = {}));
/**
 * Payment consent periodic interval.
 * @export
 * @enum {string}
 */
var PaymentConsentPeriodicInterval;
(function (PaymentConsentPeriodicInterval) {
    PaymentConsentPeriodicInterval["Day"] = "DAY";
    PaymentConsentPeriodicInterval["Week"] = "WEEK";
    PaymentConsentPeriodicInterval["Month"] = "MONTH";
    PaymentConsentPeriodicInterval["Year"] = "YEAR";
})(PaymentConsentPeriodicInterval = exports.PaymentConsentPeriodicInterval || (exports.PaymentConsentPeriodicInterval = {}));
/**
 * Decides the mode under which the payment processing should be performed, using `IMMEDIATE` as default.  `IMMEDIATE`: Will immediately execute the payment, waiting for a response from the ASPSP before returning the result of the payment initiation. This is ideal for user-present flows.   `ASYNC`: Will accept a payment execution request and schedule it for processing, immediately returning the new `payment_id`. Listen for webhooks or use the [`/payment_initiation/payment/get`](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationpaymentget) endpoint to obtain updates on the payment status. This is ideal for non user-present flows.
 * @export
 * @enum {string}
 */
var PaymentInitiationConsentProcessingMode;
(function (PaymentInitiationConsentProcessingMode) {
    PaymentInitiationConsentProcessingMode["Async"] = "ASYNC";
    PaymentInitiationConsentProcessingMode["Immediate"] = "IMMEDIATE";
})(PaymentInitiationConsentProcessingMode = exports.PaymentInitiationConsentProcessingMode || (exports.PaymentInitiationConsentProcessingMode = {}));
/**
 * This field is deprecated in favor of the consent `type` field. Consents are required to have a single type.   Payment consent scope. Defines possible directions for payments made with the given consent.  `ME_TO_ME`: Allows moving money between accounts owned by the same user.  `EXTERNAL`: Allows initiating payments from the user\'s account to third parties.
 * @export
 * @enum {string}
 */
var PaymentInitiationConsentScope;
(function (PaymentInitiationConsentScope) {
    PaymentInitiationConsentScope["MeToMe"] = "ME_TO_ME";
    PaymentInitiationConsentScope["External"] = "EXTERNAL";
})(PaymentInitiationConsentScope = exports.PaymentInitiationConsentScope || (exports.PaymentInitiationConsentScope = {}));
/**
 * The status of the payment consent.  `UNAUTHORISED`: Consent created, but requires user authorisation.  `REJECTED`: Consent authorisation was rejected by the user and/or the bank.  `AUTHORISED`: Consent is active and ready to be used.  `REVOKED`: Consent has been revoked and can no longer be used.  `EXPIRED`: Consent is no longer valid.
 * @export
 * @enum {string}
 */
var PaymentInitiationConsentStatus;
(function (PaymentInitiationConsentStatus) {
    PaymentInitiationConsentStatus["Unauthorised"] = "UNAUTHORISED";
    PaymentInitiationConsentStatus["Authorised"] = "AUTHORISED";
    PaymentInitiationConsentStatus["Revoked"] = "REVOKED";
    PaymentInitiationConsentStatus["Rejected"] = "REJECTED";
    PaymentInitiationConsentStatus["Expired"] = "EXPIRED";
})(PaymentInitiationConsentStatus = exports.PaymentInitiationConsentStatus || (exports.PaymentInitiationConsentStatus = {}));
/**
 * Payment consent type. Defines possible use case for payments made with the given consent.  `SWEEPING`: Allows moving money between accounts owned by the same user.  `COMMERCIAL`: Allows initiating payments from the user\'s account to third parties.
 * @export
 * @enum {string}
 */
var PaymentInitiationConsentType;
(function (PaymentInitiationConsentType) {
    PaymentInitiationConsentType["Sweeping"] = "SWEEPING";
    PaymentInitiationConsentType["Commercial"] = "COMMERCIAL";
})(PaymentInitiationConsentType = exports.PaymentInitiationConsentType || (exports.PaymentInitiationConsentType = {}));
/**
 * For a payment returned by this endpoint, there is only one possible value:  `PAYMENT_STATUS_INPUT_NEEDED`: The initial phase of the payment
 * @export
 * @enum {string}
 */
var PaymentInitiationPaymentCreateStatus;
(function (PaymentInitiationPaymentCreateStatus) {
    PaymentInitiationPaymentCreateStatus["PaymentStatusInputNeeded"] = "PAYMENT_STATUS_INPUT_NEEDED";
})(PaymentInitiationPaymentCreateStatus = exports.PaymentInitiationPaymentCreateStatus || (exports.PaymentInitiationPaymentCreateStatus = {}));
/**
 * The status of the payment.  `PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.  `PAYMENT_STATUS_INITIATED`: The payment has been successfully authorised and accepted by the financial institution. For successful payments, this is a potential terminal status. Further status transitions can be to REJECTED and, when supported by the institution, to EXECUTED.  `PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.  `PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error may be caused by transient system outages and is retryable once the root cause is resolved.  `PAYMENT_STATUS_BLOCKED`: The payment has been blocked by Plaid. This can occur, for example, due to Plaid flagging the payment as potentially risky. This is a retryable error.  `PAYMENT_STATUS_AUTHORISING`: The payment is currently being processed. The payment will automatically exit this state when the financial institution has authorised the transaction.  `PAYMENT_STATUS_CANCELLED`: The payment was cancelled (typically by the end user) during authorisation.  `PAYMENT_STATUS_EXECUTED`: The funds have successfully left the payer account and payment is considered complete. Not all institutions support this status: support is more common in the UK, and less common in the EU. For institutions where this status is not supported, the terminal status for a successful payment will be `PAYMENT_STATUS_INITIATED`.  `PAYMENT_STATUS_SETTLED`: The payment has settled and funds are available for use. A payment will typically settle within seconds to several days, depending on which payment rail is used. This status is only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/virtual-accounts/).  `PAYMENT_STATUS_ESTABLISHED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.  `PAYMENT_STATUS_REJECTED`: The payment was rejected by the financial institution.  Deprecated: These statuses will be removed in a future release.  `PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.  `PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.  `PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.
 * @export
 * @enum {string}
 */
var PaymentInitiationPaymentStatus;
(function (PaymentInitiationPaymentStatus) {
    PaymentInitiationPaymentStatus["InputNeeded"] = "PAYMENT_STATUS_INPUT_NEEDED";
    PaymentInitiationPaymentStatus["Processing"] = "PAYMENT_STATUS_PROCESSING";
    PaymentInitiationPaymentStatus["Initiated"] = "PAYMENT_STATUS_INITIATED";
    PaymentInitiationPaymentStatus["Completed"] = "PAYMENT_STATUS_COMPLETED";
    PaymentInitiationPaymentStatus["InsufficientFunds"] = "PAYMENT_STATUS_INSUFFICIENT_FUNDS";
    PaymentInitiationPaymentStatus["Failed"] = "PAYMENT_STATUS_FAILED";
    PaymentInitiationPaymentStatus["Blocked"] = "PAYMENT_STATUS_BLOCKED";
    PaymentInitiationPaymentStatus["Unknown"] = "PAYMENT_STATUS_UNKNOWN";
    PaymentInitiationPaymentStatus["Executed"] = "PAYMENT_STATUS_EXECUTED";
    PaymentInitiationPaymentStatus["Settled"] = "PAYMENT_STATUS_SETTLED";
    PaymentInitiationPaymentStatus["Authorising"] = "PAYMENT_STATUS_AUTHORISING";
    PaymentInitiationPaymentStatus["Cancelled"] = "PAYMENT_STATUS_CANCELLED";
    PaymentInitiationPaymentStatus["Established"] = "PAYMENT_STATUS_ESTABLISHED";
    PaymentInitiationPaymentStatus["Rejected"] = "PAYMENT_STATUS_REJECTED";
})(PaymentInitiationPaymentStatus = exports.PaymentInitiationPaymentStatus || (exports.PaymentInitiationPaymentStatus = {}));
/**
 * The status of the given Payment Profile.  `READY`: This Payment Profile is ready to be used to create transfers using `/transfer/authorization/create` and `/transfer/create`.  `PENDING`: This Payment Profile is not ready to be used. You’ll need to call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field to initiate the account linking experience.  `REMOVED`: This Payment Profile has been removed.
 * @export
 * @enum {string}
 */
var PaymentProfileStatus;
(function (PaymentProfileStatus) {
    PaymentProfileStatus["Pending"] = "PENDING";
    PaymentProfileStatus["Ready"] = "READY";
    PaymentProfileStatus["Removed"] = "REMOVED";
})(PaymentProfileStatus = exports.PaymentProfileStatus || (exports.PaymentProfileStatus = {}));
/**
 * The frequency interval of the payment.
 * @export
 * @enum {string}
 */
var PaymentScheduleInterval;
(function (PaymentScheduleInterval) {
    PaymentScheduleInterval["Weekly"] = "WEEKLY";
    PaymentScheduleInterval["Monthly"] = "MONTHLY";
})(PaymentScheduleInterval = exports.PaymentScheduleInterval || (exports.PaymentScheduleInterval = {}));
/**
 * Payment scheme. If not specified - the default in the region will be used (e.g. `SEPA_CREDIT_TRANSFER` for EU). Using unsupported values will result in a failed payment.  `LOCAL_DEFAULT`: The default payment scheme for the selected market and currency will be used.  `LOCAL_INSTANT`: The instant payment scheme for the selected market and currency will be used (if applicable). Fees may be applied by the institution. If the market does not support an Instant Scheme (e.g. Denmark), the default in the region will be used.  `SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area.  `SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks.
 * @export
 * @enum {string}
 */
var PaymentScheme;
(function (PaymentScheme) {
    PaymentScheme["Null"] = "null";
    PaymentScheme["LocalDefault"] = "LOCAL_DEFAULT";
    PaymentScheme["LocalInstant"] = "LOCAL_INSTANT";
    PaymentScheme["SepaCreditTransfer"] = "SEPA_CREDIT_TRANSFER";
    PaymentScheme["SepaCreditTransferInstant"] = "SEPA_CREDIT_TRANSFER_INSTANT";
})(PaymentScheme = exports.PaymentScheme || (exports.PaymentScheme = {}));
/**
 * The frequency at which the employee is paid. Possible values: `MONTHLY`, `BI-WEEKLY`, `WEEKLY`, `SEMI-MONTHLY`.
 * @export
 * @enum {string}
 */
var PaystubPayFrequency;
(function (PaystubPayFrequency) {
    PaystubPayFrequency["Monthly"] = "MONTHLY";
    PaystubPayFrequency["BiWeekly"] = "BI-WEEKLY";
    PaystubPayFrequency["Weekly"] = "WEEKLY";
    PaystubPayFrequency["SemiMonthly"] = "SEMI-MONTHLY";
    PaystubPayFrequency["Null"] = "null";
})(PaystubPayFrequency = exports.PaystubPayFrequency || (exports.PaystubPayFrequency = {}));
/**
 * Reason why the item is about to be disconnected. `INSTITUTION_MIGRATION`: The institution is moving to API or to a different integration. For example, this can occur when an institution moves from a non-OAuth integration to an OAuth integration. `INSTITUTION_TOKEN_EXPIRATION`: The consent on an Item associated with a US or CA institution is about to expire.
 * @export
 * @enum {string}
 */
var PendingDisconnectWebhookReason;
(function (PendingDisconnectWebhookReason) {
    PendingDisconnectWebhookReason["Migration"] = "INSTITUTION_MIGRATION";
    PendingDisconnectWebhookReason["TokenExpiration"] = "INSTITUTION_TOKEN_EXPIRATION";
})(PendingDisconnectWebhookReason = exports.PendingDisconnectWebhookReason || (exports.PendingDisconnectWebhookReason = {}));
/**
    * @export
    * @enum {string}
    */
var PhoneNumberTypeEnum;
(function (PhoneNumberTypeEnum) {
    PhoneNumberTypeEnum["Home"] = "home";
    PhoneNumberTypeEnum["Work"] = "work";
    PhoneNumberTypeEnum["Office"] = "office";
    PhoneNumberTypeEnum["Mobile"] = "mobile";
    PhoneNumberTypeEnum["Mobile1"] = "mobile1";
    PhoneNumberTypeEnum["Other"] = "other";
})(PhoneNumberTypeEnum = exports.PhoneNumberTypeEnum || (exports.PhoneNumberTypeEnum = {}));
/**
 * An enum indicating whether a phone number is a phone line or a fax line.
 * @export
 * @enum {string}
 */
var PhoneType;
(function (PhoneType) {
    PhoneType["Phone"] = "phone";
    PhoneType["Fax"] = "fax";
})(PhoneType = exports.PhoneType || (exports.PhoneType = {}));
/**
 * The type of identity document detected in the images provided. Will always be one of the following values:    `drivers_license` - A driver\'s license issued by the associated country, establishing identity without any guarantee as to citizenship, and granting driving privileges    `id_card` - A general national identification card, distinct from driver\'s licenses as it only establishes identity    `passport` - A travel passport issued by the associated country for one of its citizens    `residence_permit_card` - An identity document issued by the associated country permitting a foreign citizen to <em>temporarily</em> reside there    `resident_card` - An identity document issued by the associated country permitting a foreign citizen to <em>permanently</em> reside there    `visa` - An identity document issued by the associated country permitting a foreign citizen entry for a short duration and for a specific purpose, typically no longer than 6 months  Note: This value may be different from the ID type that the user selects within Link. For example, if they select \"Driver\'s License\" but then submit a picture of a passport, this field will say `passport`
 * @export
 * @enum {string}
 */
var PhysicalDocumentCategory;
(function (PhysicalDocumentCategory) {
    PhysicalDocumentCategory["DriversLicense"] = "drivers_license";
    PhysicalDocumentCategory["IdCard"] = "id_card";
    PhysicalDocumentCategory["Passport"] = "passport";
    PhysicalDocumentCategory["ResidencePermitCard"] = "residence_permit_card";
    PhysicalDocumentCategory["ResidentCard"] = "resident_card";
    PhysicalDocumentCategory["Visa"] = "visa";
})(PhysicalDocumentCategory = exports.PhysicalDocumentCategory || (exports.PhysicalDocumentCategory = {}));
/**
 * A broad categorization of the error. Safe for programmatic use.
 * @export
 * @enum {string}
 */
var PlaidErrorType;
(function (PlaidErrorType) {
    PlaidErrorType["InvalidRequest"] = "INVALID_REQUEST";
    PlaidErrorType["InvalidResult"] = "INVALID_RESULT";
    PlaidErrorType["InvalidInput"] = "INVALID_INPUT";
    PlaidErrorType["InstitutionError"] = "INSTITUTION_ERROR";
    PlaidErrorType["RateLimitExceeded"] = "RATE_LIMIT_EXCEEDED";
    PlaidErrorType["ApiError"] = "API_ERROR";
    PlaidErrorType["ItemError"] = "ITEM_ERROR";
    PlaidErrorType["AssetReportError"] = "ASSET_REPORT_ERROR";
    PlaidErrorType["RecaptchaError"] = "RECAPTCHA_ERROR";
    PlaidErrorType["OauthError"] = "OAUTH_ERROR";
    PlaidErrorType["PaymentError"] = "PAYMENT_ERROR";
    PlaidErrorType["BankTransferError"] = "BANK_TRANSFER_ERROR";
    PlaidErrorType["IncomeVerificationError"] = "INCOME_VERIFICATION_ERROR";
    PlaidErrorType["MicrodepositsError"] = "MICRODEPOSITS_ERROR";
    PlaidErrorType["SandboxError"] = "SANDBOX_ERROR";
    PlaidErrorType["PartnerError"] = "PARTNER_ERROR";
    PlaidErrorType["TransactionsError"] = "TRANSACTIONS_ERROR";
    PlaidErrorType["TransactionError"] = "TRANSACTION_ERROR";
    PlaidErrorType["TransferError"] = "TRANSFER_ERROR";
})(PlaidErrorType = exports.PlaidErrorType || (exports.PlaidErrorType = {}));
/**
 * The version of Prism CashScore. If not specified, will default to v3.
 * @export
 * @enum {string}
 */
var PrismCashScoreVersion;
(function (PrismCashScoreVersion) {
    PrismCashScoreVersion["_3Lite"] = "3_lite";
    PrismCashScoreVersion["_3"] = "3";
    PrismCashScoreVersion["Null"] = "null";
})(PrismCashScoreVersion = exports.PrismCashScoreVersion || (exports.PrismCashScoreVersion = {}));
/**
 * The version of Prism FirstDetect. If not specified, will default to v3.
 * @export
 * @enum {string}
 */
var PrismFirstDetectVersion;
(function (PrismFirstDetectVersion) {
    PrismFirstDetectVersion["_3"] = "3";
    PrismFirstDetectVersion["Null"] = "null";
})(PrismFirstDetectVersion = exports.PrismFirstDetectVersion || (exports.PrismFirstDetectVersion = {}));
/**
 * The version of Prism Insights. If not specified, will default to v3.
 * @export
 * @enum {string}
 */
var PrismInsightsVersion;
(function (PrismInsightsVersion) {
    PrismInsightsVersion["_3"] = "3";
    PrismInsightsVersion["Null"] = "null";
})(PrismInsightsVersion = exports.PrismInsightsVersion || (exports.PrismInsightsVersion = {}));
/**
 * The Prism products that can be returned by the Plaid API
 * @export
 * @enum {string}
 */
var PrismProduct;
(function (PrismProduct) {
    PrismProduct["Insights"] = "insights";
    PrismProduct["Scores"] = "scores";
})(PrismProduct = exports.PrismProduct || (exports.PrismProduct = {}));
/**
    * @export
    * @enum {string}
    */
var ProcessorTokenCreateRequestProcessorEnum;
(function (ProcessorTokenCreateRequestProcessorEnum) {
    ProcessorTokenCreateRequestProcessorEnum["Dwolla"] = "dwolla";
    ProcessorTokenCreateRequestProcessorEnum["Galileo"] = "galileo";
    ProcessorTokenCreateRequestProcessorEnum["ModernTreasury"] = "modern_treasury";
    ProcessorTokenCreateRequestProcessorEnum["Ocrolus"] = "ocrolus";
    ProcessorTokenCreateRequestProcessorEnum["Vesta"] = "vesta";
    ProcessorTokenCreateRequestProcessorEnum["Drivewealth"] = "drivewealth";
    ProcessorTokenCreateRequestProcessorEnum["Vopay"] = "vopay";
    ProcessorTokenCreateRequestProcessorEnum["Achq"] = "achq";
    ProcessorTokenCreateRequestProcessorEnum["Check"] = "check";
    ProcessorTokenCreateRequestProcessorEnum["Checkbook"] = "checkbook";
    ProcessorTokenCreateRequestProcessorEnum["Circle"] = "circle";
    ProcessorTokenCreateRequestProcessorEnum["SilaMoney"] = "sila_money";
    ProcessorTokenCreateRequestProcessorEnum["Rize"] = "rize";
    ProcessorTokenCreateRequestProcessorEnum["SvbApi"] = "svb_api";
    ProcessorTokenCreateRequestProcessorEnum["Unit"] = "unit";
    ProcessorTokenCreateRequestProcessorEnum["Wyre"] = "wyre";
    ProcessorTokenCreateRequestProcessorEnum["Lithic"] = "lithic";
    ProcessorTokenCreateRequestProcessorEnum["Alpaca"] = "alpaca";
    ProcessorTokenCreateRequestProcessorEnum["Astra"] = "astra";
    ProcessorTokenCreateRequestProcessorEnum["Moov"] = "moov";
    ProcessorTokenCreateRequestProcessorEnum["TreasuryPrime"] = "treasury_prime";
    ProcessorTokenCreateRequestProcessorEnum["Marqeta"] = "marqeta";
    ProcessorTokenCreateRequestProcessorEnum["Checkout"] = "checkout";
    ProcessorTokenCreateRequestProcessorEnum["Solid"] = "solid";
    ProcessorTokenCreateRequestProcessorEnum["Highnote"] = "highnote";
    ProcessorTokenCreateRequestProcessorEnum["Gemini"] = "gemini";
    ProcessorTokenCreateRequestProcessorEnum["ApexClearing"] = "apex_clearing";
    ProcessorTokenCreateRequestProcessorEnum["Gusto"] = "gusto";
    ProcessorTokenCreateRequestProcessorEnum["Adyen"] = "adyen";
    ProcessorTokenCreateRequestProcessorEnum["Atomic"] = "atomic";
    ProcessorTokenCreateRequestProcessorEnum["I2c"] = "i2c";
    ProcessorTokenCreateRequestProcessorEnum["Wepay"] = "wepay";
    ProcessorTokenCreateRequestProcessorEnum["Riskified"] = "riskified";
    ProcessorTokenCreateRequestProcessorEnum["Utb"] = "utb";
    ProcessorTokenCreateRequestProcessorEnum["AdpRoll"] = "adp_roll";
    ProcessorTokenCreateRequestProcessorEnum["FortressTrust"] = "fortress_trust";
    ProcessorTokenCreateRequestProcessorEnum["Bond"] = "bond";
    ProcessorTokenCreateRequestProcessorEnum["Bakkt"] = "bakkt";
    ProcessorTokenCreateRequestProcessorEnum["Teal"] = "teal";
    ProcessorTokenCreateRequestProcessorEnum["ZeroHash"] = "zero_hash";
    ProcessorTokenCreateRequestProcessorEnum["TabaPay"] = "taba_pay";
    ProcessorTokenCreateRequestProcessorEnum["Knot"] = "knot";
    ProcessorTokenCreateRequestProcessorEnum["Sardine"] = "sardine";
    ProcessorTokenCreateRequestProcessorEnum["Alloy"] = "alloy";
    ProcessorTokenCreateRequestProcessorEnum["Finix"] = "finix";
    ProcessorTokenCreateRequestProcessorEnum["Nuvei"] = "nuvei";
    ProcessorTokenCreateRequestProcessorEnum["Layer"] = "layer";
    ProcessorTokenCreateRequestProcessorEnum["Boom"] = "boom";
    ProcessorTokenCreateRequestProcessorEnum["Paynote"] = "paynote";
    ProcessorTokenCreateRequestProcessorEnum["Stake"] = "stake";
    ProcessorTokenCreateRequestProcessorEnum["Wedbush"] = "wedbush";
    ProcessorTokenCreateRequestProcessorEnum["Esusu"] = "esusu";
    ProcessorTokenCreateRequestProcessorEnum["Ansa"] = "ansa";
    ProcessorTokenCreateRequestProcessorEnum["Scribeup"] = "scribeup";
    ProcessorTokenCreateRequestProcessorEnum["Straddle"] = "straddle";
    ProcessorTokenCreateRequestProcessorEnum["Loanpro"] = "loanpro";
})(ProcessorTokenCreateRequestProcessorEnum = exports.ProcessorTokenCreateRequestProcessorEnum || (exports.ProcessorTokenCreateRequestProcessorEnum = {}));
/**
    * @export
    * @enum {string}
    */
var ProductStatusStatusEnum;
(function (ProductStatusStatusEnum) {
    ProductStatusStatusEnum["Healthy"] = "HEALTHY";
    ProductStatusStatusEnum["Degraded"] = "DEGRADED";
    ProductStatusStatusEnum["Down"] = "DOWN";
})(ProductStatusStatusEnum = exports.ProductStatusStatusEnum || (exports.ProductStatusStatusEnum = {}));
/**
    * @export
    * @enum {string}
    */
var ProductStatusBreakdownRefreshIntervalEnum;
(function (ProductStatusBreakdownRefreshIntervalEnum) {
    ProductStatusBreakdownRefreshIntervalEnum["Normal"] = "NORMAL";
    ProductStatusBreakdownRefreshIntervalEnum["Delayed"] = "DELAYED";
    ProductStatusBreakdownRefreshIntervalEnum["Stopped"] = "STOPPED";
})(ProductStatusBreakdownRefreshIntervalEnum = exports.ProductStatusBreakdownRefreshIntervalEnum || (exports.ProductStatusBreakdownRefreshIntervalEnum = {}));
/**
 * A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.
 * @export
 * @enum {string}
 */
var Products;
(function (Products) {
    Products["Assets"] = "assets";
    Products["Auth"] = "auth";
    Products["Balance"] = "balance";
    Products["BalancePlus"] = "balance_plus";
    Products["Beacon"] = "beacon";
    Products["Identity"] = "identity";
    Products["IdentityMatch"] = "identity_match";
    Products["Investments"] = "investments";
    Products["InvestmentsAuth"] = "investments_auth";
    Products["Liabilities"] = "liabilities";
    Products["PaymentInitiation"] = "payment_initiation";
    Products["IdentityVerification"] = "identity_verification";
    Products["Transactions"] = "transactions";
    Products["CreditDetails"] = "credit_details";
    Products["Income"] = "income";
    Products["IncomeVerification"] = "income_verification";
    Products["StandingOrders"] = "standing_orders";
    Products["Transfer"] = "transfer";
    Products["Employment"] = "employment";
    Products["RecurringTransactions"] = "recurring_transactions";
    Products["TransactionsRefresh"] = "transactions_refresh";
    Products["Signal"] = "signal";
    Products["Statements"] = "statements";
    Products["ProcessorPayments"] = "processor_payments";
    Products["ProcessorIdentity"] = "processor_identity";
    Products["Profile"] = "profile";
    Products["CraBaseReport"] = "cra_base_report";
    Products["CraIncomeInsights"] = "cra_income_insights";
    Products["CraPartnerInsights"] = "cra_partner_insights";
    Products["CraNetworkInsights"] = "cra_network_insights";
    Products["CraCashflowInsights"] = "cra_cashflow_insights";
    Products["Layer"] = "layer";
    Products["PayByBank"] = "pay_by_bank";
})(Products = exports.Products || (exports.Products = {}));
/**
 * The valid name matching sensitivity configurations for a screening program. Note that while certain matching techniques may be more prevalent on less strict settings, all matching algorithms are enabled for every sensitivity.  `coarse` - See more potential matches. This sensitivity will see more broad phonetic matches across alphabets that make missing a potential hit very unlikely. This setting is noisier and will require more manual review.  `balanced` - A good default for most companies. This sensitivity is balanced to show high quality hits with reduced noise.  `strict` - Aggressive false positive reduction. This sensitivity will require names to be more similar than `coarse` and `balanced` settings, relying less on phonetics, while still accounting for character transpositions, missing tokens, and other common permutations.  `exact` - Matches must be nearly exact. This sensitivity will only show hits with exact or nearly exact name matches with only basic correction such as extraneous symbols and capitalization. This setting is generally not recommended unless you have a very specific use case.
 * @export
 * @enum {string}
 */
var ProgramNameSensitivity;
(function (ProgramNameSensitivity) {
    ProgramNameSensitivity["Coarse"] = "coarse";
    ProgramNameSensitivity["Balanced"] = "balanced";
    ProgramNameSensitivity["Strict"] = "strict";
    ProgramNameSensitivity["Exact"] = "exact";
})(ProgramNameSensitivity = exports.ProgramNameSensitivity || (exports.ProgramNameSensitivity = {}));
/**
 * An enum indicating whether a network proxy is present and if so what type it is.  `none_detected` indicates the user is not on a detectable proxy network.  `tor` indicates the user was using a Tor browser, which sends encrypted traffic on a decentralized network and is somewhat similar to a VPN (Virtual Private Network).  `vpn` indicates the user is on a VPN (Virtual Private Network)  `web_proxy` indicates the user is on a web proxy server, which may allow them to conceal information such as their IP address or other identifying information.  `public_proxy` indicates the user is on a public web proxy server, which is similar to a web proxy but can be shared by multiple users. This may allow multiple users to appear as if they have the same IP address for instance.
 * @export
 * @enum {string}
 */
var ProxyType;
(function (ProxyType) {
    ProxyType["NoneDetected"] = "none_detected";
    ProxyType["Tor"] = "tor";
    ProxyType["Vpn"] = "vpn";
    ProxyType["WebProxy"] = "web_proxy";
    ProxyType["PublicProxy"] = "public_proxy";
})(ProxyType = exports.ProxyType || (exports.ProxyType = {}));
/**
 * The recommendation result for that date.
 * @export
 * @enum {string}
 */
var RecommendationString;
(function (RecommendationString) {
    RecommendationString["Recommended"] = "RECOMMENDED";
    RecommendationString["NotRecommended"] = "NOT_RECOMMENDED";
    RecommendationString["Unknown"] = "UNKNOWN";
})(RecommendationString = exports.RecommendationString || (exports.RecommendationString = {}));
/**
 * Describes the frequency of the transaction stream.  `WEEKLY`: Assigned to a transaction stream that occurs approximately every week.  `BIWEEKLY`: Assigned to a transaction stream that occurs approximately every 2 weeks.  `SEMI_MONTHLY`: Assigned to a transaction stream that occurs approximately twice per month. This frequency is typically seen for inflow transaction streams.  `MONTHLY`: Assigned to a transaction stream that occurs approximately every month.  `ANNUALLY`: Assigned to a transaction stream that occurs approximately every year.  `DAILY`: Assigned to a transaction stream that occurs approximately every day.  `DYNAMIC`: Assigned to a transaction stream that varies in recurrence frequency. This frequency is typically seen for inflow streams in the gig economy.  `UNKNOWN`: Assigned to a transaction stream that isn\'t recurring in nature.
 * @export
 * @enum {string}
 */
var RecurringFrequency;
(function (RecurringFrequency) {
    RecurringFrequency["Unknown"] = "UNKNOWN";
    RecurringFrequency["Weekly"] = "WEEKLY";
    RecurringFrequency["Biweekly"] = "BIWEEKLY";
    RecurringFrequency["SemiMonthly"] = "SEMI_MONTHLY";
    RecurringFrequency["Monthly"] = "MONTHLY";
    RecurringFrequency["Annually"] = "ANNUALLY";
    RecurringFrequency["Daily"] = "DAILY";
    RecurringFrequency["Dynamic"] = "DYNAMIC";
    RecurringFrequency["Null"] = "null";
})(RecurringFrequency = exports.RecurringFrequency || (exports.RecurringFrequency = {}));
/**
 * Describes the frequency of the transaction stream.  `WEEKLY`: Assigned to a transaction stream that occurs approximately every week.  `BIWEEKLY`: Assigned to a transaction stream that occurs approximately every 2 weeks.  `SEMI_MONTHLY`: Assigned to a transaction stream that occurs approximately twice per month. This frequency is typically seen for inflow transaction streams.  `MONTHLY`: Assigned to a transaction stream that occurs approximately every month.  `ANNUALLY`: Assigned to a transaction stream that occurs approximately every year.  `UNKNOWN`: Assigned to a transaction stream that does not fit any of the pre-defined frequencies.
 * @export
 * @enum {string}
 */
var RecurringTransactionFrequency;
(function (RecurringTransactionFrequency) {
    RecurringTransactionFrequency["Unknown"] = "UNKNOWN";
    RecurringTransactionFrequency["Weekly"] = "WEEKLY";
    RecurringTransactionFrequency["Biweekly"] = "BIWEEKLY";
    RecurringTransactionFrequency["SemiMonthly"] = "SEMI_MONTHLY";
    RecurringTransactionFrequency["Monthly"] = "MONTHLY";
    RecurringTransactionFrequency["Annually"] = "ANNUALLY";
})(RecurringTransactionFrequency = exports.RecurringTransactionFrequency || (exports.RecurringTransactionFrequency = {}));
/**
 * The report type. It can be `asset`. Income report types are not yet supported.
 * @export
 * @enum {string}
 */
var ReportType;
(function (ReportType) {
    ReportType["Asset"] = "asset";
})(ReportType = exports.ReportType || (exports.ReportType = {}));
/**
 * Field describing the outcome of a bot detection behavior risk check.  `yes` indicates that automated activity was detected.  `no` indicates that automated activity was not detected.  `no_data` indicates there was not enough information available to give an accurate signal.
 * @export
 * @enum {string}
 */
var RiskCheckBehaviorBotDetectedLabel;
(function (RiskCheckBehaviorBotDetectedLabel) {
    RiskCheckBehaviorBotDetectedLabel["Yes"] = "yes";
    RiskCheckBehaviorBotDetectedLabel["No"] = "no";
    RiskCheckBehaviorBotDetectedLabel["NoData"] = "no_data";
})(RiskCheckBehaviorBotDetectedLabel = exports.RiskCheckBehaviorBotDetectedLabel || (exports.RiskCheckBehaviorBotDetectedLabel = {}));
/**
 * Field describing the outcome of a fraud ring behavior risk check.  `yes` indicates that fraud ring activity was detected.  `no` indicates that fraud ring activity was not detected.  `no_data` indicates there was not enough information available to give an accurate signal.
 * @export
 * @enum {string}
 */
var RiskCheckBehaviorFraudRingDetectedLabel;
(function (RiskCheckBehaviorFraudRingDetectedLabel) {
    RiskCheckBehaviorFraudRingDetectedLabel["Yes"] = "yes";
    RiskCheckBehaviorFraudRingDetectedLabel["No"] = "no";
    RiskCheckBehaviorFraudRingDetectedLabel["NoData"] = "no_data";
})(RiskCheckBehaviorFraudRingDetectedLabel = exports.RiskCheckBehaviorFraudRingDetectedLabel || (exports.RiskCheckBehaviorFraudRingDetectedLabel = {}));
/**
 * Field describing the overall user interaction signals of a behavior risk check. This value represents how familiar the user is with the personal data they provide, based on a number of signals that are collected during their session.  `genuine` indicates the user has high familiarity with the data they are providing, and that fraud is unlikely.  `neutral` indicates some signals are present in between `risky` and `genuine`, but there are not enough clear signals to determine an outcome.  `risky` indicates the user has low familiarity with the data they are providing, and that fraud is likely.  `no_data` indicates there is not sufficient information to give an accurate signal.
 * @export
 * @enum {string}
 */
var RiskCheckBehaviorUserInteractionsLabel;
(function (RiskCheckBehaviorUserInteractionsLabel) {
    RiskCheckBehaviorUserInteractionsLabel["Genuine"] = "genuine";
    RiskCheckBehaviorUserInteractionsLabel["Neutral"] = "neutral";
    RiskCheckBehaviorUserInteractionsLabel["Risky"] = "risky";
    RiskCheckBehaviorUserInteractionsLabel["NoData"] = "no_data";
})(RiskCheckBehaviorUserInteractionsLabel = exports.RiskCheckBehaviorUserInteractionsLabel || (exports.RiskCheckBehaviorUserInteractionsLabel = {}));
/**
 * Indicates whether the email address domain is custom if known, i.e. a company domain and not free or disposable.
 * @export
 * @enum {string}
 */
var RiskCheckEmailDomainIsCustom;
(function (RiskCheckEmailDomainIsCustom) {
    RiskCheckEmailDomainIsCustom["Yes"] = "yes";
    RiskCheckEmailDomainIsCustom["No"] = "no";
    RiskCheckEmailDomainIsCustom["NoData"] = "no_data";
})(RiskCheckEmailDomainIsCustom = exports.RiskCheckEmailDomainIsCustom || (exports.RiskCheckEmailDomainIsCustom = {}));
/**
 * Indicates whether the email domain is listed as disposable if known. Disposable domains are often used to create email addresses that are part of a fake set of user details.
 * @export
 * @enum {string}
 */
var RiskCheckEmailDomainIsDisposable;
(function (RiskCheckEmailDomainIsDisposable) {
    RiskCheckEmailDomainIsDisposable["Yes"] = "yes";
    RiskCheckEmailDomainIsDisposable["No"] = "no";
    RiskCheckEmailDomainIsDisposable["NoData"] = "no_data";
})(RiskCheckEmailDomainIsDisposable = exports.RiskCheckEmailDomainIsDisposable || (exports.RiskCheckEmailDomainIsDisposable = {}));
/**
 * Indicates whether the email address domain is a free provider such as Gmail or Hotmail if known.
 * @export
 * @enum {string}
 */
var RiskCheckEmailDomainIsFreeProvider;
(function (RiskCheckEmailDomainIsFreeProvider) {
    RiskCheckEmailDomainIsFreeProvider["Yes"] = "yes";
    RiskCheckEmailDomainIsFreeProvider["No"] = "no";
    RiskCheckEmailDomainIsFreeProvider["NoData"] = "no_data";
})(RiskCheckEmailDomainIsFreeProvider = exports.RiskCheckEmailDomainIsFreeProvider || (exports.RiskCheckEmailDomainIsFreeProvider = {}));
/**
 * SMTP-MX check to confirm the email address exists if known.
 * @export
 * @enum {string}
 */
var RiskCheckEmailIsDeliverableStatus;
(function (RiskCheckEmailIsDeliverableStatus) {
    RiskCheckEmailIsDeliverableStatus["Yes"] = "yes";
    RiskCheckEmailIsDeliverableStatus["No"] = "no";
    RiskCheckEmailIsDeliverableStatus["NoData"] = "no_data";
})(RiskCheckEmailIsDeliverableStatus = exports.RiskCheckEmailIsDeliverableStatus || (exports.RiskCheckEmailIsDeliverableStatus = {}));
/**
 * Indicates whether the email address top level domain, which is the last part of the domain, is fraudulent or risky if known. In most cases, a suspicious top level domain is also associated with a disposable or high-risk domain.
 * @export
 * @enum {string}
 */
var RiskCheckEmailTopLevelDomainIsSuspicious;
(function (RiskCheckEmailTopLevelDomainIsSuspicious) {
    RiskCheckEmailTopLevelDomainIsSuspicious["Yes"] = "yes";
    RiskCheckEmailTopLevelDomainIsSuspicious["No"] = "no";
    RiskCheckEmailTopLevelDomainIsSuspicious["NoData"] = "no_data";
})(RiskCheckEmailTopLevelDomainIsSuspicious = exports.RiskCheckEmailTopLevelDomainIsSuspicious || (exports.RiskCheckEmailTopLevelDomainIsSuspicious = {}));
/**
 * An enum indicating the type of a linked service. Note that `adult_sites` refers\' to explicit video content, and includes a number of related services.
 * @export
 * @enum {string}
 */
var RiskCheckLinkedService;
(function (RiskCheckLinkedService) {
    RiskCheckLinkedService["Aboutme"] = "aboutme";
    RiskCheckLinkedService["Adobe"] = "adobe";
    RiskCheckLinkedService["AdultSites"] = "adult_sites";
    RiskCheckLinkedService["Airbnb"] = "airbnb";
    RiskCheckLinkedService["Altbalaji"] = "altbalaji";
    RiskCheckLinkedService["Amazon"] = "amazon";
    RiskCheckLinkedService["Apple"] = "apple";
    RiskCheckLinkedService["Archiveorg"] = "archiveorg";
    RiskCheckLinkedService["Atlassian"] = "atlassian";
    RiskCheckLinkedService["Bitmoji"] = "bitmoji";
    RiskCheckLinkedService["Bodybuilding"] = "bodybuilding";
    RiskCheckLinkedService["Booking"] = "booking";
    RiskCheckLinkedService["Bukalapak"] = "bukalapak";
    RiskCheckLinkedService["Codecademy"] = "codecademy";
    RiskCheckLinkedService["Deliveroo"] = "deliveroo";
    RiskCheckLinkedService["Diigo"] = "diigo";
    RiskCheckLinkedService["Discord"] = "discord";
    RiskCheckLinkedService["Disneyplus"] = "disneyplus";
    RiskCheckLinkedService["Duolingo"] = "duolingo";
    RiskCheckLinkedService["Ebay"] = "ebay";
    RiskCheckLinkedService["Envato"] = "envato";
    RiskCheckLinkedService["Eventbrite"] = "eventbrite";
    RiskCheckLinkedService["Evernote"] = "evernote";
    RiskCheckLinkedService["Facebook"] = "facebook";
    RiskCheckLinkedService["Firefox"] = "firefox";
    RiskCheckLinkedService["Flickr"] = "flickr";
    RiskCheckLinkedService["Flipkart"] = "flipkart";
    RiskCheckLinkedService["Foursquare"] = "foursquare";
    RiskCheckLinkedService["Freelancer"] = "freelancer";
    RiskCheckLinkedService["Gaana"] = "gaana";
    RiskCheckLinkedService["Giphy"] = "giphy";
    RiskCheckLinkedService["Github"] = "github";
    RiskCheckLinkedService["Google"] = "google";
    RiskCheckLinkedService["Gravatar"] = "gravatar";
    RiskCheckLinkedService["Hubspot"] = "hubspot";
    RiskCheckLinkedService["Imgur"] = "imgur";
    RiskCheckLinkedService["Instagram"] = "instagram";
    RiskCheckLinkedService["Jdid"] = "jdid";
    RiskCheckLinkedService["Kakao"] = "kakao";
    RiskCheckLinkedService["Kommo"] = "kommo";
    RiskCheckLinkedService["Komoot"] = "komoot";
    RiskCheckLinkedService["Lastfm"] = "lastfm";
    RiskCheckLinkedService["Lazada"] = "lazada";
    RiskCheckLinkedService["Line"] = "line";
    RiskCheckLinkedService["Linkedin"] = "linkedin";
    RiskCheckLinkedService["Mailru"] = "mailru";
    RiskCheckLinkedService["Microsoft"] = "microsoft";
    RiskCheckLinkedService["Myspace"] = "myspace";
    RiskCheckLinkedService["Netflix"] = "netflix";
    RiskCheckLinkedService["Nike"] = "nike";
    RiskCheckLinkedService["Ok"] = "ok";
    RiskCheckLinkedService["Patreon"] = "patreon";
    RiskCheckLinkedService["Pinterest"] = "pinterest";
    RiskCheckLinkedService["Plurk"] = "plurk";
    RiskCheckLinkedService["Quora"] = "quora";
    RiskCheckLinkedService["Qzone"] = "qzone";
    RiskCheckLinkedService["Rambler"] = "rambler";
    RiskCheckLinkedService["Rappi"] = "rappi";
    RiskCheckLinkedService["Replit"] = "replit";
    RiskCheckLinkedService["Samsung"] = "samsung";
    RiskCheckLinkedService["Seoclerks"] = "seoclerks";
    RiskCheckLinkedService["Shopclues"] = "shopclues";
    RiskCheckLinkedService["Skype"] = "skype";
    RiskCheckLinkedService["Snapchat"] = "snapchat";
    RiskCheckLinkedService["Snapdeal"] = "snapdeal";
    RiskCheckLinkedService["Soundcloud"] = "soundcloud";
    RiskCheckLinkedService["Spotify"] = "spotify";
    RiskCheckLinkedService["Starz"] = "starz";
    RiskCheckLinkedService["Strava"] = "strava";
    RiskCheckLinkedService["Taringa"] = "taringa";
    RiskCheckLinkedService["Telegram"] = "telegram";
    RiskCheckLinkedService["Tiki"] = "tiki";
    RiskCheckLinkedService["Tokopedia"] = "tokopedia";
    RiskCheckLinkedService["Treehouse"] = "treehouse";
    RiskCheckLinkedService["Tumblr"] = "tumblr";
    RiskCheckLinkedService["Twitter"] = "twitter";
    RiskCheckLinkedService["Venmo"] = "venmo";
    RiskCheckLinkedService["Viber"] = "viber";
    RiskCheckLinkedService["Vimeo"] = "vimeo";
    RiskCheckLinkedService["Vivino"] = "vivino";
    RiskCheckLinkedService["Vkontakte"] = "vkontakte";
    RiskCheckLinkedService["Wattpad"] = "wattpad";
    RiskCheckLinkedService["Weibo"] = "weibo";
    RiskCheckLinkedService["Whatsapp"] = "whatsapp";
    RiskCheckLinkedService["Wordpress"] = "wordpress";
    RiskCheckLinkedService["Xing"] = "xing";
    RiskCheckLinkedService["Yahoo"] = "yahoo";
    RiskCheckLinkedService["Yandex"] = "yandex";
    RiskCheckLinkedService["Zalo"] = "zalo";
    RiskCheckLinkedService["Zoho"] = "zoho";
})(RiskCheckLinkedService = exports.RiskCheckLinkedService || (exports.RiskCheckLinkedService = {}));
/**
 * Risk level for the given risk check type.
 * @export
 * @enum {string}
 */
var RiskLevel;
(function (RiskLevel) {
    RiskLevel["Low"] = "low";
    RiskLevel["Medium"] = "medium";
    RiskLevel["High"] = "high";
})(RiskLevel = exports.RiskLevel || (exports.RiskLevel = {}));
/**
 * Risk level for the given risk check type, when available.
 * @export
 * @enum {string}
 */
var RiskLevelWithNoData;
(function (RiskLevelWithNoData) {
    RiskLevelWithNoData["Low"] = "low";
    RiskLevelWithNoData["Medium"] = "medium";
    RiskLevelWithNoData["High"] = "high";
    RiskLevelWithNoData["NoData"] = "no_data";
})(RiskLevelWithNoData = exports.RiskLevelWithNoData || (exports.RiskLevelWithNoData = {}));
/**
 * Status of a document for risk signal analysis
 * @export
 * @enum {string}
 */
var RiskSignalDocumentStatus;
(function (RiskSignalDocumentStatus) {
    RiskSignalDocumentStatus["Processing"] = "PROCESSING";
    RiskSignalDocumentStatus["ProcessingComplete"] = "PROCESSING_COMPLETE";
    RiskSignalDocumentStatus["ProcessingError"] = "PROCESSING_ERROR";
    RiskSignalDocumentStatus["PasswordProtected"] = "PASSWORD_PROTECTED";
    RiskSignalDocumentStatus["VirusDetected"] = "VIRUS_DETECTED";
})(RiskSignalDocumentStatus = exports.RiskSignalDocumentStatus || (exports.RiskSignalDocumentStatus = {}));
/**
 * Type of a document for risk signal analysis
 * @export
 * @enum {string}
 */
var RiskSignalDocumentType;
(function (RiskSignalDocumentType) {
    RiskSignalDocumentType["Unknown"] = "UNKNOWN";
    RiskSignalDocumentType["BankStatement"] = "BANK_STATEMENT";
    RiskSignalDocumentType["BenefitsStatement"] = "BENEFITS_STATEMENT";
    RiskSignalDocumentType["BusinessFiling"] = "BUSINESS_FILING";
    RiskSignalDocumentType["Check"] = "CHECK";
    RiskSignalDocumentType["DrivingLicense"] = "DRIVING_LICENSE";
    RiskSignalDocumentType["FinancialStatement"] = "FINANCIAL_STATEMENT";
    RiskSignalDocumentType["Invoice"] = "INVOICE";
    RiskSignalDocumentType["Payslip"] = "PAYSLIP";
    RiskSignalDocumentType["SocialSecurityCard"] = "SOCIAL_SECURITY_CARD";
    RiskSignalDocumentType["TaxForm"] = "TAX_FORM";
    RiskSignalDocumentType["UtilityBill"] = "UTILITY_BILL";
})(RiskSignalDocumentType = exports.RiskSignalDocumentType || (exports.RiskSignalDocumentType = {}));
/**
 * The file type for risk signal analysis
 * @export
 * @enum {string}
 */
var RiskSignalFileType;
(function (RiskSignalFileType) {
    RiskSignalFileType["Unknown"] = "UNKNOWN";
    RiskSignalFileType["ImagePdf"] = "IMAGE_PDF";
    RiskSignalFileType["ScanOcr"] = "SCAN_OCR";
    RiskSignalFileType["TruePdf"] = "TRUE_PDF";
    RiskSignalFileType["Image"] = "IMAGE";
    RiskSignalFileType["MixedPagePdf"] = "MIXED_PAGE_PDF";
    RiskSignalFileType["EmptyPdf"] = "EMPTY_PDF";
    RiskSignalFileType["FlattenedPdf"] = "FLATTENED_PDF";
})(RiskSignalFileType = exports.RiskSignalFileType || (exports.RiskSignalFileType = {}));
/**
 * The outcome status for the individual SMS verification.
 * @export
 * @enum {string}
 */
var SMSVerificationStatus;
(function (SMSVerificationStatus) {
    SMSVerificationStatus["Pending"] = "pending";
    SMSVerificationStatus["Success"] = "success";
    SMSVerificationStatus["Failed"] = "failed";
    SMSVerificationStatus["Canceled"] = "canceled";
})(SMSVerificationStatus = exports.SMSVerificationStatus || (exports.SMSVerificationStatus = {}));
/**
 * The webhook codes this endpoint can be used to test
 * @export
 * @enum {string}
 */
var SandboxBankIncomeWebhookFireRequestWebhookCode;
(function (SandboxBankIncomeWebhookFireRequestWebhookCode) {
    SandboxBankIncomeWebhookFireRequestWebhookCode["Update"] = "BANK_INCOME_REFRESH_UPDATE";
    SandboxBankIncomeWebhookFireRequestWebhookCode["Complete"] = "BANK_INCOME_REFRESH_COMPLETE";
})(SandboxBankIncomeWebhookFireRequestWebhookCode = exports.SandboxBankIncomeWebhookFireRequestWebhookCode || (exports.SandboxBankIncomeWebhookFireRequestWebhookCode = {}));
/**
    * @export
    * @enum {string}
    */
var SandboxIncomeFireWebhookRequestVerificationStatusEnum;
(function (SandboxIncomeFireWebhookRequestVerificationStatusEnum) {
    SandboxIncomeFireWebhookRequestVerificationStatusEnum["ProcessingComplete"] = "VERIFICATION_STATUS_PROCESSING_COMPLETE";
    SandboxIncomeFireWebhookRequestVerificationStatusEnum["ProcessingFailed"] = "VERIFICATION_STATUS_PROCESSING_FAILED";
    SandboxIncomeFireWebhookRequestVerificationStatusEnum["PendingApproval"] = "VERIFICATION_STATUS_PENDING_APPROVAL";
})(SandboxIncomeFireWebhookRequestVerificationStatusEnum = exports.SandboxIncomeFireWebhookRequestVerificationStatusEnum || (exports.SandboxIncomeFireWebhookRequestVerificationStatusEnum = {}));
/**
 * The webhook codes that can be fired by this test endpoint.
 * @export
 * @enum {string}
 */
var SandboxIncomeWebhookFireRequestWebhookCode;
(function (SandboxIncomeWebhookFireRequestWebhookCode) {
    SandboxIncomeWebhookFireRequestWebhookCode["Verification"] = "INCOME_VERIFICATION";
    SandboxIncomeWebhookFireRequestWebhookCode["VerificationRiskSignals"] = "INCOME_VERIFICATION_RISK_SIGNALS";
})(SandboxIncomeWebhookFireRequestWebhookCode = exports.SandboxIncomeWebhookFireRequestWebhookCode || (exports.SandboxIncomeWebhookFireRequestWebhookCode = {}));
/**
    * @export
    * @enum {string}
    */
var SandboxItemFireWebhookRequestWebhookCodeEnum;
(function (SandboxItemFireWebhookRequestWebhookCodeEnum) {
    SandboxItemFireWebhookRequestWebhookCodeEnum["DefaultUpdate"] = "DEFAULT_UPDATE";
    SandboxItemFireWebhookRequestWebhookCodeEnum["NewAccountsAvailable"] = "NEW_ACCOUNTS_AVAILABLE";
    SandboxItemFireWebhookRequestWebhookCodeEnum["SmsMicrodepositsVerification"] = "SMS_MICRODEPOSITS_VERIFICATION";
    SandboxItemFireWebhookRequestWebhookCodeEnum["AuthorizationGranted"] = "AUTHORIZATION_GRANTED";
    SandboxItemFireWebhookRequestWebhookCodeEnum["PendingDisconnect"] = "PENDING_DISCONNECT";
    SandboxItemFireWebhookRequestWebhookCodeEnum["RecurringTransactionsUpdate"] = "RECURRING_TRANSACTIONS_UPDATE";
    SandboxItemFireWebhookRequestWebhookCodeEnum["LoginRepaired"] = "LOGIN_REPAIRED";
    SandboxItemFireWebhookRequestWebhookCodeEnum["SyncUpdatesAvailable"] = "SYNC_UPDATES_AVAILABLE";
    SandboxItemFireWebhookRequestWebhookCodeEnum["ProductReady"] = "PRODUCT_READY";
    SandboxItemFireWebhookRequestWebhookCodeEnum["Error"] = "ERROR";
})(SandboxItemFireWebhookRequestWebhookCodeEnum = exports.SandboxItemFireWebhookRequestWebhookCodeEnum || (exports.SandboxItemFireWebhookRequestWebhookCodeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var SandboxItemSetVerificationStatusRequestVerificationStatusEnum;
(function (SandboxItemSetVerificationStatusRequestVerificationStatusEnum) {
    SandboxItemSetVerificationStatusRequestVerificationStatusEnum["AutomaticallyVerified"] = "automatically_verified";
    SandboxItemSetVerificationStatusRequestVerificationStatusEnum["VerificationExpired"] = "verification_expired";
})(SandboxItemSetVerificationStatusRequestVerificationStatusEnum = exports.SandboxItemSetVerificationStatusRequestVerificationStatusEnum || (exports.SandboxItemSetVerificationStatusRequestVerificationStatusEnum = {}));
/**
 * An indicator for when scopes are being updated. When scopes are updated via enrollment (i.e. OAuth), the partner must send `ENROLLMENT`. When scopes are updated in a post-enrollment view, the partner must send `PORTAL`.
 * @export
 * @enum {string}
 */
var ScopesContext;
(function (ScopesContext) {
    ScopesContext["Enrollment"] = "ENROLLMENT";
    ScopesContext["Portal"] = "PORTAL";
})(ScopesContext = exports.ScopesContext || (exports.ScopesContext = {}));
/**
 * Information about the comparison between the selfie and the document (if documentary verification also ran).
 * @export
 * @enum {string}
 */
var SelfieAnalysisDocumentComparison;
(function (SelfieAnalysisDocumentComparison) {
    SelfieAnalysisDocumentComparison["Match"] = "match";
    SelfieAnalysisDocumentComparison["NoMatch"] = "no_match";
    SelfieAnalysisDocumentComparison["NoInput"] = "no_input";
})(SelfieAnalysisDocumentComparison = exports.SelfieAnalysisDocumentComparison || (exports.SelfieAnalysisDocumentComparison = {}));
/**
 * Outcome of the facial analysis for a specific facial feature.
 * @export
 * @enum {string}
 */
var SelfieAnalysisFacialAnalysisOutcome;
(function (SelfieAnalysisFacialAnalysisOutcome) {
    SelfieAnalysisFacialAnalysisOutcome["Success"] = "success";
    SelfieAnalysisFacialAnalysisOutcome["Failed"] = "failed";
})(SelfieAnalysisFacialAnalysisOutcome = exports.SelfieAnalysisFacialAnalysisOutcome || (exports.SelfieAnalysisFacialAnalysisOutcome = {}));
/**
 * Assessment of whether the selfie capture is of a real human being, as opposed to a picture of a human on a screen, a picture of a paper cut out, someone wearing a mask, or a deepfake.
 * @export
 * @enum {string}
 */
var SelfieAnalysisLivenessCheck;
(function (SelfieAnalysisLivenessCheck) {
    SelfieAnalysisLivenessCheck["Success"] = "success";
    SelfieAnalysisLivenessCheck["Failed"] = "failed";
})(SelfieAnalysisLivenessCheck = exports.SelfieAnalysisLivenessCheck || (exports.SelfieAnalysisLivenessCheck = {}));
/**
 * The outcome status for the associated Identity Verification attempt\'s `selfie_check` step. This field will always have the same value as `steps.selfie_check`.
 * @export
 * @enum {string}
 */
var SelfieCheckStatus;
(function (SelfieCheckStatus) {
    SelfieCheckStatus["Success"] = "success";
    SelfieCheckStatus["Failed"] = "failed";
})(SelfieCheckStatus = exports.SelfieCheckStatus || (exports.SelfieCheckStatus = {}));
/**
 * An outcome status for this specific selfie. Distinct from the overall `selfie_check.status` that summarizes the verification outcome from one or more selfies.
 * @export
 * @enum {string}
 */
var SelfieStatus;
(function (SelfieStatus) {
    SelfieStatus["Success"] = "success";
    SelfieStatus["Failed"] = "failed";
})(SelfieStatus = exports.SelfieStatus || (exports.SelfieStatus = {}));
/**
 * Documentation not found in the MISMO model viewer and not provided by Freddie Mac.
 * @export
 * @enum {string}
 */
var ServiceProductFulfillmentIdentifier;
(function (ServiceProductFulfillmentIdentifier) {
    ServiceProductFulfillmentIdentifier["Voa"] = "VOA";
    ServiceProductFulfillmentIdentifier["Voe"] = "VOE";
})(ServiceProductFulfillmentIdentifier = exports.ServiceProductFulfillmentIdentifier || (exports.ServiceProductFulfillmentIdentifier = {}));
/**
 * The payment decision from the risk assessment.  `APPROVE`: approve the transaction without requiring further actions from your customers. For example, use this field if you are placing a standard hold for all the approved transactions before making funds available to your customers. You should also use this field if you decide to accelerate the fund availability for your customers.  `REVIEW`: the transaction requires manual review  `REJECT`: reject the transaction  `TAKE_OTHER_RISK_MEASURES`: for example, placing a longer hold on funds than those approved transactions or introducing customer frictions such as step-up verification/authentication  `NOT_EVALUATED`: if only logging the Signal results without using them  Possible values:  `APPROVE`, `REVIEW`, `REJECT`, `TAKE_OTHER_RISK_MEASURES`, `NOT_EVALUATED`
 * @export
 * @enum {string}
 */
var SignalDecisionOutcome;
(function (SignalDecisionOutcome) {
    SignalDecisionOutcome["Approve"] = "APPROVE";
    SignalDecisionOutcome["Review"] = "REVIEW";
    SignalDecisionOutcome["Reject"] = "REJECT";
    SignalDecisionOutcome["TakeOtherRiskMeasures"] = "TAKE_OTHER_RISK_MEASURES";
    SignalDecisionOutcome["NotEvaluated"] = "NOT_EVALUATED";
})(SignalDecisionOutcome = exports.SignalDecisionOutcome || (exports.SignalDecisionOutcome = {}));
/**
 * The payment method to complete the transaction after the risk assessment. It may be different from the default payment method.  `SAME_DAY_ACH`: Same Day ACH by NACHA. The debit transaction is processed and settled on the same day  `NEXT_DAY_ACH`: Next Day ACH settlement for debit transactions, offered by some payment processors  `STANDARD_ACH`: standard ACH by NACHA  `REAL_TIME_PAYMENTS`: real-time payments such as RTP and FedNow  `DEBIT_CARD`: if the default payment is over debit card networks  `MULTIPLE_PAYMENT_METHODS`: if there is no default debit rail or there are multiple payment methods  Possible values: `SAME_DAY_ACH`, `NEXT_DAY_ACH`, `STANDARD_ACH`, `REAL_TIME_PAYMENTS`, `DEBIT_CARD`, `MULTIPLE_PAYMENT_METHODS`
 * @export
 * @enum {string}
 */
var SignalPaymentMethod;
(function (SignalPaymentMethod) {
    SignalPaymentMethod["SameDayAch"] = "SAME_DAY_ACH";
    SignalPaymentMethod["NextDayAch"] = "NEXT_DAY_ACH";
    SignalPaymentMethod["StandardAch"] = "STANDARD_ACH";
    SignalPaymentMethod["RealTimePayments"] = "REAL_TIME_PAYMENTS";
    SignalPaymentMethod["DebitCard"] = "DEBIT_CARD";
    SignalPaymentMethod["MultiplePaymentMethods"] = "MULTIPLE_PAYMENT_METHODS";
})(SignalPaymentMethod = exports.SignalPaymentMethod || (exports.SignalPaymentMethod = {}));
/**
 * The payment method specified in the `default_payment_method` field directly impacts the timing recommendations provided by the API for submitting the debit entry to your processor or ODFI. If unspecified, Signal defaults to `STANDARD_ACH`.  `SAME_DAY_ACH`: Same Day ACH (as defined by Nacha). The Signal API assumes the settlement will occur on the same business day if the `/signal/schedule` request is submitted by 6:00 PM UTC. Note: The actual cutoff time can vary depending on your payment processor or ODFI. NACHA has established three processing windows for Same Day ACH (UTC): 2:30 PM, 6:45 PM, and 8:45 PM.  `STANDARD_ACH`: Standard ACH (as defined by Nacha), typically settled one to three business days after submission.  `REAL_TIME_PAYMENTS`: Real-time payments via Request for Payment through networks such as RTP (The Clearing House) and FedNow, where the consumer can authorize the payment in response to a RFP, and the transaction is processed and settled immediately.  `DEBIT_CARD`: Payments processed over debit card networks, leveraging the card-based infrastructure for real-time or near-real-time settlement.  `MULTIPLE_PAYMENT_METHODS`: Indicates that there is no default debit rail or multiple payment methods are available, and the transaction could use any of them based on customer policy or availability.
 * @export
 * @enum {string}
 */
var SignalScheduleDefaultPaymentMethod;
(function (SignalScheduleDefaultPaymentMethod) {
    SignalScheduleDefaultPaymentMethod["SameDayAch"] = "SAME_DAY_ACH";
    SignalScheduleDefaultPaymentMethod["StandardAch"] = "STANDARD_ACH";
    SignalScheduleDefaultPaymentMethod["RealTimePayments"] = "REAL_TIME_PAYMENTS";
    SignalScheduleDefaultPaymentMethod["DebitCard"] = "DEBIT_CARD";
    SignalScheduleDefaultPaymentMethod["MultiplePaymentMethods"] = "MULTIPLE_PAYMENT_METHODS";
})(SignalScheduleDefaultPaymentMethod = exports.SignalScheduleDefaultPaymentMethod || (exports.SignalScheduleDefaultPaymentMethod = {}));
/**
 * A type indicating whether a dashboard user, an API-based user, or Plaid last touched this object.
 * @export
 * @enum {string}
 */
var Source;
(function (Source) {
    Source["Dashboard"] = "dashboard";
    Source["Link"] = "link";
    Source["Api"] = "api";
    Source["System"] = "system";
})(Source = exports.Source || (exports.Source = {}));
/**
 * The result of the statement refresh extraction  `SUCCESS`: The statements were successfully extracted and can be listed via `/statements/list/` and downloaded via `/statements/download/`.  `FAILURE`: The statements failed to be extracted.
 * @export
 * @enum {string}
 */
var StatementsRefreshCompleteResult;
(function (StatementsRefreshCompleteResult) {
    StatementsRefreshCompleteResult["Success"] = "SUCCESS";
    StatementsRefreshCompleteResult["Failure"] = "FAILURE";
})(StatementsRefreshCompleteResult = exports.StatementsRefreshCompleteResult || (exports.StatementsRefreshCompleteResult = {}));
/**
 * An instruction specifying what steps the new Identity Verification attempt should require the user to complete:   `reset` - Restart the user at the beginning of the session, regardless of whether they successfully completed part of their previous session.  `incomplete` - Start the new session at the step that the user failed in the previous session, skipping steps that have already been successfully completed.  `infer` - If the most recent Identity Verification attempt associated with the given `client_user_id` has a status of `failed` or `expired`, retry using the `incomplete` strategy. Otherwise, use the `reset` strategy.  `custom` - Start the new session with a custom configuration, specified by the value of the `steps` field  Note:  The `incomplete` strategy cannot be applied if the session\'s failing step is `screening` or `risk_check`.  The `infer` strategy cannot be applied if the session\'s status is still `active`
 * @export
 * @enum {string}
 */
var Strategy;
(function (Strategy) {
    Strategy["Reset"] = "reset";
    Strategy["Incomplete"] = "incomplete";
    Strategy["Infer"] = "infer";
    Strategy["Custom"] = "custom";
})(Strategy = exports.Strategy || (exports.Strategy = {}));
/**
    * @export
    * @enum {string}
    */
var StudentLoanStatusTypeEnum;
(function (StudentLoanStatusTypeEnum) {
    StudentLoanStatusTypeEnum["Cancelled"] = "cancelled";
    StudentLoanStatusTypeEnum["ChargedOff"] = "charged off";
    StudentLoanStatusTypeEnum["Claim"] = "claim";
    StudentLoanStatusTypeEnum["Consolidated"] = "consolidated";
    StudentLoanStatusTypeEnum["Deferment"] = "deferment";
    StudentLoanStatusTypeEnum["Delinquent"] = "delinquent";
    StudentLoanStatusTypeEnum["Discharged"] = "discharged";
    StudentLoanStatusTypeEnum["Extension"] = "extension";
    StudentLoanStatusTypeEnum["Forbearance"] = "forbearance";
    StudentLoanStatusTypeEnum["InGrace"] = "in grace";
    StudentLoanStatusTypeEnum["InMilitary"] = "in military";
    StudentLoanStatusTypeEnum["InSchool"] = "in school";
    StudentLoanStatusTypeEnum["NotFullyDisbursed"] = "not fully disbursed";
    StudentLoanStatusTypeEnum["Other"] = "other";
    StudentLoanStatusTypeEnum["PaidInFull"] = "paid in full";
    StudentLoanStatusTypeEnum["Refunded"] = "refunded";
    StudentLoanStatusTypeEnum["Repayment"] = "repayment";
    StudentLoanStatusTypeEnum["Transferred"] = "transferred";
    StudentLoanStatusTypeEnum["PendingIdr"] = "pending idr";
})(StudentLoanStatusTypeEnum = exports.StudentLoanStatusTypeEnum || (exports.StudentLoanStatusTypeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var StudentRepaymentPlanTypeEnum;
(function (StudentRepaymentPlanTypeEnum) {
    StudentRepaymentPlanTypeEnum["ExtendedGraduated"] = "extended graduated";
    StudentRepaymentPlanTypeEnum["ExtendedStandard"] = "extended standard";
    StudentRepaymentPlanTypeEnum["Graduated"] = "graduated";
    StudentRepaymentPlanTypeEnum["IncomeContingentRepayment"] = "income-contingent repayment";
    StudentRepaymentPlanTypeEnum["IncomeBasedRepayment"] = "income-based repayment";
    StudentRepaymentPlanTypeEnum["IncomeSensitiveRepayment"] = "income-sensitive repayment";
    StudentRepaymentPlanTypeEnum["InterestOnly"] = "interest-only";
    StudentRepaymentPlanTypeEnum["Other"] = "other";
    StudentRepaymentPlanTypeEnum["PayAsYouEarn"] = "pay as you earn";
    StudentRepaymentPlanTypeEnum["RevisedPayAsYouEarn"] = "revised pay as you earn";
    StudentRepaymentPlanTypeEnum["Standard"] = "standard";
    StudentRepaymentPlanTypeEnum["SavingOnAValuableEducation"] = "saving on a valuable education";
    StudentRepaymentPlanTypeEnum["Null"] = "null";
})(StudentRepaymentPlanTypeEnum = exports.StudentRepaymentPlanTypeEnum || (exports.StudentRepaymentPlanTypeEnum = {}));
/**
 * The status of a sweep transfer  `\"pending\"` - The sweep is currently pending `\"posted\"` - The sweep has been posted `\"settled\"` - The sweep has settled `\"returned\"` - The sweep has been returned `\"failed\"` - The sweep has failed
 * @export
 * @enum {string}
 */
var SweepStatus;
(function (SweepStatus) {
    SweepStatus["Pending"] = "pending";
    SweepStatus["Posted"] = "posted";
    SweepStatus["Settled"] = "settled";
    SweepStatus["Returned"] = "returned";
    SweepStatus["Failed"] = "failed";
    SweepStatus["Null"] = "null";
})(SweepStatus = exports.SweepStatus || (exports.SweepStatus = {}));
/**
 * The trigger of the sweep  `\"manual\"` - The sweep is created manually by the customer `\"incoming\"` - The sweep is created by incoming funds flow (e.g. Incoming Wire) `\"balance_threshold\"` - The sweep is created by balance threshold setting `\"automatic_aggregate\"` - The sweep is created by the Plaid automatic aggregation process. These funds did not pass through the Plaid Ledger balance.
 * @export
 * @enum {string}
 */
var SweepTrigger;
(function (SweepTrigger) {
    SweepTrigger["Manual"] = "manual";
    SweepTrigger["Incoming"] = "incoming";
    SweepTrigger["BalanceThreshold"] = "balance_threshold";
    SweepTrigger["AutomaticAggregate"] = "automatic_aggregate";
})(SweepTrigger = exports.SweepTrigger || (exports.SweepTrigger = {}));
/**
 * A value from a MISMO prescribed list that classifies identification numbers used by the Internal Revenue Service (IRS) in the administration of tax laws. A Social Security number (SSN) is issued by the SSA; all other taxpayer identification numbers are issued by the IRS.
 * @export
 * @enum {string}
 */
var TaxpayerIdentifierType;
(function (TaxpayerIdentifierType) {
    TaxpayerIdentifierType["IndividualTaxpayerIdentificationNumber"] = "IndividualTaxpayerIdentificationNumber";
    TaxpayerIdentifierType["SocialSecurityNumber"] = "SocialSecurityNumber";
})(TaxpayerIdentifierType = exports.TaxpayerIdentifierType || (exports.TaxpayerIdentifierType = {}));
/**
 * Commonly used term to describe the line item.
 * @export
 * @enum {string}
 */
var TotalCanonicalDescription;
(function (TotalCanonicalDescription) {
    TotalCanonicalDescription["Bonus"] = "BONUS";
    TotalCanonicalDescription["Commission"] = "COMMISSION";
    TotalCanonicalDescription["Overtime"] = "OVERTIME";
    TotalCanonicalDescription["PaidTimeOff"] = "PAID TIME OFF";
    TotalCanonicalDescription["RegularPay"] = "REGULAR PAY";
    TotalCanonicalDescription["Vacation"] = "VACATION";
    TotalCanonicalDescription["EmployeeMedicare"] = "EMPLOYEE MEDICARE";
    TotalCanonicalDescription["Fica"] = "FICA";
    TotalCanonicalDescription["SocialSecurityEmployeeTax"] = "SOCIAL SECURITY EMPLOYEE TAX";
    TotalCanonicalDescription["Medical"] = "MEDICAL";
    TotalCanonicalDescription["Vision"] = "VISION";
    TotalCanonicalDescription["Dental"] = "DENTAL";
    TotalCanonicalDescription["NetPay"] = "NET PAY";
    TotalCanonicalDescription["Taxes"] = "TAXES";
    TotalCanonicalDescription["NotFound"] = "NOT_FOUND";
    TotalCanonicalDescription["Other"] = "OTHER";
    TotalCanonicalDescription["Null"] = "null";
})(TotalCanonicalDescription = exports.TotalCanonicalDescription || (exports.TotalCanonicalDescription = {}));
/**
    * @export
    * @enum {string}
    */
var TransactionTransactionTypeEnum;
(function (TransactionTransactionTypeEnum) {
    TransactionTransactionTypeEnum["Digital"] = "digital";
    TransactionTransactionTypeEnum["Place"] = "place";
    TransactionTransactionTypeEnum["Special"] = "special";
    TransactionTransactionTypeEnum["Unresolved"] = "unresolved";
})(TransactionTransactionTypeEnum = exports.TransactionTransactionTypeEnum || (exports.TransactionTransactionTypeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var TransactionPaymentChannelEnum;
(function (TransactionPaymentChannelEnum) {
    TransactionPaymentChannelEnum["Online"] = "online";
    TransactionPaymentChannelEnum["InStore"] = "in store";
    TransactionPaymentChannelEnum["Other"] = "other";
})(TransactionPaymentChannelEnum = exports.TransactionPaymentChannelEnum || (exports.TransactionPaymentChannelEnum = {}));
/**
    * @export
    * @enum {string}
    */
var TransactionAllOfPaymentChannelEnum;
(function (TransactionAllOfPaymentChannelEnum) {
    TransactionAllOfPaymentChannelEnum["Online"] = "online";
    TransactionAllOfPaymentChannelEnum["InStore"] = "in store";
    TransactionAllOfPaymentChannelEnum["Other"] = "other";
})(TransactionAllOfPaymentChannelEnum = exports.TransactionAllOfPaymentChannelEnum || (exports.TransactionAllOfPaymentChannelEnum = {}));
/**
    * @export
    * @enum {string}
    */
var TransactionBaseTransactionTypeEnum;
(function (TransactionBaseTransactionTypeEnum) {
    TransactionBaseTransactionTypeEnum["Digital"] = "digital";
    TransactionBaseTransactionTypeEnum["Place"] = "place";
    TransactionBaseTransactionTypeEnum["Special"] = "special";
    TransactionBaseTransactionTypeEnum["Unresolved"] = "unresolved";
})(TransactionBaseTransactionTypeEnum = exports.TransactionBaseTransactionTypeEnum || (exports.TransactionBaseTransactionTypeEnum = {}));
/**
 * An identifier classifying the transaction type.  This field is only populated for European institutions. For institutions in the US and Canada, this field is set to `null`.  `adjustment:` Bank adjustment  `atm:` Cash deposit or withdrawal via an automated teller machine  `bank charge:` Charge or fee levied by the institution  `bill payment`: Payment of a bill  `cash:` Cash deposit or withdrawal  `cashback:` Cash withdrawal while making a debit card purchase  `cheque:` Document ordering the payment of money to another person or organization  `direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval  `interest:` Interest earned or incurred  `purchase:` Purchase made with a debit or credit card  `standing order:` Payment instructed by the account holder to a third party at a regular interval  `transfer:` Transfer of money between accounts
 * @export
 * @enum {string}
 */
var TransactionCode;
(function (TransactionCode) {
    TransactionCode["Adjustment"] = "adjustment";
    TransactionCode["Atm"] = "atm";
    TransactionCode["BankCharge"] = "bank charge";
    TransactionCode["BillPayment"] = "bill payment";
    TransactionCode["Cash"] = "cash";
    TransactionCode["Cashback"] = "cashback";
    TransactionCode["Cheque"] = "cheque";
    TransactionCode["DirectDebit"] = "direct debit";
    TransactionCode["Interest"] = "interest";
    TransactionCode["Purchase"] = "purchase";
    TransactionCode["StandingOrder"] = "standing order";
    TransactionCode["Transfer"] = "transfer";
    TransactionCode["Null"] = "null";
})(TransactionCode = exports.TransactionCode || (exports.TransactionCode = {}));
/**
 * The current status of the transaction stream.  `MATURE`: A `MATURE` recurring stream should have at least 3 transactions and happen on a regular cadence (For Annual recurring stream, we will mark it `MATURE` after 2 instances).  `EARLY_DETECTION`: When a recurring transaction first appears in the transaction history and before it fulfills the requirement of a mature stream, the status will be `EARLY_DETECTION`.  `TOMBSTONED`: A stream that was previously in the `EARLY_DETECTION` status will move to the `TOMBSTONED` status when no further transactions were found at the next expected date.  `UNKNOWN`: A stream is assigned an `UNKNOWN` status when none of the other statuses are applicable.
 * @export
 * @enum {string}
 */
var TransactionStreamStatus;
(function (TransactionStreamStatus) {
    TransactionStreamStatus["Unknown"] = "UNKNOWN";
    TransactionStreamStatus["Mature"] = "MATURE";
    TransactionStreamStatus["EarlyDetection"] = "EARLY_DETECTION";
    TransactionStreamStatus["Tombstoned"] = "TOMBSTONED";
})(TransactionStreamStatus = exports.TransactionStreamStatus || (exports.TransactionStreamStatus = {}));
/**
 * Transaction field for which the rule is defined.
 * @export
 * @enum {string}
 */
var TransactionsRuleField;
(function (TransactionsRuleField) {
    TransactionsRuleField["TransactionId"] = "TRANSACTION_ID";
    TransactionsRuleField["Name"] = "NAME";
})(TransactionsRuleField = exports.TransactionsRuleField || (exports.TransactionsRuleField = {}));
/**
 * Transaction rule\'s match type. For TRANSACTION_ID field, EXACT_MATCH is available. Matches are case sensitive.
 * @export
 * @enum {string}
 */
var TransactionsRuleType;
(function (TransactionsRuleType) {
    TransactionsRuleType["ExactMatch"] = "EXACT_MATCH";
    TransactionsRuleType["SubstringMatch"] = "SUBSTRING_MATCH";
})(TransactionsRuleType = exports.TransactionsRuleType || (exports.TransactionsRuleType = {}));
/**
 * A description of the update status for transaction pulls of an Item. This field contains the same information provided by transactions webhooks, and may be helpful for webhook troubleshooting or when recovering from missed webhooks.  `TRANSACTIONS_UPDATE_STATUS_UNKNOWN`: Unable to fetch transactions update status for Item. `NOT_READY`: The Item is pending transaction pull. `INITIAL_UPDATE_COMPLETE`: Initial pull for the Item is complete, historical pull is pending. `HISTORICAL_UPDATE_COMPLETE`: Both initial and historical pull for Item are complete.
 * @export
 * @enum {string}
 */
var TransactionsUpdateStatus;
(function (TransactionsUpdateStatus) {
    TransactionsUpdateStatus["TransactionsUpdateStatusUnknown"] = "TRANSACTIONS_UPDATE_STATUS_UNKNOWN";
    TransactionsUpdateStatus["NotReady"] = "NOT_READY";
    TransactionsUpdateStatus["InitialUpdateComplete"] = "INITIAL_UPDATE_COMPLETE";
    TransactionsUpdateStatus["HistoricalUpdateComplete"] = "HISTORICAL_UPDATE_COMPLETE";
})(TransactionsUpdateStatus = exports.TransactionsUpdateStatus || (exports.TransactionsUpdateStatus = {}));
/**
 * The ACH networks used for the funds flow.  For requests submitted as either `ach` or `same-day-ach` the cutoff for same-day is 3:30 PM Eastern Time and the cutoff for next-day transfers is 8:30 PM Eastern Time. It is recommended to submit a request at least 15 minutes before the cutoff time in order to ensure that it will be processed before the cutoff. Any request that is indicated as `same-day-ach` and that misses the same-day cutoff, but is submitted in time for the next-day cutoff, will be sent over next-day rails and will not incur same-day charges.
 * @export
 * @enum {string}
 */
var TransferACHNetwork;
(function (TransferACHNetwork) {
    TransferACHNetwork["Ach"] = "ach";
    TransferACHNetwork["SameDayAch"] = "same-day-ach";
})(TransferACHNetwork = exports.TransferACHNetwork || (exports.TransferACHNetwork = {}));
/**
 *  A decision regarding the proposed transfer.  `approved` – The proposed transfer has received the end user\'s consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended. Refer to the `code` field in the `decision_rationale` object for details.  `declined` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details.  `user_action_required` – An action is required before Plaid can assess the transfer risk and make a decision. The most common scenario is to update authentication for an Item. To complete the required action, initialize Link by setting `transfer.authorization_id` in the request of `/link/token/create`. After Link flow is completed, you may re-attempt the authorization request.
 * @export
 * @enum {string}
 */
var TransferAuthorizationDecision;
(function (TransferAuthorizationDecision) {
    TransferAuthorizationDecision["Approved"] = "approved";
    TransferAuthorizationDecision["Declined"] = "declined";
    TransferAuthorizationDecision["UserActionRequired"] = "user_action_required";
})(TransferAuthorizationDecision = exports.TransferAuthorizationDecision || (exports.TransferAuthorizationDecision = {}));
/**
 * A code representing the rationale for approving or declining the proposed transfer.  If the `rationale_code` is `null`, the transfer passed the authorization check.  Any non-`null` value for an `approved` transfer indicates that the the authorization check could not be run and that you should perform your own risk assessment on the transfer. The code will indicate why the check could not be run. Possible values for an `approved` transfer are:  `MANUALLY_VERIFIED_ITEM` – Item created via a manual entry flow (i.e. Same Day Micro-deposit, Instant Micro-deposit, Database Insights, or Database Match), limited information available.  `ITEM_LOGIN_REQUIRED` – Unable to collect the account information due to Item staleness. Can be resolved by using Link and setting [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) in the request to `/link/token/create`.  `MIGRATED_ACCOUNT_ITEM` - Item created via `/transfer/migrate_account` endpoint, limited information available.  `ERROR` – Unable to collect the account information due to an unspecified error.  The following codes indicate that the authorization decision was `declined`:  `NSF` – Transaction likely to result in a return due to insufficient funds.  `RISK` - Transaction is high-risk.  `TRANSFER_LIMIT_REACHED` - One or several transfer limits are reached, e.g. monthly transfer limit. Check the accompanying `description` field to understand which limit has been reached.
 * @export
 * @enum {string}
 */
var TransferAuthorizationDecisionRationaleCode;
(function (TransferAuthorizationDecisionRationaleCode) {
    TransferAuthorizationDecisionRationaleCode["Nsf"] = "NSF";
    TransferAuthorizationDecisionRationaleCode["Risk"] = "RISK";
    TransferAuthorizationDecisionRationaleCode["TransferLimitReached"] = "TRANSFER_LIMIT_REACHED";
    TransferAuthorizationDecisionRationaleCode["ManuallyVerifiedItem"] = "MANUALLY_VERIFIED_ITEM";
    TransferAuthorizationDecisionRationaleCode["ItemLoginRequired"] = "ITEM_LOGIN_REQUIRED";
    TransferAuthorizationDecisionRationaleCode["PaymentProfileLoginRequired"] = "PAYMENT_PROFILE_LOGIN_REQUIRED";
    TransferAuthorizationDecisionRationaleCode["Error"] = "ERROR";
    TransferAuthorizationDecisionRationaleCode["MigratedAccountItem"] = "MIGRATED_ACCOUNT_ITEM";
    TransferAuthorizationDecisionRationaleCode["Null"] = "null";
})(TransferAuthorizationDecisionRationaleCode = exports.TransferAuthorizationDecisionRationaleCode || (exports.TransferAuthorizationDecisionRationaleCode = {}));
/**
 * Indicates whether the transfer is guaranteed by Plaid (Guarantee customers only). This field will contain either `GUARANTEED` or `NOT_GUARANTEED` indicating whether Plaid will guarantee the transfer. If the transfer is not guaranteed, additional information will be provided in the `guarantee_decision_rationale` field. Refer to the `code` field in `guarantee_decision_rationale` for details.
 * @export
 * @enum {string}
 */
var TransferAuthorizationGuaranteeDecision;
(function (TransferAuthorizationGuaranteeDecision) {
    TransferAuthorizationGuaranteeDecision["Guaranteed"] = "GUARANTEED";
    TransferAuthorizationGuaranteeDecision["NotGuaranteed"] = "NOT_GUARANTEED";
    TransferAuthorizationGuaranteeDecision["Null"] = "null";
})(TransferAuthorizationGuaranteeDecision = exports.TransferAuthorizationGuaranteeDecision || (exports.TransferAuthorizationGuaranteeDecision = {}));
/**
 * A code representing the reason Plaid declined to guarantee this transfer:  `RETURN_BANK`: The risk of a bank-initiated return (for example, an R01/NSF) is too high to guarantee this transfer.  `RETURN_CUSTOMER`: The risk of a customer-initiated return (for example, a R10/Unauthorized) is too high to guarantee this transfer.  `GUARANTEE_LIMIT_REACHED`: This transfer is low-risk, but Guarantee has exhausted an internal limit on the number or rate of guarantees that applies to this transfer.  `RISK_ESTIMATE_UNAVAILABLE`: A risk estimate is unavailable for this Item.  `REQUIRED_PARAM_MISSING`: Required fields are missing.
 * @export
 * @enum {string}
 */
var TransferAuthorizationGuaranteeDecisionRationaleCode;
(function (TransferAuthorizationGuaranteeDecisionRationaleCode) {
    TransferAuthorizationGuaranteeDecisionRationaleCode["ReturnBank"] = "RETURN_BANK";
    TransferAuthorizationGuaranteeDecisionRationaleCode["ReturnCustomer"] = "RETURN_CUSTOMER";
    TransferAuthorizationGuaranteeDecisionRationaleCode["GuaranteeLimitReached"] = "GUARANTEE_LIMIT_REACHED";
    TransferAuthorizationGuaranteeDecisionRationaleCode["RiskEstimateUnavailable"] = "RISK_ESTIMATE_UNAVAILABLE";
    TransferAuthorizationGuaranteeDecisionRationaleCode["RequiredParamMissing"] = "REQUIRED_PARAM_MISSING";
})(TransferAuthorizationGuaranteeDecisionRationaleCode = exports.TransferAuthorizationGuaranteeDecisionRationaleCode || (exports.TransferAuthorizationGuaranteeDecisionRationaleCode = {}));
/**
 * Comprises five risk categories (high risk, medium-high risk, medium risk, medium-low risk, low risk) based on the probability of return
 * @export
 * @enum {string}
 */
var TransferAuthorizationRiskLevel;
(function (TransferAuthorizationRiskLevel) {
    TransferAuthorizationRiskLevel["HighRisk"] = "HIGH_RISK";
    TransferAuthorizationRiskLevel["MediumHighRisk"] = "MEDIUM_HIGH_RISK";
    TransferAuthorizationRiskLevel["MediumRisk"] = "MEDIUM_RISK";
    TransferAuthorizationRiskLevel["MediumLowRisk"] = "MEDIUM_LOW_RISK";
    TransferAuthorizationRiskLevel["LowRisk"] = "LOW_RISK";
})(TransferAuthorizationRiskLevel = exports.TransferAuthorizationRiskLevel || (exports.TransferAuthorizationRiskLevel = {}));
/**
 * The type of balance.  `prefunded_rtp_credits` - Your prefunded RTP credit balance with Plaid `prefunded_ach_credits` - Your prefunded ACH credit balance with Plaid
 * @export
 * @enum {string}
 */
var TransferBalanceType;
(function (TransferBalanceType) {
    TransferBalanceType["RtpCredits"] = "prefunded_rtp_credits";
    TransferBalanceType["AchCredits"] = "prefunded_ach_credits";
})(TransferBalanceType = exports.TransferBalanceType || (exports.TransferBalanceType = {}));
/**
 * This field is now deprecated. You may ignore it for transfers created on and after 12/01/2023.  Specifies the source of funds for the transfer. Only valid for `credit` transfers, and defaults to `sweep` if not specified. This field is not specified for `debit` transfers.  `sweep` - Sweep funds from your funding account `prefunded_rtp_credits` - Use your prefunded RTP credit balance with Plaid `prefunded_ach_credits` - Use your prefunded ACH credit balance with Plaid
 * @export
 * @enum {string}
 */
var TransferCreditFundsSource;
(function (TransferCreditFundsSource) {
    TransferCreditFundsSource["Sweep"] = "sweep";
    TransferCreditFundsSource["PrefundedRtpCredits"] = "prefunded_rtp_credits";
    TransferCreditFundsSource["PrefundedAchCredits"] = "prefunded_ach_credits";
    TransferCreditFundsSource["Null"] = "null";
})(TransferCreditFundsSource = exports.TransferCreditFundsSource || (exports.TransferCreditFundsSource = {}));
/**
 * Originator’s diligence status.
 * @export
 * @enum {string}
 */
var TransferDiligenceStatus;
(function (TransferDiligenceStatus) {
    TransferDiligenceStatus["NotSubmitted"] = "not_submitted";
    TransferDiligenceStatus["Submitted"] = "submitted";
    TransferDiligenceStatus["UnderReview"] = "under_review";
    TransferDiligenceStatus["Approved"] = "approved";
    TransferDiligenceStatus["Denied"] = "denied";
    TransferDiligenceStatus["MoreInformationRequired"] = "more_information_required";
})(TransferDiligenceStatus = exports.TransferDiligenceStatus || (exports.TransferDiligenceStatus = {}));
/**
 * Specifies the purpose of the uploaded file.  `\"DUE_DILIGENCE\"` - The transfer due diligence document of the originator.
 * @export
 * @enum {string}
 */
var TransferDocumentPurpose;
(function (TransferDocumentPurpose) {
    TransferDocumentPurpose["DueDiligence"] = "DUE_DILIGENCE";
})(TransferDocumentPurpose = exports.TransferDocumentPurpose || (exports.TransferDocumentPurpose = {}));
/**
 * The type of transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
 * @export
 * @enum {string}
 */
var TransferEventListTransferType;
(function (TransferEventListTransferType) {
    TransferEventListTransferType["Debit"] = "debit";
    TransferEventListTransferType["Credit"] = "credit";
    TransferEventListTransferType["Null"] = "null";
})(TransferEventListTransferType = exports.TransferEventListTransferType || (exports.TransferEventListTransferType = {}));
/**
 * The type of event that this transfer represents. Event types with prefix `sweep` represents events for Plaid Ledger sweeps.  `pending`: A new transfer was created; it is in the pending state.  `cancelled`: The transfer was cancelled by the client.  `failed`: The transfer failed, no funds were moved.  `posted`: The transfer has been successfully submitted to the payment network.  `settled`: The transfer has been successfully completed by the payment network.  `funds_available`: Funds from the transfer have been released from hold and applied to the ledger\'s available balance. (Only applicable to ACH debits.)  `returned`: A posted transfer was returned.  `swept`: The transfer was swept to / from the sweep account.  `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer’s business checking account.  `return_swept`: Due to the transfer being returned, funds were pulled from or pushed back to the sweep account.  `sweep.pending`: A new ledger sweep was created; it is in the pending state.  `sweep.posted`: The ledger sweep has been successfully submitted to the payment network.  `sweep.settled`: The transaction has settled in the funding account. This means that funds withdrawn from Plaid Ledger balance have reached the funding account, or funds to be deposited into the Plaid Ledger Balance have been pulled, and the hold period has begun.  `sweep.returned`: A posted ledger sweep was returned.  `sweep.failed`: The ledger sweep failed, no funds were moved.  `sweep.funds_available`: Funds from the ledger sweep have been released from hold and applied to the ledger\'s available balance. This is only applicable to debits.  `refund.pending`: A new refund was created; it is in the pending state.  `refund.cancelled`: The refund was cancelled.  `refund.failed`: The refund failed, no funds were moved.  `refund.posted`: The refund has been successfully submitted to the payment network.  `refund.settled`: The refund transaction has settled in the Plaid linked account.  `refund.returned`: A posted refund was returned.  `refund.swept`: The refund was swept from the sweep account.  `refund.return_swept`: Due to the refund being returned, funds were pushed back to the sweep account.
 * @export
 * @enum {string}
 */
var TransferEventType;
(function (TransferEventType) {
    TransferEventType["Pending"] = "pending";
    TransferEventType["Cancelled"] = "cancelled";
    TransferEventType["Failed"] = "failed";
    TransferEventType["Posted"] = "posted";
    TransferEventType["Settled"] = "settled";
    TransferEventType["FundsAvailable"] = "funds_available";
    TransferEventType["Returned"] = "returned";
    TransferEventType["Swept"] = "swept";
    TransferEventType["SweptSettled"] = "swept_settled";
    TransferEventType["ReturnSwept"] = "return_swept";
    TransferEventType["SweepPending"] = "sweep.pending";
    TransferEventType["SweepPosted"] = "sweep.posted";
    TransferEventType["SweepSettled"] = "sweep.settled";
    TransferEventType["SweepReturned"] = "sweep.returned";
    TransferEventType["SweepFailed"] = "sweep.failed";
    TransferEventType["SweepFundsAvailable"] = "sweep.funds_available";
    TransferEventType["RefundPending"] = "refund.pending";
    TransferEventType["RefundCancelled"] = "refund.cancelled";
    TransferEventType["RefundFailed"] = "refund.failed";
    TransferEventType["RefundPosted"] = "refund.posted";
    TransferEventType["RefundSettled"] = "refund.settled";
    TransferEventType["RefundReturned"] = "refund.returned";
    TransferEventType["RefundSwept"] = "refund.swept";
    TransferEventType["RefundReturnSwept"] = "refund.return_swept";
})(TransferEventType = exports.TransferEventType || (exports.TransferEventType = {}));
/**
 *  A decision regarding the proposed transfer.  `APPROVED` – The proposed transfer has received the end user\'s consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when `decision_rationale.code` is `ITEM_LOGIN_REQUIRED`). Refer to the `code` field in the `decision_rationale` object for details.  `DECLINED` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details.
 * @export
 * @enum {string}
 */
var TransferIntentAuthorizationDecision;
(function (TransferIntentAuthorizationDecision) {
    TransferIntentAuthorizationDecision["Approved"] = "APPROVED";
    TransferIntentAuthorizationDecision["Declined"] = "DECLINED";
})(TransferIntentAuthorizationDecision = exports.TransferIntentAuthorizationDecision || (exports.TransferIntentAuthorizationDecision = {}));
/**
 * The direction of the flow of transfer funds.  `PAYMENT`: Transfers funds from an end user\'s account to your business account.  `DISBURSEMENT`: Transfers funds from your business account to an end user\'s account.
 * @export
 * @enum {string}
 */
var TransferIntentCreateMode;
(function (TransferIntentCreateMode) {
    TransferIntentCreateMode["Payment"] = "PAYMENT";
    TransferIntentCreateMode["Disbursement"] = "DISBURSEMENT";
})(TransferIntentCreateMode = exports.TransferIntentCreateMode || (exports.TransferIntentCreateMode = {}));
/**
 * The network or rails used for the transfer. Defaults to `same-day-ach`.  For transfers submitted using `ach`, the next-day cutoff is 8:30 PM Eastern Time.  For transfers submitted using `same-day-ach`, the same-day cutoff is 3:30 PM Eastern Time. If the transfer is submitted after this cutoff but before the next-day cutoff, it will be sent over next-day rails and will not incur same-day charges.  For transfers submitted using `rtp`, in the case that the account being credited does not support RTP, the transfer will be sent over ACH as long as an `ach_class` is provided in the request. If RTP isn\'t supported by the account and no `ach_class` is provided, the transfer will fail to be submitted.
 * @export
 * @enum {string}
 */
var TransferIntentCreateNetwork;
(function (TransferIntentCreateNetwork) {
    TransferIntentCreateNetwork["Ach"] = "ach";
    TransferIntentCreateNetwork["SameDayAch"] = "same-day-ach";
    TransferIntentCreateNetwork["Rtp"] = "rtp";
})(TransferIntentCreateNetwork = exports.TransferIntentCreateNetwork || (exports.TransferIntentCreateNetwork = {}));
/**
 * The status of the transfer intent.  `PENDING`: The transfer intent is pending. `SUCCEEDED`: The transfer intent was successfully created. `FAILED`: The transfer intent was unable to be created.
 * @export
 * @enum {string}
 */
var TransferIntentStatus;
(function (TransferIntentStatus) {
    TransferIntentStatus["Pending"] = "PENDING";
    TransferIntentStatus["Succeeded"] = "SUCCEEDED";
    TransferIntentStatus["Failed"] = "FAILED";
})(TransferIntentStatus = exports.TransferIntentStatus || (exports.TransferIntentStatus = {}));
/**
 * The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, or `returned`.  An error will be returned if the event type is incompatible with the current ledger sweep status. Compatible status --> event type transitions include:  `sweep.pending` --> `sweep.posted`  `sweep.pending` --> `sweep.failed`  `sweep.posted` --> `sweep.settled`  `sweep.posted` --> `sweep.returned`  `sweep.settled` --> `sweep.returned`
 * @export
 * @enum {string}
 */
var TransferLedgerSweepSimulateEventType;
(function (TransferLedgerSweepSimulateEventType) {
    TransferLedgerSweepSimulateEventType["Posted"] = "sweep.posted";
    TransferLedgerSweepSimulateEventType["Settled"] = "sweep.settled";
    TransferLedgerSweepSimulateEventType["Returned"] = "sweep.returned";
    TransferLedgerSweepSimulateEventType["Failed"] = "sweep.failed";
})(TransferLedgerSweepSimulateEventType = exports.TransferLedgerSweepSimulateEventType || (exports.TransferLedgerSweepSimulateEventType = {}));
/**
 * The network or rails used for the transfer.  For transfers submitted as `ach`, the next-day cutoff is 8:30 PM Eastern Time.  For transfers submitted as `same-day-ach`, the same-day cutoff is 3:30 PM Eastern Time. If the transfer is submitted after this cutoff but before the next-day cutoff, it will be sent over next-day rails and will not incur same-day charges; this will apply to both legs of the transfer if applicable.  For transfers submitted as `rtp`,  Plaid will automatically route between Real Time Payment rail by TCH or FedNow rails as necessary. If a transfer is submitted as `rtp` and the counterparty account is not eligible for RTP, the `/transfer/authorization/create` request will fail with an `INVALID_FIELD` error code. To pre-check to determine whether a counterparty account can support RTP, call `/transfer/capabilities/get` before calling `/transfer/authorization/create`.  Wire transfers are currently in early availability. To request access to `wire` as a payment network, contact your Account Manager. For transfers submitted as `wire`, the `type` must be `credit`; wire debits are not supported. The cutoff to submit a wire payment is 4:30 PM Eastern Time on a business day; wires submitted after that time will be processed on the next business day.
 * @export
 * @enum {string}
 */
var TransferNetwork;
(function (TransferNetwork) {
    TransferNetwork["Ach"] = "ach";
    TransferNetwork["SameDayAch"] = "same-day-ach";
    TransferNetwork["Rtp"] = "rtp";
    TransferNetwork["Wire"] = "wire";
})(TransferNetwork = exports.TransferNetwork || (exports.TransferNetwork = {}));
/**
 * Networks eligible for recurring transfers.
 * @export
 * @enum {string}
 */
var TransferRecurringNetwork;
(function (TransferRecurringNetwork) {
    TransferRecurringNetwork["Ach"] = "ach";
    TransferRecurringNetwork["SameDayAch"] = "same-day-ach";
    TransferRecurringNetwork["Rtp"] = "rtp";
})(TransferRecurringNetwork = exports.TransferRecurringNetwork || (exports.TransferRecurringNetwork = {}));
/**
 * The status of the recurring transfer.  `active`: The recurring transfer is currently active. `cancelled`: The recurring transfer was cancelled by the client or Plaid. `expired`: The recurring transfer has completed all originations according to its recurring schedule.
 * @export
 * @enum {string}
 */
var TransferRecurringStatus;
(function (TransferRecurringStatus) {
    TransferRecurringStatus["Active"] = "active";
    TransferRecurringStatus["Cancelled"] = "cancelled";
    TransferRecurringStatus["Expired"] = "expired";
})(TransferRecurringStatus = exports.TransferRecurringStatus || (exports.TransferRecurringStatus = {}));
/**
 * The status of the refund.  `pending`: A new refund was created; it is in the pending state. `posted`: The refund has been successfully submitted to the payment network. `settled`: Credits have been refunded to the Plaid linked account. `cancelled`: The refund was cancelled by the client. `failed`: The refund has failed. `returned`: The refund was returned.
 * @export
 * @enum {string}
 */
var TransferRefundStatus;
(function (TransferRefundStatus) {
    TransferRefundStatus["Pending"] = "pending";
    TransferRefundStatus["Posted"] = "posted";
    TransferRefundStatus["Cancelled"] = "cancelled";
    TransferRefundStatus["Failed"] = "failed";
    TransferRefundStatus["Settled"] = "settled";
    TransferRefundStatus["Returned"] = "returned";
})(TransferRefundStatus = exports.TransferRefundStatus || (exports.TransferRefundStatus = {}));
/**
 * The unit of the recurring interval.
 * @export
 * @enum {string}
 */
var TransferScheduleIntervalUnit;
(function (TransferScheduleIntervalUnit) {
    TransferScheduleIntervalUnit["Week"] = "week";
    TransferScheduleIntervalUnit["Month"] = "month";
})(TransferScheduleIntervalUnit = exports.TransferScheduleIntervalUnit || (exports.TransferScheduleIntervalUnit = {}));
/**
 * The status of the transfer.  `pending`: A new transfer was created; it is in the pending state. `posted`: The transfer has been successfully submitted to the payment network. `settled`: The transfer was successfully completed by the payment network. Note that funds from received debits are not available to be moved out of the Ledger until the transfer reaches `funds_available` status. For credit transactions, `settled` means the funds have been delivered to the receiving bank account. `funds_available`: Funds from the transfer have been released from hold and applied to the ledger\'s available balance. (Only applicable to ACH debits.) `cancelled`: The transfer was cancelled by the client. `failed`: The transfer failed, no funds were moved. `returned`: A posted transfer was returned.
 * @export
 * @enum {string}
 */
var TransferStatus;
(function (TransferStatus) {
    TransferStatus["Pending"] = "pending";
    TransferStatus["Posted"] = "posted";
    TransferStatus["Settled"] = "settled";
    TransferStatus["FundsAvailable"] = "funds_available";
    TransferStatus["Cancelled"] = "cancelled";
    TransferStatus["Failed"] = "failed";
    TransferStatus["Returned"] = "returned";
})(TransferStatus = exports.TransferStatus || (exports.TransferStatus = {}));
/**
 * The status of the sweep for the transfer.  `unswept`: The transfer hasn\'t been swept yet. `swept`: The transfer was swept to the sweep account. `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer’s business checking account. `return_swept`: The transfer was returned, funds were pulled back or pushed back to the sweep account. `funds_available`: Funds from the transfer have been released from hold and applied to the ledger\'s available balance. This is only applicable to debits. `null`: The transfer will never be swept (e.g. if the transfer is cancelled or returned before being swept)
 * @export
 * @enum {string}
 */
var TransferSweepStatus;
(function (TransferSweepStatus) {
    TransferSweepStatus["Null"] = "null";
    TransferSweepStatus["Unswept"] = "unswept";
    TransferSweepStatus["Swept"] = "swept";
    TransferSweepStatus["SweptSettled"] = "swept_settled";
    TransferSweepStatus["ReturnSwept"] = "return_swept";
    TransferSweepStatus["FundsAvailable"] = "funds_available";
})(TransferSweepStatus = exports.TransferSweepStatus || (exports.TransferSweepStatus = {}));
/**
 * The type of transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
 * @export
 * @enum {string}
 */
var TransferType;
(function (TransferType) {
    TransferType["Debit"] = "debit";
    TransferType["Credit"] = "credit";
})(TransferType = exports.TransferType || (exports.TransferType = {}));
/**
 * The income category for a specified income source
 * @export
 * @enum {string}
 */
var UserStatedIncomeSourceCategory;
(function (UserStatedIncomeSourceCategory) {
    UserStatedIncomeSourceCategory["Other"] = "OTHER";
    UserStatedIncomeSourceCategory["Salary"] = "SALARY";
    UserStatedIncomeSourceCategory["Unemployment"] = "UNEMPLOYMENT";
    UserStatedIncomeSourceCategory["Cash"] = "CASH";
    UserStatedIncomeSourceCategory["GigEconomy"] = "GIG_ECONOMY";
    UserStatedIncomeSourceCategory["Rental"] = "RENTAL";
    UserStatedIncomeSourceCategory["ChildSupport"] = "CHILD_SUPPORT";
    UserStatedIncomeSourceCategory["Military"] = "MILITARY";
    UserStatedIncomeSourceCategory["Retirement"] = "RETIREMENT";
    UserStatedIncomeSourceCategory["LongTermDisability"] = "LONG_TERM_DISABILITY";
    UserStatedIncomeSourceCategory["BankInterest"] = "BANK_INTEREST";
})(UserStatedIncomeSourceCategory = exports.UserStatedIncomeSourceCategory || (exports.UserStatedIncomeSourceCategory = {}));
/**
 * The pay frequency of a specified income source
 * @export
 * @enum {string}
 */
var UserStatedIncomeSourceFrequency;
(function (UserStatedIncomeSourceFrequency) {
    UserStatedIncomeSourceFrequency["Unknown"] = "UNKNOWN";
    UserStatedIncomeSourceFrequency["Weekly"] = "WEEKLY";
    UserStatedIncomeSourceFrequency["Biweekly"] = "BIWEEKLY";
    UserStatedIncomeSourceFrequency["SemiMonthly"] = "SEMI_MONTHLY";
    UserStatedIncomeSourceFrequency["Monthly"] = "MONTHLY";
})(UserStatedIncomeSourceFrequency = exports.UserStatedIncomeSourceFrequency || (exports.UserStatedIncomeSourceFrequency = {}));
/**
 * The pay type - `GROSS`, `NET`, or `UNKNOWN` for a specified income source
 * @export
 * @enum {string}
 */
var UserStatedIncomeSourcePayType;
(function (UserStatedIncomeSourcePayType) {
    UserStatedIncomeSourcePayType["Unknown"] = "UNKNOWN";
    UserStatedIncomeSourcePayType["Gross"] = "GROSS";
    UserStatedIncomeSourcePayType["Net"] = "NET";
})(UserStatedIncomeSourcePayType = exports.UserStatedIncomeSourcePayType || (exports.UserStatedIncomeSourcePayType = {}));
/**
 * The verification refresh status. One of the following:  `\"VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED\"` User presence is required to refresh an income verification. `\"VERIFICATION_REFRESH_SUCCESSFUL\"` The income verification refresh was successful. `\"VERIFICATION_REFRESH_NOT_FOUND\"` No new data was found after the income verification refresh.
 * @export
 * @enum {string}
 */
var VerificationRefreshStatus;
(function (VerificationRefreshStatus) {
    VerificationRefreshStatus["StatusUserPresenceRequired"] = "VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED";
    VerificationRefreshStatus["Successful"] = "VERIFICATION_REFRESH_SUCCESSFUL";
    VerificationRefreshStatus["NotFound"] = "VERIFICATION_REFRESH_NOT_FOUND";
})(VerificationRefreshStatus = exports.VerificationRefreshStatus || (exports.VerificationRefreshStatus = {}));
/**
 * The verification status. One of the following:  `\"VERIFIED\"`: The information was successfully verified.  `\"UNVERIFIED\"`: The verification has not yet been performed.  `\"NEEDS_INFO\"`: The verification was attempted but could not be completed due to missing information.  \"`UNABLE_TO_VERIFY`\": The verification was performed and the information could not be verified.  `\"UNKNOWN\"`: The verification status is unknown.
 * @export
 * @enum {string}
 */
var VerificationStatus;
(function (VerificationStatus) {
    VerificationStatus["Verified"] = "VERIFIED";
    VerificationStatus["Unverified"] = "UNVERIFIED";
    VerificationStatus["NeedsInfo"] = "NEEDS_INFO";
    VerificationStatus["UnableToVerify"] = "UNABLE_TO_VERIFY";
    VerificationStatus["Unknown"] = "UNKNOWN";
})(VerificationStatus = exports.VerificationStatus || (exports.VerificationStatus = {}));
/**
 * The outcome status for the associated Identity Verification attempt\'s `verify_sms` step. This field will always have the same value as `steps.verify_sms`.
 * @export
 * @enum {string}
 */
var VerifySMSDetailsStatus;
(function (VerifySMSDetailsStatus) {
    VerifySMSDetailsStatus["Success"] = "success";
    VerifySMSDetailsStatus["Failed"] = "failed";
})(VerifySMSDetailsStatus = exports.VerifySMSDetailsStatus || (exports.VerifySMSDetailsStatus = {}));
/**
 * An ISO-4217 currency code, used with e-wallets and transactions.
 * @export
 * @enum {string}
 */
var WalletISOCurrencyCode;
(function (WalletISOCurrencyCode) {
    WalletISOCurrencyCode["Gbp"] = "GBP";
    WalletISOCurrencyCode["Eur"] = "EUR";
})(WalletISOCurrencyCode = exports.WalletISOCurrencyCode || (exports.WalletISOCurrencyCode = {}));
/**
 * The payment scheme used to execute this transaction. This is present only for transaction types `PAYOUT` and `REFUND`.  `FASTER_PAYMENTS`: The standard payment scheme within the UK.  `SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area.  `SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment to a beneficiary within the SEPA area.
 * @export
 * @enum {string}
 */
var WalletPaymentScheme;
(function (WalletPaymentScheme) {
    WalletPaymentScheme["Null"] = "null";
    WalletPaymentScheme["FasterPayments"] = "FASTER_PAYMENTS";
    WalletPaymentScheme["SepaCreditTransfer"] = "SEPA_CREDIT_TRANSFER";
    WalletPaymentScheme["SepaCreditTransferInstant"] = "SEPA_CREDIT_TRANSFER_INSTANT";
})(WalletPaymentScheme = exports.WalletPaymentScheme || (exports.WalletPaymentScheme = {}));
/**
 * The status of the wallet.  `UNKNOWN`: The wallet status is unknown.  `ACTIVE`: The wallet is active and ready to send money to and receive money from.  `CLOSED`: The wallet is closed. Any transactions made to or from this wallet will error.
 * @export
 * @enum {string}
 */
var WalletStatus;
(function (WalletStatus) {
    WalletStatus["Unknown"] = "UNKNOWN";
    WalletStatus["Active"] = "ACTIVE";
    WalletStatus["Closed"] = "CLOSED";
})(WalletStatus = exports.WalletStatus || (exports.WalletStatus = {}));
/**
    * @export
    * @enum {string}
    */
var WalletTransactionTypeEnum;
(function (WalletTransactionTypeEnum) {
    WalletTransactionTypeEnum["BankTransfer"] = "BANK_TRANSFER";
    WalletTransactionTypeEnum["Payout"] = "PAYOUT";
    WalletTransactionTypeEnum["PisPayIn"] = "PIS_PAY_IN";
    WalletTransactionTypeEnum["Refund"] = "REFUND";
    WalletTransactionTypeEnum["FundsSweep"] = "FUNDS_SWEEP";
    WalletTransactionTypeEnum["Return"] = "RETURN";
    WalletTransactionTypeEnum["Recall"] = "RECALL";
})(WalletTransactionTypeEnum = exports.WalletTransactionTypeEnum || (exports.WalletTransactionTypeEnum = {}));
/**
 * The error code of a failed transaction. Error codes include: `EXTERNAL_SYSTEM`: The transaction was declined by an external system. `EXPIRED`: The transaction request has expired. `CANCELLED`: The transaction request was rescinded. `INVALID`: The transaction did not meet certain criteria, such as an inactive account or no valid counterparty, etc. `UNKNOWN`: The transaction was unsuccessful, but the exact cause is unknown.
 * @export
 * @enum {string}
 */
var WalletTransactionFailureReason;
(function (WalletTransactionFailureReason) {
    WalletTransactionFailureReason["ExternalSystem"] = "EXTERNAL_SYSTEM";
    WalletTransactionFailureReason["Expired"] = "EXPIRED";
    WalletTransactionFailureReason["Cancelled"] = "CANCELLED";
    WalletTransactionFailureReason["Invalid"] = "INVALID";
    WalletTransactionFailureReason["Unknown"] = "UNKNOWN";
})(WalletTransactionFailureReason = exports.WalletTransactionFailureReason || (exports.WalletTransactionFailureReason = {}));
/**
    * @export
    * @enum {string}
    */
var WalletTransactionGetResponseTypeEnum;
(function (WalletTransactionGetResponseTypeEnum) {
    WalletTransactionGetResponseTypeEnum["BankTransfer"] = "BANK_TRANSFER";
    WalletTransactionGetResponseTypeEnum["Payout"] = "PAYOUT";
    WalletTransactionGetResponseTypeEnum["PisPayIn"] = "PIS_PAY_IN";
    WalletTransactionGetResponseTypeEnum["Refund"] = "REFUND";
    WalletTransactionGetResponseTypeEnum["FundsSweep"] = "FUNDS_SWEEP";
    WalletTransactionGetResponseTypeEnum["Return"] = "RETURN";
    WalletTransactionGetResponseTypeEnum["Recall"] = "RECALL";
})(WalletTransactionGetResponseTypeEnum = exports.WalletTransactionGetResponseTypeEnum || (exports.WalletTransactionGetResponseTypeEnum = {}));
/**
    * @export
    * @enum {string}
    */
var WalletTransactionRelationTypeEnum;
(function (WalletTransactionRelationTypeEnum) {
    WalletTransactionRelationTypeEnum["Payout"] = "PAYOUT";
    WalletTransactionRelationTypeEnum["Return"] = "RETURN";
    WalletTransactionRelationTypeEnum["Refund"] = "REFUND";
    WalletTransactionRelationTypeEnum["FundsSweep"] = "FUNDS_SWEEP";
})(WalletTransactionRelationTypeEnum = exports.WalletTransactionRelationTypeEnum || (exports.WalletTransactionRelationTypeEnum = {}));
/**
 * The status of the transaction.  `AUTHORISING`: The transaction is being processed for validation and compliance.  `INITIATED`: The transaction has been initiated and is currently being processed.  `EXECUTED`: The transaction has been successfully executed and is considered complete. This is only applicable for debit transactions.  `SETTLED`: The transaction has settled and funds are available for use. This is only applicable for credit transactions. A transaction will typically settle within seconds to several days, depending on which payment rail is used.  `FAILED`: The transaction failed to process successfully. This is a terminal status.  `BLOCKED`: The transaction has been blocked for violating compliance rules. This is a terminal status.
 * @export
 * @enum {string}
 */
var WalletTransactionStatus;
(function (WalletTransactionStatus) {
    WalletTransactionStatus["Authorising"] = "AUTHORISING";
    WalletTransactionStatus["Initiated"] = "INITIATED";
    WalletTransactionStatus["Executed"] = "EXECUTED";
    WalletTransactionStatus["Settled"] = "SETTLED";
    WalletTransactionStatus["Blocked"] = "BLOCKED";
    WalletTransactionStatus["Failed"] = "FAILED";
})(WalletTransactionStatus = exports.WalletTransactionStatus || (exports.WalletTransactionStatus = {}));
/**
    * @export
    * @enum {string}
    */
var WarningWarningCodeEnum;
(function (WarningWarningCodeEnum) {
    WarningWarningCodeEnum["OwnersUnavailable"] = "OWNERS_UNAVAILABLE";
    WarningWarningCodeEnum["InvestmentsUnavailable"] = "INVESTMENTS_UNAVAILABLE";
    WarningWarningCodeEnum["TransactionsUnavailable"] = "TRANSACTIONS_UNAVAILABLE";
})(WarningWarningCodeEnum = exports.WarningWarningCodeEnum || (exports.WarningWarningCodeEnum = {}));
/**
 * The kind of official document represented by this object.  `birth_certificate` - A certificate of birth  `drivers_license` - A license to operate a motor vehicle  `immigration_number` - Immigration or residence documents  `military_id` - Identification issued by a military group  `other` - Any document not covered by other categories  `passport` - An official passport issue by a government  `personal_identification` - Any generic personal identification that is not covered by other categories  `ration_card` - Identification that entitles the holder to rations  `ssn` - United States Social Security Number  `student_id` - Identification issued by an educational institution  `tax_id` - Identification issued for the purpose of collecting taxes  `travel_document` - Visas, entry permits, refugee documents, etc.  `voter_id` - Identification issued for the purpose of voting
 * @export
 * @enum {string}
 */
var WatchlistScreeningDocumentType;
(function (WatchlistScreeningDocumentType) {
    WatchlistScreeningDocumentType["BirthCertificate"] = "birth_certificate";
    WatchlistScreeningDocumentType["DriversLicense"] = "drivers_license";
    WatchlistScreeningDocumentType["ImmigrationNumber"] = "immigration_number";
    WatchlistScreeningDocumentType["MilitaryId"] = "military_id";
    WatchlistScreeningDocumentType["Other"] = "other";
    WatchlistScreeningDocumentType["Passport"] = "passport";
    WatchlistScreeningDocumentType["PersonalIdentification"] = "personal_identification";
    WatchlistScreeningDocumentType["RationCard"] = "ration_card";
    WatchlistScreeningDocumentType["Ssn"] = "ssn";
    WatchlistScreeningDocumentType["StudentId"] = "student_id";
    WatchlistScreeningDocumentType["TaxId"] = "tax_id";
    WatchlistScreeningDocumentType["TravelDocument"] = "travel_document";
    WatchlistScreeningDocumentType["VoterId"] = "voter_id";
})(WatchlistScreeningDocumentType = exports.WatchlistScreeningDocumentType || (exports.WatchlistScreeningDocumentType = {}));
/**
 * The name of a field that can be reset back to null
 * @export
 * @enum {string}
 */
var WatchlistScreeningEntityUpdateRequestResettableField;
(function (WatchlistScreeningEntityUpdateRequestResettableField) {
    WatchlistScreeningEntityUpdateRequestResettableField["Assignee"] = "assignee";
})(WatchlistScreeningEntityUpdateRequestResettableField = exports.WatchlistScreeningEntityUpdateRequestResettableField || (exports.WatchlistScreeningEntityUpdateRequestResettableField = {}));
/**
 * The current state of review. All watchlist screening hits begin in a `pending_review` state but can be changed by creating a review. When a hit is in the `pending_review` state, it will always show the latest version of the watchlist data Plaid has available and be compared against the latest customer information saved in the watchlist screening. Once a hit has been marked as `confirmed` or `dismissed` it will no longer be updated so that the state is as it was when the review was first conducted.
 * @export
 * @enum {string}
 */
var WatchlistScreeningHitStatus;
(function (WatchlistScreeningHitStatus) {
    WatchlistScreeningHitStatus["Confirmed"] = "confirmed";
    WatchlistScreeningHitStatus["PendingReview"] = "pending_review";
    WatchlistScreeningHitStatus["Dismissed"] = "dismissed";
})(WatchlistScreeningHitStatus = exports.WatchlistScreeningHitStatus || (exports.WatchlistScreeningHitStatus = {}));
/**
 * The name of a field that can be reset back to null
 * @export
 * @enum {string}
 */
var WatchlistScreeningIndividualUpdateRequestResettableField;
(function (WatchlistScreeningIndividualUpdateRequestResettableField) {
    WatchlistScreeningIndividualUpdateRequestResettableField["Assignee"] = "assignee";
})(WatchlistScreeningIndividualUpdateRequestResettableField = exports.WatchlistScreeningIndividualUpdateRequestResettableField || (exports.WatchlistScreeningIndividualUpdateRequestResettableField = {}));
/**
 * A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.
 * @export
 * @enum {string}
 */
var WatchlistScreeningStatus;
(function (WatchlistScreeningStatus) {
    WatchlistScreeningStatus["Rejected"] = "rejected";
    WatchlistScreeningStatus["PendingReview"] = "pending_review";
    WatchlistScreeningStatus["Cleared"] = "cleared";
})(WatchlistScreeningStatus = exports.WatchlistScreeningStatus || (exports.WatchlistScreeningStatus = {}));
/**
 * Names that are explicitly marked as low quality either by their `source` list, or by `plaid` by a series of additional checks done by Plaid. Plaid does not ever surface a hit as a result of a weak name alone. If a name has no quality issues, this value will be `none`.
 * @export
 * @enum {string}
 */
var WeakAliasDetermination;
(function (WeakAliasDetermination) {
    WeakAliasDetermination["None"] = "none";
    WeakAliasDetermination["Source"] = "source";
    WeakAliasDetermination["Plaid"] = "plaid";
})(WeakAliasDetermination = exports.WeakAliasDetermination || (exports.WeakAliasDetermination = {}));
/**
 * The Plaid environment the webhook was sent from
 * @export
 * @enum {string}
 */
var WebhookEnvironmentValues;
(function (WebhookEnvironmentValues) {
    WebhookEnvironmentValues["Sandbox"] = "sandbox";
    WebhookEnvironmentValues["Production"] = "production";
})(WebhookEnvironmentValues = exports.WebhookEnvironmentValues || (exports.WebhookEnvironmentValues = {}));
/**
 * The webhook types that can be fired by this test endpoint.
 * @export
 * @enum {string}
 */
var WebhookType;
(function (WebhookType) {
    WebhookType["Auth"] = "AUTH";
    WebhookType["Holdings"] = "HOLDINGS";
    WebhookType["InvestmentsTransactions"] = "INVESTMENTS_TRANSACTIONS";
    WebhookType["Item"] = "ITEM";
    WebhookType["Liabilities"] = "LIABILITIES";
    WebhookType["Transactions"] = "TRANSACTIONS";
    WebhookType["Assets"] = "ASSETS";
})(WebhookType = exports.WebhookType || (exports.WebhookType = {}));
/**
 * The type of rate which indicates how the predicted yield was calculated. It is one of:  `coupon`: the annualized interest rate for securities with a one-year term or longer, such as treasury notes and bonds.  `coupon_equivalent`: the calculated equivalent for the annualized interest rate factoring in the discount rate and time to maturity, for shorter term, non-interest-bearing securities such as treasury bills.  `discount`: the rate at which the present value or cost is discounted from the future value upon maturity, also known as the face value.  `yield`: the total predicted rate of return factoring in both the discount rate and the coupon rate, applicable to securities such as exchange-traded bonds which can both be interest-bearing as well as sold at a discount off its face value.
 * @export
 * @enum {string}
 */
var YieldRateType;
(function (YieldRateType) {
    YieldRateType["Coupon"] = "coupon";
    YieldRateType["CouponEquivalent"] = "coupon_equivalent";
    YieldRateType["Discount"] = "discount";
    YieldRateType["Yield"] = "yield";
    YieldRateType["Null"] = "null";
})(YieldRateType = exports.YieldRateType || (exports.YieldRateType = {}));
/**
 * PlaidApi - axios parameter creator
 * @export
 */
const PlaidApiAxiosParamCreator = function (configuration) {
    return {
        /**
         * The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints, such as `/accounts/get`, return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.
         * @summary Retrieve real-time balance data
         * @param {AccountsBalanceGetRequest} accountsBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsBalanceGet: (accountsBalanceGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'accountsBalanceGetRequest' is not null or undefined
            common_1.assertParamExists('accountsBalanceGet', 'accountsBalanceGetRequest', accountsBalanceGetRequest);
            const localVarPath = `/accounts/balance/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(accountsBalanceGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link\'s [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you.  `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older.  For realtime balance information, use the paid endpoint `/accounts/balance/get` instead.
         * @summary Retrieve accounts
         * @param {AccountsGetRequest} accountsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsGet: (accountsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'accountsGetRequest' is not null or undefined
            common_1.assertParamExists('accountsGet', 'accountsGetRequest', accountsGetRequest);
            const localVarPath = `/accounts/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(accountsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
         * @summary Retrieve information about a Plaid application
         * @param {ApplicationGetRequest} applicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applicationGet: (applicationGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'applicationGetRequest' is not null or undefined
            common_1.assertParamExists('applicationGet', 'applicationGetRequest', applicationGetRequest);
            const localVarPath = `/application/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(applicationGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.  To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
         * @summary Create Asset Report Audit Copy
         * @param {AssetReportAuditCopyCreateRequest} assetReportAuditCopyCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyCreate: (assetReportAuditCopyCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportAuditCopyCreateRequest' is not null or undefined
            common_1.assertParamExists('assetReportAuditCopyCreate', 'assetReportAuditCopyCreateRequest', assetReportAuditCopyCreateRequest);
            const localVarPath = `/asset_report/audit_copy/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportAuditCopyCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint.  The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor.  This token can then be used to call `/asset_report/audit_copy/create`.
         * @summary Retrieve an Asset Report Audit Copy
         * @param {AssetReportAuditCopyGetRequest} assetReportAuditCopyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyGet: (assetReportAuditCopyGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportAuditCopyGetRequest' is not null or undefined
            common_1.assertParamExists('assetReportAuditCopyGet', 'assetReportAuditCopyGetRequest', assetReportAuditCopyGetRequest);
            const localVarPath = `/asset_report/audit_copy/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportAuditCopyGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove Asset Report Audit Copy
         * @param {AssetReportAuditCopyRemoveRequest} assetReportAuditCopyRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyRemove: (assetReportAuditCopyRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportAuditCopyRemoveRequest' is not null or undefined
            common_1.assertParamExists('assetReportAuditCopyRemove', 'assetReportAuditCopyRemoveRequest', assetReportAuditCopyRemoveRequest);
            const localVarPath = `/asset_report/audit_copy/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportAuditCopyRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.  The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. The exact amount of time to create the report will vary depending on how many days of history are requested and will typically range from a few seconds to about one minute. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/products/assets/#webhooks).  The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
         * @summary Create an Asset Report
         * @param {AssetReportCreateRequest} assetReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportCreate: (assetReportCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportCreateRequest' is not null or undefined
            common_1.assertParamExists('assetReportCreate', 'assetReportCreateRequest', assetReportCreateRequest);
            const localVarPath = `/asset_report/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.  To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report\'s data.  Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.  Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed.
         * @summary Filter Asset Report
         * @param {AssetReportFilterRequest} assetReportFilterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportFilter: (assetReportFilterRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportFilterRequest' is not null or undefined
            common_1.assertParamExists('assetReportFilter', 'assetReportFilterRequest', assetReportFilterRequest);
            const localVarPath = `/asset_report/filter`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportFilterRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`.  For latency-sensitive applications, you can optionally call `/asset_report/create` with `options.add_ons` set to `[\"fast_assets\"]`. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report.
         * @summary Retrieve an Asset Report
         * @param {AssetReportGetRequest} assetReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportGet: (assetReportGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportGetRequest' is not null or undefined
            common_1.assertParamExists('assetReportGet', 'assetReportGetRequest', assetReportGetRequest);
            const localVarPath = `/asset_report/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve a PDF Asset Report
         * @param {AssetReportPDFGetRequest} assetReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportPdfGet: (assetReportPDFGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportPDFGetRequest' is not null or undefined
            common_1.assertParamExists('assetReportPdfGet', 'assetReportPDFGetRequest', assetReportPDFGetRequest);
            const localVarPath = `/asset_report/pdf/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportPDFGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * An Asset Report is an immutable snapshot of a user\'s assets. In order to \"refresh\" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.  The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string (\"\") for any previously-populated fields you would like set as empty.
         * @summary Refresh an Asset Report
         * @param {AssetReportRefreshRequest} assetReportRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRefresh: (assetReportRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportRefreshRequest' is not null or undefined
            common_1.assertParamExists('assetReportRefresh', 'assetReportRefreshRequest', assetReportRefreshRequest);
            const localVarPath = `/asset_report/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.  The `/asset_report/remove` endpoint allows you to remove access to an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
         * @summary Delete an Asset Report
         * @param {AssetReportRemoveRequest} assetReportRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRemove: (assetReportRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'assetReportRemoveRequest' is not null or undefined
            common_1.assertParamExists('assetReportRemove', 'assetReportRemoveRequest', assetReportRemoveRequest);
            const localVarPath = `/asset_report/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(assetReportRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item\'s checking, savings, and cash management accounts, along with high-level account data and balances when available.  Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22).
         * @summary Retrieve auth data
         * @param {AuthGetRequest} authGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authGet: (authGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'authGetRequest' is not null or undefined
            common_1.assertParamExists('authGet', 'authGetRequest', authGetRequest);
            const localVarPath = `/auth/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(authGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.  The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.  Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
         * @summary Get balance of your Bank Transfer account
         * @param {BankTransferBalanceGetRequest} bankTransferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferBalanceGet: (bankTransferBalanceGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferBalanceGetRequest' is not null or undefined
            common_1.assertParamExists('bankTransferBalanceGet', 'bankTransferBalanceGetRequest', bankTransferBalanceGetRequest);
            const localVarPath = `/bank_transfer/balance/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferBalanceGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
         * @summary Cancel a bank transfer
         * @param {BankTransferCancelRequest} bankTransferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCancel: (bankTransferCancelRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferCancelRequest' is not null or undefined
            common_1.assertParamExists('bankTransferCancel', 'bankTransferCancelRequest', bankTransferCancelRequest);
            const localVarPath = `/bank_transfer/cancel`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferCancelRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
         * @summary Create a bank transfer
         * @param {BankTransferCreateRequest} bankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCreate: (bankTransferCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferCreateRequest' is not null or undefined
            common_1.assertParamExists('bankTransferCreate', 'bankTransferCreateRequest', bankTransferCreateRequest);
            const localVarPath = `/bank_transfer/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/bank_transfer/event/list` endpoint to get a list of Plaid-initiated ACH or bank transfer events based on specified filter criteria. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary List bank transfer events
         * @param {BankTransferEventListRequest} bankTransferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventList: (bankTransferEventListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferEventListRequest' is not null or undefined
            common_1.assertParamExists('bankTransferEventList', 'bankTransferEventListRequest', bankTransferEventListRequest);
            const localVarPath = `/bank_transfer/event/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferEventListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/bank_transfer/event/sync` allows you to request up to the next 25 Plaid-initiated bank transfer events that happened after a specific `event_id`. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://www.plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary Sync bank transfer events
         * @param {BankTransferEventSyncRequest} bankTransferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventSync: (bankTransferEventSyncRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferEventSyncRequest' is not null or undefined
            common_1.assertParamExists('bankTransferEventSync', 'bankTransferEventSyncRequest', bankTransferEventSyncRequest);
            const localVarPath = `/bank_transfer/event/sync`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferEventSyncRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
         * @summary Retrieve a bank transfer
         * @param {BankTransferGetRequest} bankTransferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferGet: (bankTransferGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferGetRequest' is not null or undefined
            common_1.assertParamExists('bankTransferGet', 'bankTransferGetRequest', bankTransferGetRequest);
            const localVarPath = `/bank_transfer/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
         * @summary List bank transfers
         * @param {BankTransferListRequest} bankTransferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferList: (bankTransferListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferListRequest' is not null or undefined
            common_1.assertParamExists('bankTransferList', 'bankTransferListRequest', bankTransferListRequest);
            const localVarPath = `/bank_transfer/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items.  Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Bank Transfers
         * @param {BankTransferMigrateAccountRequest} bankTransferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferMigrateAccount: (bankTransferMigrateAccountRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferMigrateAccountRequest' is not null or undefined
            common_1.assertParamExists('bankTransferMigrateAccount', 'bankTransferMigrateAccountRequest', bankTransferMigrateAccountRequest);
            const localVarPath = `/bank_transfer/migrate_account`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferMigrateAccountRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {BankTransferSweepGetRequest} bankTransferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepGet: (bankTransferSweepGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferSweepGetRequest' is not null or undefined
            common_1.assertParamExists('bankTransferSweepGet', 'bankTransferSweepGetRequest', bankTransferSweepGetRequest);
            const localVarPath = `/bank_transfer/sweep/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferSweepGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.
         * @summary List sweeps
         * @param {BankTransferSweepListRequest} bankTransferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepList: (bankTransferSweepListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'bankTransferSweepListRequest' is not null or undefined
            common_1.assertParamExists('bankTransferSweepList', 'bankTransferSweepListRequest', bankTransferSweepListRequest);
            const localVarPath = `/bank_transfer/sweep/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(bankTransferSweepListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account.
         * @summary Evaluate risk of a bank account
         * @param {BeaconAccountRiskEvaluateRequest} beaconAccountRiskEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconAccountRiskEvaluate: (beaconAccountRiskEvaluateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconAccountRiskEvaluateRequest' is not null or undefined
            common_1.assertParamExists('beaconAccountRiskEvaluate', 'beaconAccountRiskEvaluateRequest', beaconAccountRiskEvaluateRequest);
            const localVarPath = `/beacon/account_risk/v1/evaluate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconAccountRiskEvaluateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a Beacon Duplicate for a given Beacon Duplicate id.  A Beacon Duplicate represents a pair of similar Beacon Users within your organization.  Two Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields.  The `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`.
         * @summary Get a Beacon Duplicate
         * @param {BeaconDuplicateGetRequest} beaconDuplicateGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconDuplicateGet: (beaconDuplicateGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconDuplicateGetRequest' is not null or undefined
            common_1.assertParamExists('beaconDuplicateGet', 'beaconDuplicateGetRequest', beaconDuplicateGetRequest);
            const localVarPath = `/beacon/duplicate/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconDuplicateGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a fraud report for a given Beacon User.
         * @summary Create a Beacon Report
         * @param {BeaconReportCreateRequest} beaconReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportCreate: (beaconReportCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconReportCreateRequest' is not null or undefined
            common_1.assertParamExists('beaconReportCreate', 'beaconReportCreateRequest', beaconReportCreateRequest);
            const localVarPath = `/beacon/report/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconReportCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a Beacon report for a given Beacon report id.
         * @summary Get a Beacon Report
         * @param {BeaconReportGetRequest} beaconReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportGet: (beaconReportGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconReportGetRequest' is not null or undefined
            common_1.assertParamExists('beaconReportGet', 'beaconReportGetRequest', beaconReportGetRequest);
            const localVarPath = `/beacon/report/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconReportGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/beacon/report/list` endpoint to view all Beacon Reports you created for a specific Beacon User. The reports returned by this endpoint are exclusively reports you created for a specific user. A Beacon User can only have one active report at a time, but a new report can be created if a previous report has been deleted. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Reports for a Beacon User
         * @param {BeaconReportListRequest} beaconReportListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportList: (beaconReportListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconReportListRequest' is not null or undefined
            common_1.assertParamExists('beaconReportList', 'beaconReportListRequest', beaconReportListRequest);
            const localVarPath = `/beacon/report/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconReportListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a Beacon Report Syndication for a given Beacon Report Syndication id.
         * @summary Get a Beacon Report Syndication
         * @param {BeaconReportSyndicationGetRequest} beaconReportSyndicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationGet: (beaconReportSyndicationGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconReportSyndicationGetRequest' is not null or undefined
            common_1.assertParamExists('beaconReportSyndicationGet', 'beaconReportSyndicationGetRequest', beaconReportSyndicationGetRequest);
            const localVarPath = `/beacon/report_syndication/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconReportSyndicationGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/beacon/report_syndication/list` endpoint to view all Beacon Reports that have been syndicated to a specific Beacon User. This endpoint returns Beacon Report Syndications which are references to Beacon Reports created either by you, or another Beacon customer, that matched the specified Beacon User. A Beacon User can have multiple active Beacon Report Syndications at once. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Report Syndications for a Beacon User
         * @param {BeaconReportSyndicationListRequest} beaconReportSyndicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationList: (beaconReportSyndicationListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconReportSyndicationListRequest' is not null or undefined
            common_1.assertParamExists('beaconReportSyndicationList', 'beaconReportSyndicationListRequest', beaconReportSyndicationListRequest);
            const localVarPath = `/beacon/report_syndication/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconReportSyndicationListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Get Account Insights for all Accounts linked to this Beacon User. The insights for each account are computed based on the information that was last retrieved from the financial institution.
         * @summary Get Account Insights for a Beacon User
         * @param {BeaconUserAccountInsightsGetRequest} beaconUserAccountInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserAccountInsightsGet: (beaconUserAccountInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserAccountInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('beaconUserAccountInsightsGet', 'beaconUserAccountInsightsGetRequest', beaconUserAccountInsightsGetRequest);
            const localVarPath = `/beacon/user/account_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserAccountInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create and scan a Beacon User against your Beacon Program, according to your program\'s settings.  When you submit a new user to `/beacon/user/create`, several checks are performed immediately:    - The user\'s PII (provided within the `user` object) is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.
         * @summary Create a Beacon User
         * @param {BeaconUserCreateRequest} beaconUserCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserCreate: (beaconUserCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserCreateRequest' is not null or undefined
            common_1.assertParamExists('beaconUserCreate', 'beaconUserCreateRequest', beaconUserCreateRequest);
            const localVarPath = `/beacon/user/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Fetch a Beacon User.  The Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks.
         * @summary Get a Beacon User
         * @param {BeaconUserGetRequest} beaconUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserGet: (beaconUserGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserGetRequest' is not null or undefined
            common_1.assertParamExists('beaconUserGet', 'beaconUserGetRequest', beaconUserGetRequest);
            const localVarPath = `/beacon/user/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all changes to the Beacon User in reverse-chronological order.
         * @summary List a Beacon User\'s history
         * @param {BeaconUserHistoryListRequest} beaconUserHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserHistoryList: (beaconUserHistoryListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserHistoryListRequest' is not null or undefined
            common_1.assertParamExists('beaconUserHistoryList', 'beaconUserHistoryListRequest', beaconUserHistoryListRequest);
            const localVarPath = `/beacon/user/history/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserHistoryListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Update the status of a Beacon User.  When updating a Beacon User\'s status via this endpoint, Plaid validates that the status change is consistent with the related state for this Beacon User. Specifically, we will check:  1. Whether there are any associated Beacon Reports connected to the Beacon User, and 2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User.  When updating a Beacon User\'s status to \"rejected\", we enforce that either a Beacon Report has been created for the Beacon User or a Beacon Report Syndication has been confirmed. When updating a Beacon User\'s status to \"cleared\", we enforce that there are no active Beacon Reports or confirmed Beacon Report Syndications associated with the user. If you previously created a Beacon Report for this user, you must delete it before updating the Beacon User\'s status to \"cleared\". There are no restrictions on updating a Beacon User\'s status to \"pending_review\".  If these conditions are not met, the request will be rejected with an error explaining the issue.
         * @summary Review a Beacon User
         * @param {BeaconUserReviewRequest} beaconUserReviewRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserReview: (beaconUserReviewRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserReviewRequest' is not null or undefined
            common_1.assertParamExists('beaconUserReview', 'beaconUserReviewRequest', beaconUserReviewRequest);
            const localVarPath = `/beacon/user/review`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserReviewRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User.  Similar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`:    - The user\'s updated PII is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s updated PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.  Plaid maintains a version history for each Beacon User, so the Beacon User\'s identity data before and after the update is retained as separate versions.
         * @summary Update the identity data of a Beacon User
         * @param {BeaconUserUpdateRequest} beaconUserUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserUpdate: (beaconUserUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'beaconUserUpdateRequest' is not null or undefined
            common_1.assertParamExists('beaconUserUpdate', 'beaconUserUpdateRequest', beaconUserUpdateRequest);
            const localVarPath = `/beacon/user/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(beaconUserUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Send a request to the `/categories/get` endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.  All implementations are recommended to use the newer `personal_finance_category` taxonomy instead of the older `category` taxonomy supported by this endpoint. The [`personal_finance_category taxonomy` CSV file](https://plaid.com/documents/transactions-personal-finance-category-taxonomy.csv) is available for download and is not accessible via API.
         * @summary Get categories
         * @param {object} body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        categoriesGet: (body, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'body' is not null or undefined
            common_1.assertParamExists('categoriesGet', 'body', body);
            const localVarPath = `/categories/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(body, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List a historical log of Item consent events. Consent logs are only available for events occurring on or after November 7, 2024. Up to three years of consent logs will be available via the endpoint.
         * @summary List a historical log of item consent events
         * @param {ConsentEventsGetRequest} consentEventsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consentEventsGet: (consentEventsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'consentEventsGetRequest' is not null or undefined
            common_1.assertParamExists('consentEventsGet', 'consentEventsGetRequest', consentEventsGetRequest);
            const localVarPath = `/consent/events/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(consentEventsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format.  Response is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary Retrieve a PDF Reports
         * @param {ConsumerReportPDFGetRequest} consumerReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consumerReportPdfGet: (consumerReportPDFGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'consumerReportPDFGetRequest' is not null or undefined
            common_1.assertParamExists('consumerReportPdfGet', 'consumerReportPDFGetRequest', consumerReportPDFGetRequest);
            const localVarPath = `/consumer_report/pdf/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(consumerReportPDFGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/bank_income/create` creates a CRA report for income verification
         * @summary Create a CRA report for income verification
         * @param {CraBankIncomeCreateRequest} craBankIncomeCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeCreate: (craBankIncomeCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craBankIncomeCreateRequest' is not null or undefined
            common_1.assertParamExists('craBankIncomeCreate', 'craBankIncomeCreateRequest', craBankIncomeCreateRequest);
            const localVarPath = `/cra/bank_income/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craBankIncomeCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/bank_income/get` returns the bank income report(s) for a specified user.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CraBankIncomeGetRequest} craBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeGet: (craBankIncomeGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craBankIncomeGetRequest' is not null or undefined
            common_1.assertParamExists('craBankIncomeGet', 'craBankIncomeGetRequest', craBankIncomeGetRequest);
            const localVarPath = `/cra/bank_income/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craBankIncomeGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Base Report for your user, allowing you to receive comprehensive bank account and cash flow data. You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn\'t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve a Base Report
         * @param {CraCheckReportBaseReportGetRequest} craCheckReportBaseReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportBaseReportGet: (craCheckReportBaseReportGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportBaseReportGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportBaseReportGet', 'craCheckReportBaseReportGetRequest', craCheckReportBaseReportGetRequest);
            const localVarPath = `/cra/check_report/base_report/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportBaseReportGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from your user\'s banking data
         * @param {CraCheckReportCashflowInsightsGetRequest} craCheckReportCashflowInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCashflowInsightsGet: (craCheckReportCashflowInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportCashflowInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportCashflowInsightsGet', 'craCheckReportCashflowInsightsGetRequest', craCheckReportCashflowInsightsGetRequest);
            const localVarPath = `/cra/check_report/cashflow_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportCashflowInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/check_report/create` creates a Consumer Report powered by Plaid Check. You can call this endpoint to create a new report if `consumer_report_permissible_purpose` was omitted during Link token creation. If you did provide a `consumer_report_permissible_purpose` during Link token creation, then Plaid Check will automatically begin creating a Consumer Report once the user completes the Link process, and it is not necessary to call `/cra/check_report/create` before retrieving the report.   `/cra/check_report/create` can also be used to refresh data in an existing report. A Consumer Report will last for 24 hours before expiring; you should call any `/get` endpoints on the report before it expires. If a report expires, you can call `/cra/check_report/create` again to re-generate it. Note that refreshing or regenerating a report is a billable event.
         * @summary Create a Consumer Report
         * @param {CraCheckReportCreateRequest} craCheckReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCreate: (craCheckReportCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportCreateRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportCreate', 'craCheckReportCreateRequest', craCheckReportCreateRequest);
            const localVarPath = `/cra/check_report/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Income Insights report for your user.  You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve cash flow information from your user\'s banks
         * @param {CraCheckReportIncomeInsightsGetRequest} craCheckReportIncomeInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportIncomeInsightsGet: (craCheckReportIncomeInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportIncomeInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportIncomeInsightsGet', 'craCheckReportIncomeInsightsGetRequest', craCheckReportIncomeInsightsGetRequest);
            const localVarPath = `/cra/check_report/income_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportIncomeInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_network_attributes` product or have generated a report using `/cra/check_report/create`, we will generate the attributes when you call this endpoint.
         * @summary Retrieve network attributes for the user
         * @param {CraCheckReportNetworkInsightsGetRequest} craCheckReportNetworkInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportNetworkInsightsGet: (craCheckReportNetworkInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportNetworkInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportNetworkInsightsGet', 'craCheckReportNetworkInsightsGetRequest', craCheckReportNetworkInsightsGetRequest);
            const localVarPath = `/cra/check_report/network_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportNetworkInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from partners
         * @param {CraCheckReportPartnerInsightsGetRequest} craCheckReportPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPartnerInsightsGet: (craCheckReportPartnerInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportPartnerInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportPartnerInsightsGet', 'craCheckReportPartnerInsightsGetRequest', craCheckReportPartnerInsightsGetRequest);
            const localVarPath = `/cra/check_report/partner_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportPartnerInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/check_report/pdf/get` retrieves the most recent Consumer Report in PDF format. By default, the most recent Base Report (if it exists) for the user will be returned. To request that the most recent Income Insights report be included in the PDF as well, use the `add-ons` field.
         * @summary Retrieve Consumer Reports as a PDF
         * @param {CraCheckReportPDFGetRequest} craCheckReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPdfGet: (craCheckReportPDFGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craCheckReportPDFGetRequest' is not null or undefined
            common_1.assertParamExists('craCheckReportPdfGet', 'craCheckReportPDFGetRequest', craCheckReportPDFGetRequest);
            const localVarPath = `/cra/check_report/pdf/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craCheckReportPDFGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/loans/applications/register` registers loan applications and decisions.
         * @summary Register loan applications and decisions.
         * @param {CraLoansApplicationsRegisterRequest} craLoansApplicationsRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansApplicationsRegister: (craLoansApplicationsRegisterRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craLoansApplicationsRegisterRequest' is not null or undefined
            common_1.assertParamExists('craLoansApplicationsRegister', 'craLoansApplicationsRegisterRequest', craLoansApplicationsRegisterRequest);
            const localVarPath = `/cra/loans/applications/register`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craLoansApplicationsRegisterRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/loans/register` registers a list of loans to their applicants.
         * @summary Register a list of loans to their applicants.
         * @param {CRALoansRegisterRequest} cRALoansRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansRegister: (cRALoansRegisterRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'cRALoansRegisterRequest' is not null or undefined
            common_1.assertParamExists('craLoansRegister', 'cRALoansRegisterRequest', cRALoansRegisterRequest);
            const localVarPath = `/cra/loans/register`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(cRALoansRegisterRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.
         * @summary Unregister a list of loans.
         * @param {CraLoansUnregisterRequest} craLoansUnregisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUnregister: (craLoansUnregisterRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craLoansUnregisterRequest' is not null or undefined
            common_1.assertParamExists('craLoansUnregister', 'craLoansUnregisterRequest', craLoansUnregisterRequest);
            const localVarPath = `/cra/loans/unregister`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craLoansUnregisterRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/loans/update` updates loan information such as the status and payment history.
         * @summary Updates loan data.
         * @param {CraLoansUpdateRequest} craLoansUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUpdate: (craLoansUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craLoansUpdateRequest' is not null or undefined
            common_1.assertParamExists('craLoansUpdate', 'craLoansUpdateRequest', craLoansUpdateRequest);
            const localVarPath = `/cra/loans/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craLoansUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve a Monitoring Insights report by passing in the `user_token` referred to in the webhook you received.
         * @summary Retrieve a Monitoring Insights Report
         * @param {CraMonitoringInsightsGetRequest} craMonitoringInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsGet: (craMonitoringInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craMonitoringInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craMonitoringInsightsGet', 'craMonitoringInsightsGetRequest', craMonitoringInsightsGetRequest);
            const localVarPath = `/cra/monitoring_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craMonitoringInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to subscribe to insights for a user\'s linked CRA items, which are updated every day (best-effort).
         * @summary Subscribe to Monitoring Insights
         * @param {CraMonitoringInsightsSubscribeRequest} craMonitoringInsightsSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsSubscribe: (craMonitoringInsightsSubscribeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craMonitoringInsightsSubscribeRequest' is not null or undefined
            common_1.assertParamExists('craMonitoringInsightsSubscribe', 'craMonitoringInsightsSubscribeRequest', craMonitoringInsightsSubscribeRequest);
            const localVarPath = `/cra/monitoring_insights/subscribe`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craMonitoringInsightsSubscribeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights.
         * @summary Unsubscribe from Monitoring Insights
         * @param {CraMonitoringInsightsUnsubscribeRequest} craMonitoringInsightsUnsubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsUnsubscribe: (craMonitoringInsightsUnsubscribeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craMonitoringInsightsUnsubscribeRequest' is not null or undefined
            common_1.assertParamExists('craMonitoringInsightsUnsubscribe', 'craMonitoringInsightsUnsubscribeRequest', craMonitoringInsightsUnsubscribeRequest);
            const localVarPath = `/cra/monitoring_insights/unsubscribe`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craMonitoringInsightsUnsubscribeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/cra/partner_insights/get` returns cash flow insights for a specified user.
         * @summary Retrieve cash flow insights from the bank accounts used for income verification
         * @param {CraPartnerInsightsGetRequest} craPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craPartnerInsightsGet: (craPartnerInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'craPartnerInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('craPartnerInsightsGet', 'craPartnerInsightsGetRequest', craPartnerInsightsGetRequest);
            const localVarPath = `/cra/partner_insights/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(craPartnerInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.  The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
         * @summary Create payment token
         * @param {PaymentInitiationPaymentTokenCreateRequest} paymentInitiationPaymentTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createPaymentToken: (paymentInitiationPaymentTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationPaymentTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('createPaymentToken', 'paymentInitiationPaymentTokenCreateRequest', paymentInitiationPaymentTokenCreateRequest);
            const localVarPath = `/payment_initiation/payment/token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationPaymentTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac\'s JSON format.
         * @summary Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAssetReportFreddieMacGet: (requestBody, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'requestBody' is not null or undefined
            common_1.assertParamExists('creditAssetReportFreddieMacGet', 'requestBody', requestBody);
            const localVarPath = `/credit/asset_report/freddie_mac/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(requestBody, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Plaid can create an Audit Copy token of an Asset Report and/or Income Report to share with participating Government Sponsored Entity (GSE). If you participate in the Day 1 Certainty™ program, Plaid can supply an Audit Copy token directly to Fannie Mae on your behalf. An Audit Copy token contains the same underlying data as the Asset Report and/or Income Report (result of /credit/payroll_income/get).  Use the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access.
         * @summary Create Asset or Income Report Audit Copy Token
         * @param {CreditAuditCopyTokenCreateRequest} creditAuditCopyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenCreate: (creditAuditCopyTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditAuditCopyTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('creditAuditCopyTokenCreate', 'creditAuditCopyTokenCreateRequest', creditAuditCopyTokenCreateRequest);
            const localVarPath = `/credit/audit_copy_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditAuditCopyTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/credit/audit_copy_token/update` endpoint updates an existing  Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field.
         * @summary Update an Audit Copy Token
         * @param {CreditAuditCopyTokenUpdateRequest} creditAuditCopyTokenUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenUpdate: (creditAuditCopyTokenUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditAuditCopyTokenUpdateRequest' is not null or undefined
            common_1.assertParamExists('creditAuditCopyTokenUpdate', 'creditAuditCopyTokenUpdateRequest', creditAuditCopyTokenUpdateRequest);
            const localVarPath = `/credit/audit_copy_token/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditAuditCopyTokenUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.
         * @summary Retrieve information from the bank accounts used for employment verification
         * @param {CreditBankEmploymentGetRequest} creditBankEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankEmploymentGet: (creditBankEmploymentGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankEmploymentGetRequest' is not null or undefined
            common_1.assertParamExists('creditBankEmploymentGet', 'creditBankEmploymentGetRequest', creditBankEmploymentGetRequest);
            const localVarPath = `/beta/credit/v1/bank_employment/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankEmploymentGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_income/get` returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link). To return older reports, use the `options.count` field.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CreditBankIncomeGetRequest} creditBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeGet: (creditBankIncomeGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankIncomeGetRequest' is not null or undefined
            common_1.assertParamExists('creditBankIncomeGet', 'creditBankIncomeGetRequest', creditBankIncomeGetRequest);
            const localVarPath = `/credit/bank_income/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankIncomeGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_income/pdf/get` returns the most recent bank income report for a specified user in PDF format.  A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link).
         * @summary Retrieve information from the bank accounts used for income verification in PDF format
         * @param {CreditBankIncomePDFGetRequest} creditBankIncomePDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomePdfGet: (creditBankIncomePDFGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankIncomePDFGetRequest' is not null or undefined
            common_1.assertParamExists('creditBankIncomePdfGet', 'creditBankIncomePDFGetRequest', creditBankIncomePDFGetRequest);
            const localVarPath = `/credit/bank_income/pdf/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankIncomePDFGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_income/refresh` refreshes the most recent bank income report data for a specific user. If the most recent bank income report is no longer valid (i.e. deleted), the endpoint will refresh the most recent valid report instead.
         * @summary Refresh a user\'s bank income information
         * @param {CreditBankIncomeRefreshRequest} creditBankIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeRefresh: (creditBankIncomeRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankIncomeRefreshRequest' is not null or undefined
            common_1.assertParamExists('creditBankIncomeRefresh', 'creditBankIncomeRefreshRequest', creditBankIncomeRefreshRequest);
            const localVarPath = `/credit/bank_income/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankIncomeRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_income/webhook/update` allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed.  If a user is subscribed, on significant changes to the user\'s income profile, you will receive a `BANK_INCOME_REFRESH_UPDATE` webhook, prompting you to refresh bank income data for the user.
         * @summary Subscribe and unsubscribe to proactive notifications for a user\'s income profile
         * @param {CreditBankIncomeWebhookUpdateRequest} creditBankIncomeWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeWebhookUpdate: (creditBankIncomeWebhookUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankIncomeWebhookUpdateRequest' is not null or undefined
            common_1.assertParamExists('creditBankIncomeWebhookUpdate', 'creditBankIncomeWebhookUpdateRequest', creditBankIncomeWebhookUpdateRequest);
            const localVarPath = `/credit/bank_income/webhook/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankIncomeWebhookUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.
         * @summary Retrieve data for a user\'s uploaded bank statements
         * @param {CreditBankStatementsUploadsGetRequest} creditBankStatementsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankStatementsUploadsGet: (creditBankStatementsUploadsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditBankStatementsUploadsGetRequest' is not null or undefined
            common_1.assertParamExists('creditBankStatementsUploadsGet', 'creditBankStatementsUploadsGetRequest', creditBankStatementsUploadsGetRequest);
            const localVarPath = `/credit/bank_statements/uploads/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditBankStatementsUploadsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/employment/get` returns a list of items with employment information from a user\'s payroll provider that was verified by an end user.
         * @summary Retrieve a summary of an individual\'s employment information
         * @param {CreditEmploymentGetRequest} creditEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditEmploymentGet: (creditEmploymentGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditEmploymentGetRequest' is not null or undefined
            common_1.assertParamExists('creditEmploymentGet', 'creditEmploymentGetRequest', creditEmploymentGetRequest);
            const localVarPath = `/credit/employment/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditEmploymentGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Verification of Assets and Verification of Employment reports.
         * @summary Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint.
         * @param {CreditFreddieMacReportsGetRequest} creditFreddieMacReportsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditFreddieMacReportsGet: (creditFreddieMacReportsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditFreddieMacReportsGetRequest' is not null or undefined
            common_1.assertParamExists('creditFreddieMacReportsGet', 'creditFreddieMacReportsGetRequest', creditFreddieMacReportsGetRequest);
            const localVarPath = `/credit/freddie_mac/reports/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditFreddieMacReportsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document.
         * @summary Retrieve a user\'s payroll information
         * @param {CreditPayrollIncomeGetRequest} creditPayrollIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeGet: (creditPayrollIncomeGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditPayrollIncomeGetRequest' is not null or undefined
            common_1.assertParamExists('creditPayrollIncomeGet', 'creditPayrollIncomeGetRequest', creditPayrollIncomeGetRequest);
            const localVarPath = `/credit/payroll_income/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditPayrollIncomeGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.
         * @summary Update the parsing configuration for a document income verification
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeParsingConfigUpdate: (requestBody, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'requestBody' is not null or undefined
            common_1.assertParamExists('creditPayrollIncomeParsingConfigUpdate', 'requestBody', requestBody);
            const localVarPath = `/credit/payroll_income/parsing_config/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(requestBody, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/payroll_income/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification. If the user is eligible for digital verification, that information will be associated with the user token, and in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing `employer` data will increase the chance of receiving a useful result.  When testing in Sandbox, you can control the results by providing special test values in the `employer` and `access_tokens` fields. `employer_good` and `employer_bad` will result in `HIGH` and `LOW` confidence values, respectively. `employer_multi` will result in a `HIGH` confidence with multiple payroll options. Likewise, `access_good` and `access_bad` will result in `HIGH` and `LOW` confidence values, respectively. Any other value for `employer` and `access_tokens` in Sandbox will result in `UNKNOWN` confidence.
         * @summary Check income verification eligibility and optimize conversion
         * @param {CreditPayrollIncomePrecheckRequest} creditPayrollIncomePrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomePrecheck: (creditPayrollIncomePrecheckRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditPayrollIncomePrecheckRequest' is not null or undefined
            common_1.assertParamExists('creditPayrollIncomePrecheck', 'creditPayrollIncomePrecheckRequest', creditPayrollIncomePrecheckRequest);
            const localVarPath = `/credit/payroll_income/precheck`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditPayrollIncomePrecheckRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/payroll_income/refresh` refreshes a given digital payroll income verification.
         * @summary Refresh a digital payroll income verification
         * @param {CreditPayrollIncomeRefreshRequest} creditPayrollIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRefresh: (creditPayrollIncomeRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditPayrollIncomeRefreshRequest' is not null or undefined
            common_1.assertParamExists('creditPayrollIncomeRefresh', 'creditPayrollIncomeRefreshRequest', creditPayrollIncomeRefreshRequest);
            const localVarPath = `/credit/payroll_income/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditPayrollIncomeRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/payroll_income/risk_signals/get` can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score.  To trigger risk signal generation for an Item, call `/link/token/create` with `parsing_config` set to include `risk_signals`, or call `/credit/payroll_income/parsing_config/update`. Once risk signal generation has been triggered, `/credit/payroll_income/risk_signals/get` can be called at any time after the `INCOME_VERIFICATION_RISK_SIGNALS` webhook has been fired.  `/credit/payroll_income/risk_signals/get` is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager.
         * @summary Retrieve fraud insights for a user\'s manually uploaded document(s).
         * @param {CreditPayrollIncomeRiskSignalsGetRequest} creditPayrollIncomeRiskSignalsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRiskSignalsGet: (creditPayrollIncomeRiskSignalsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditPayrollIncomeRiskSignalsGetRequest' is not null or undefined
            common_1.assertParamExists('creditPayrollIncomeRiskSignalsGet', 'creditPayrollIncomeRiskSignalsGetRequest', creditPayrollIncomeRiskSignalsGetRequest);
            const localVarPath = `/credit/payroll_income/risk_signals/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditPayrollIncomeRiskSignalsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Plaid can share an Asset Report directly with a participating third party on your behalf. The shared Asset Report is the exact same Asset Report originally created in `/asset_report/create`.  To grant a third party access to an Asset Report, use the `/credit/relay/create` endpoint to create a `relay_token` and then pass that token to your third party. Each third party has its own `secondary_client_id`; for example, `ce5bd328dcd34123456`. You\'ll need to create a separate `relay_token` for each third party that needs access to the report on your behalf.
         * @summary Create a relay token to share an Asset Report with a partner client
         * @param {CreditRelayCreateRequest} creditRelayCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayCreate: (creditRelayCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditRelayCreateRequest' is not null or undefined
            common_1.assertParamExists('creditRelayCreate', 'creditRelayCreateRequest', creditRelayCreateRequest);
            const localVarPath = `/credit/relay/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditRelayCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/relay/get` allows third parties to receive a report that was shared with them, using a `relay_token` that was created by the report owner.
         * @summary Retrieve the reports associated with a relay token that was shared with you
         * @param {CreditRelayGetRequest} creditRelayGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayGet: (creditRelayGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditRelayGetRequest' is not null or undefined
            common_1.assertParamExists('creditRelayGet', 'creditRelayGetRequest', creditRelayGetRequest);
            const localVarPath = `/credit/relay/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditRelayGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/credit/relay/pdf/get` allows third parties to receive a pdf report that was shared with them, using a `relay_token` that was created by the report owner.  The `/credit/relay/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/credit/relay/pdf/get`, you must first create the Asset Report using `/credit/relay/create` and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve the pdf reports associated with a relay token that was shared with you (beta)
         * @param {CreditRelayPDFGetRequest} creditRelayPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayPdfGet: (creditRelayPDFGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditRelayPDFGetRequest' is not null or undefined
            common_1.assertParamExists('creditRelayPdfGet', 'creditRelayPDFGetRequest', creditRelayPDFGetRequest);
            const localVarPath = `/credit/relay/pdf/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditRelayPDFGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/credit/relay/refresh` endpoint allows third parties to refresh a report that was relayed to them, using a `relay_token` that was created by the report owner. A new report will be created with the original report parameters, but with the most recent data available based on the `days_requested` value of the original report.
         * @summary Refresh a report of a relay token
         * @param {CreditRelayRefreshRequest} creditRelayRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRefresh: (creditRelayRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditRelayRefreshRequest' is not null or undefined
            common_1.assertParamExists('creditRelayRefresh', 'creditRelayRefreshRequest', creditRelayRefreshRequest);
            const localVarPath = `/credit/relay/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditRelayRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/credit/relay/remove` endpoint allows you to invalidate a `relay_token`. The third party holding the token will no longer be able to access or refresh the reports which the `relay_token` gives access to. The original report, associated Items, and other relay tokens that provide access to the same report are not affected and will remain accessible after removing the given `relay_token`.
         * @summary Remove relay token
         * @param {CreditRelayRemoveRequest} creditRelayRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRemove: (creditRelayRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditRelayRemoveRequest' is not null or undefined
            common_1.assertParamExists('creditRelayRemove', 'creditRelayRemoveRequest', creditRelayRemoveRequest);
            const localVarPath = `/credit/relay/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditRelayRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/credit/audit_copy_token/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Report data and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove an Audit Copy token
         * @param {CreditAuditCopyTokenRemoveRequest} creditAuditCopyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditReportAuditCopyRemove: (creditAuditCopyTokenRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditAuditCopyTokenRemoveRequest' is not null or undefined
            common_1.assertParamExists('creditReportAuditCopyRemove', 'creditAuditCopyTokenRemoveRequest', creditAuditCopyTokenRemoveRequest);
            const localVarPath = `/credit/audit_copy_token/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditAuditCopyTokenRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow.  These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step).
         * @summary Retrieve Link sessions for your user
         * @param {CreditSessionsGetRequest} creditSessionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditSessionsGet: (creditSessionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'creditSessionsGetRequest' is not null or undefined
            common_1.assertParamExists('creditSessionsGet', 'creditSessionsGetRequest', creditSessionsGetRequest);
            const localVarPath = `/credit/sessions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(creditSessionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/dashboard_user/get` endpoint provides details (such as email address) about a specific Dashboard user based on the `dashboard_user_id` field, which is returned in the `audit_trail` object of certain Monitor and Beacon endpoints. This can be used to identify the specific reviewer who performed a Dashboard action.
         * @summary Retrieve a dashboard user
         * @param {DashboardUserGetRequest} dashboardUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserGet: (dashboardUserGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'dashboardUserGetRequest' is not null or undefined
            common_1.assertParamExists('dashboardUserGet', 'dashboardUserGetRequest', dashboardUserGetRequest);
            const localVarPath = `/dashboard_user/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(dashboardUserGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/dashboard_user/list` endpoint provides details (such as email address) all Dashboard users associated with your account. This can use used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products.
         * @summary List dashboard users
         * @param {DashboardUserListRequest} dashboardUserListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserList: (dashboardUserListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'dashboardUserListRequest' is not null or undefined
            common_1.assertParamExists('dashboardUserList', 'dashboardUserListRequest', dashboardUserListRequest);
            const localVarPath = `/dashboard_user/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(dashboardUserListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch without using Plaid Exchange
         * @param {DepositSwitchAltCreateRequest} depositSwitchAltCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchAltCreate: (depositSwitchAltCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'depositSwitchAltCreateRequest' is not null or undefined
            common_1.assertParamExists('depositSwitchAltCreate', 'depositSwitchAltCreateRequest', depositSwitchAltCreateRequest);
            const localVarPath = `/deposit_switch/alt/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(depositSwitchAltCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch
         * @param {DepositSwitchCreateRequest} depositSwitchCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchCreate: (depositSwitchCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'depositSwitchCreateRequest' is not null or undefined
            common_1.assertParamExists('depositSwitchCreate', 'depositSwitchCreateRequest', depositSwitchCreateRequest);
            const localVarPath = `/deposit_switch/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(depositSwitchCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user\'s direct deposit allocation preferences.
         * @summary (Deprecated) Retrieve a deposit switch
         * @param {DepositSwitchGetRequest} depositSwitchGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchGet: (depositSwitchGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'depositSwitchGetRequest' is not null or undefined
            common_1.assertParamExists('depositSwitchGet', 'depositSwitchGetRequest', depositSwitchGetRequest);
            const localVarPath = `/deposit_switch/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(depositSwitchGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
         * @summary (Deprecated) Create a deposit switch token
         * @param {DepositSwitchTokenCreateRequest} depositSwitchTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchTokenCreate: (depositSwitchTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'depositSwitchTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('depositSwitchTokenCreate', 'depositSwitchTokenCreateRequest', depositSwitchTokenCreateRequest);
            const localVarPath = `/deposit_switch/token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(depositSwitchTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user\'s employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.  The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
         * @summary Search employer database
         * @param {EmployersSearchRequest} employersSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employersSearch: (employersSearchRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'employersSearchRequest' is not null or undefined
            common_1.assertParamExists('employersSearch', 'employersSearchRequest', employersSearchRequest);
            const localVarPath = `/employers/search`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(employersSearchRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user.  This endpoint has been deprecated; new integrations should use `/credit/employment/get` instead.
         * @summary (Deprecated) Retrieve a summary of an individual\'s employment information
         * @param {EmploymentVerificationGetRequest} employmentVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employmentVerificationGet: (employmentVerificationGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'employmentVerificationGetRequest' is not null or undefined
            common_1.assertParamExists('employmentVerificationGet', 'employmentVerificationGetRequest', employmentVerificationGetRequest);
            const localVarPath = `/employment/verification/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(employmentVerificationGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * A generic webhook receiver endpoint for FDX Event Notifications
         * @summary Webhook receiver for fdx notifications
         * @param {FDXNotification} fDXNotification
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        fdxNotifications: (fDXNotification, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'fDXNotification' is not null or undefined
            common_1.assertParamExists('fdxNotifications', 'fDXNotification', fDXNotification);
            const localVarPath = `/fdx/notifications`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(fDXNotification, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Get a specific recipient
         * @summary Get Recipient
         * @param {string} recipientId Recipient Identifier. Uniquely identifies the recipient
         * @param {string} [oAUTHSTATEID] The value that is passed into the OAuth URI \&#39;state\&#39; query parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipient: (recipientId, oAUTHSTATEID, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'recipientId' is not null or undefined
            common_1.assertParamExists('getRecipient', 'recipientId', recipientId);
            const localVarPath = `/fdx/recipient/{recipientId}`
                .replace(`{${"recipientId"}}`, encodeURIComponent(String(recipientId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            if (oAUTHSTATEID !== undefined && oAUTHSTATEID !== null) {
                localVarHeaderParameter['OAUTH-STATE-ID'] = String(oAUTHSTATEID);
            }
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a list of Recipients
         * @summary Get Recipients
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipients: (options = {}) => __awaiter(this, void 0, void 0, function* () {
            const localVarPath = `/fdx/recipients`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/).
         * @summary Returns uploaded document identity
         * @param {IdentityDocumentsUploadsGetRequest} identityDocumentsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityDocumentsUploadsGet: (identityDocumentsUploadsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityDocumentsUploadsGetRequest' is not null or undefined
            common_1.assertParamExists('identityDocumentsUploadsGet', 'identityDocumentsUploadsGetRequest', identityDocumentsUploadsGetRequest);
            const localVarPath = `/identity/documents/uploads/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityDocumentsUploadsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.  Note: In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29).
         * @summary Retrieve identity data
         * @param {IdentityGetRequest} identityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityGet: (identityGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityGetRequest' is not null or undefined
            common_1.assertParamExists('identityGet', 'identityGetRequest', identityGetRequest);
            const localVarPath = `/identity/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {IdentityMatchRequest} identityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityMatch: (identityMatchRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityMatchRequest' is not null or undefined
            common_1.assertParamExists('identityMatch', 'identityMatchRequest', identityMatchRequest);
            const localVarPath = `/identity/match`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityMatchRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/identity/refresh` is an optional endpoint for users of the Identity product. It initiates an on-demand extraction to fetch the most up to date Identity information from the Financial Institution. This on-demand extraction takes place in addition to the periodic extractions that automatically occur for any Identity-enabled Item. If changes to Identity are discovered after calling `/identity/refresh`, Plaid will fire a webhook [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/identity/#default_update).  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/identity/refresh` is offered as an add-on to Identity and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh identity data
         * @param {IdentityRefreshRequest} identityRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityRefresh: (identityRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityRefreshRequest' is not null or undefined
            common_1.assertParamExists('identityRefresh', 'identityRefreshRequest', identityRefreshRequest);
            const localVarPath = `/identity/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Try to autofill an Identity Verification based of the provided phone number, date of birth and country of residence.
         * @summary Create autofill for an Identity Verification
         * @param {IdentityVerificationAutofillCreateRequest} identityVerificationAutofillCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationAutofillCreate: (identityVerificationAutofillCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityVerificationAutofillCreateRequest' is not null or undefined
            common_1.assertParamExists('identityVerificationAutofillCreate', 'identityVerificationAutofillCreateRequest', identityVerificationAutofillCreateRequest);
            const localVarPath = `/identity_verification/autofill/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityVerificationAutofillCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a new Identity Verification for the user specified by the `client_user_id` field. The requirements and behavior of the verification are determined by the `template_id` provided. If you don\'t know whether the associated user already has an active Identity Verification, you can specify `\"is_idempotent\": true` in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated `client_user_id` and `template_id`. If an Identity Verification is found, it will be returned unmodified with an `200 OK` HTTP status code.  You can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow.
         * @summary Create a new Identity Verification
         * @param {IdentityVerificationCreateRequest} identityVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationCreate: (identityVerificationCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityVerificationCreateRequest' is not null or undefined
            common_1.assertParamExists('identityVerificationCreate', 'identityVerificationCreateRequest', identityVerificationCreateRequest);
            const localVarPath = `/identity_verification/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityVerificationCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Retrieve a previously created Identity Verification.
         * @summary Retrieve Identity Verification
         * @param {IdentityVerificationGetRequest} identityVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationGet: (identityVerificationGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityVerificationGetRequest' is not null or undefined
            common_1.assertParamExists('identityVerificationGet', 'identityVerificationGetRequest', identityVerificationGetRequest);
            const localVarPath = `/identity_verification/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityVerificationGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Filter and list Identity Verifications created by your account
         * @summary List Identity Verifications
         * @param {IdentityVerificationListRequest} identityVerificationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationList: (identityVerificationListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityVerificationListRequest' is not null or undefined
            common_1.assertParamExists('identityVerificationList', 'identityVerificationListRequest', identityVerificationListRequest);
            const localVarPath = `/identity_verification/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityVerificationListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Allow a customer to retry their Identity Verification
         * @summary Retry an Identity Verification
         * @param {IdentityVerificationRetryRequest} identityVerificationRetryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationRetry: (identityVerificationRetryRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'identityVerificationRetryRequest' is not null or undefined
            common_1.assertParamExists('identityVerificationRetry', 'identityVerificationRetryRequest', identityVerificationRetryRequest);
            const localVarPath = `/identity_verification/retry`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(identityVerificationRetryRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing.
         * @summary (Deprecated) Create an income verification instance
         * @param {IncomeVerificationCreateRequest} incomeVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationCreate: (incomeVerificationCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'incomeVerificationCreateRequest' is not null or undefined
            common_1.assertParamExists('incomeVerificationCreate', 'incomeVerificationCreateRequest', incomeVerificationCreateRequest);
            const localVarPath = `/income/verification/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(incomeVerificationCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/income/verification/documents/download` provides the ability to download the source documents associated with the verification.  If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint.  The response to `/income/verification/documents/download` is a ZIP file in binary data. If a `document_id` is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification.  The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary (Deprecated) Download the original documents used for income verification
         * @param {IncomeVerificationDocumentsDownloadRequest} incomeVerificationDocumentsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationDocumentsDownload: (incomeVerificationDocumentsDownloadRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'incomeVerificationDocumentsDownloadRequest' is not null or undefined
            common_1.assertParamExists('incomeVerificationDocumentsDownload', 'incomeVerificationDocumentsDownloadRequest', incomeVerificationDocumentsDownloadRequest);
            const localVarPath = `/income/verification/documents/download`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(incomeVerificationDocumentsDownloadRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the paystubs used for income verification
         * @param {IncomeVerificationPaystubsGetRequest} incomeVerificationPaystubsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPaystubsGet: (incomeVerificationPaystubsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'incomeVerificationPaystubsGetRequest' is not null or undefined
            common_1.assertParamExists('incomeVerificationPaystubsGet', 'incomeVerificationPaystubsGetRequest', incomeVerificationPaystubsGetRequest);
            const localVarPath = `/income/verification/paystubs/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(incomeVerificationPaystubsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/income/verification/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification and returns a `precheck_id` that can be provided to `/link/token/create`. If the user is eligible for digital verification, providing the `precheck_id` in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the `precheck_id` can still be provided to `/link/token/create` and the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead.
         * @summary (Deprecated) Check digital income verification eligibility and optimize conversion
         * @param {IncomeVerificationPrecheckRequest} incomeVerificationPrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPrecheck: (incomeVerificationPrecheckRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'incomeVerificationPrecheckRequest' is not null or undefined
            common_1.assertParamExists('incomeVerificationPrecheck', 'incomeVerificationPrecheckRequest', incomeVerificationPrecheckRequest);
            const localVarPath = `/income/verification/precheck`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(incomeVerificationPrecheckRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/income/verification/taxforms/get` returns the information collected from forms that were used to verify an end user\'\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the tax documents used for income verification
         * @param {IncomeVerificationTaxformsGetRequest} incomeVerificationTaxformsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationTaxformsGet: (incomeVerificationTaxformsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'incomeVerificationTaxformsGetRequest' is not null or undefined
            common_1.assertParamExists('incomeVerificationTaxformsGet', 'incomeVerificationTaxformsGetRequest', incomeVerificationTaxformsGetRequest);
            const localVarPath = `/income/verification/taxforms/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(incomeVerificationTaxformsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.  If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
         * @summary Get details of all supported institutions
         * @param {InstitutionsGetRequest} institutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGet: (institutionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'institutionsGetRequest' is not null or undefined
            common_1.assertParamExists('institutionsGet', 'institutionsGetRequest', institutionsGetRequest);
            const localVarPath = `/institutions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(institutionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a JSON response containing details on a specified financial institution currently supported by Plaid.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Get details of an institution
         * @param {InstitutionsGetByIdRequest} institutionsGetByIdRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGetById: (institutionsGetByIdRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'institutionsGetByIdRequest' is not null or undefined
            common_1.assertParamExists('institutionsGetById', 'institutionsGetByIdRequest', institutionsGetByIdRequest);
            const localVarPath = `/institutions/get_by_id`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(institutionsGetByIdRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Search institutions
         * @param {InstitutionsSearchRequest} institutionsSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsSearch: (institutionsSearchRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'institutionsSearchRequest' is not null or undefined
            common_1.assertParamExists('institutionsSearch', 'institutionsSearchRequest', institutionsSearchRequest);
            const localVarPath = `/institutions/search`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(institutionsSearchRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings
         * @summary Get data needed to authorize an investments transfer
         * @param {InvestmentsAuthGetRequest} investmentsAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsAuthGet: (investmentsAuthGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'investmentsAuthGetRequest' is not null or undefined
            common_1.assertParamExists('investmentsAuthGet', 'investmentsAuthGetRequest', investmentsAuthGetRequest);
            const localVarPath = `/investments/auth/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(investmentsAuthGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
         * @summary Get Investment holdings
         * @param {InvestmentsHoldingsGetRequest} investmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsHoldingsGet: (investmentsHoldingsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'investmentsHoldingsGetRequest' is not null or undefined
            common_1.assertParamExists('investmentsHoldingsGet', 'investmentsHoldingsGetRequest', investmentsHoldingsGetRequest);
            const localVarPath = `/investments/holdings/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(investmentsHoldingsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/investments/refresh` is an optional endpoint for users of the Investments product. It initiates an on-demand extraction to fetch the newest investment holdings and transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Investments-enabled Item. If changes to investments are discovered after calling `/investments/refresh`, Plaid will fire webhooks: [`HOLDINGS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#holdings-default_update) if any new holdings are detected, and [`INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#investments_transactions-default_update) if any new investment transactions are detected. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic investment transactions and holdings data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. Updated holdings and investment transactions can be fetched by calling `/investments/holdings/get` and `/investments/transactions/get`. Note that the `/investments/refresh` endpoint is not supported by all institutions. If called on an Item from an institution that does not support this functionality, it will return a `PRODUCT_NOT_SUPPORTED` error.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/investments/refresh` is offered as an add-on to Investments and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh investment data
         * @param {InvestmentsRefreshRequest} investmentsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsRefresh: (investmentsRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'investmentsRefreshRequest' is not null or undefined
            common_1.assertParamExists('investmentsRefresh', 'investmentsRefreshRequest', investmentsRefreshRequest);
            const localVarPath = `/investments/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(investmentsRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get investment transactions
         * @param {InvestmentsTransactionsGetRequest} investmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsTransactionsGet: (investmentsTransactionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'investmentsTransactionsGetRequest' is not null or undefined
            common_1.assertParamExists('investmentsTransactionsGet', 'investmentsTransactionsGetRequest', investmentsTransactionsGetRequest);
            const localVarPath = `/investments/transactions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(investmentsTransactionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object.
         * @summary Get an Issue
         * @param {IssuesGetRequest} issuesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesGet: (issuesGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'issuesGetRequest' is not null or undefined
            common_1.assertParamExists('issuesGet', 'issuesGetRequest', issuesGetRequest);
            const localVarPath = `/issues/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(issuesGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Search for an issue associated with one of the following identifiers:  `item_id`, `link_session_id` or Link session `request_id`.  This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the provided identifier. At least one of the identifiers must be provided to perform the search.
         * @summary Search for an Issue
         * @param {IssuesSearchRequest} issuesSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSearch: (issuesSearchRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'issuesSearchRequest' is not null or undefined
            common_1.assertParamExists('issuesSearch', 'issuesSearchRequest', issuesSearchRequest);
            const localVarPath = `/issues/search`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(issuesSearchRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Allows a user to subscribe to updates on a specific `Issue` using a POST method. Subscribers will receive webhook notifications when the issue status changes, particularly when resolved.
         * @summary Subscribe to an Issue
         * @param {IssuesSubscribeRequest} issuesSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSubscribe: (issuesSubscribeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'issuesSubscribeRequest' is not null or undefined
            common_1.assertParamExists('issuesSubscribe', 'issuesSubscribeRequest', issuesSubscribeRequest);
            const localVarPath = `/issues/subscribe`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(issuesSubscribeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.  You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
         * @summary Invalidate access_token
         * @param {ItemAccessTokenInvalidateRequest} itemAccessTokenInvalidateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemAccessTokenInvalidate: (itemAccessTokenInvalidateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemAccessTokenInvalidateRequest' is not null or undefined
            common_1.assertParamExists('itemAccessTokenInvalidate', 'itemAccessTokenInvalidateRequest', itemAccessTokenInvalidateRequest);
            const localVarPath = `/item/access_token/invalidate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemAccessTokenInvalidateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List a historical log of user consent events
         * @summary List a historical log of user consent events
         * @param {ItemActivityListRequest} itemActivityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemActivityList: (itemActivityListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemActivityListRequest' is not null or undefined
            common_1.assertParamExists('itemActivityList', 'itemActivityListRequest', itemActivityListRequest);
            const localVarPath = `/item/activity/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemActivityListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List a user’s connected applications
         * @summary List a user’s connected applications
         * @param {ItemApplicationListRequest} itemApplicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationList: (itemApplicationListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemApplicationListRequest' is not null or undefined
            common_1.assertParamExists('itemApplicationList', 'itemApplicationListRequest', itemApplicationListRequest);
            const localVarPath = `/item/application/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemApplicationListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Enable consumers to update product access on selected accounts for an application.
         * @summary Update the scopes of access for a particular application
         * @param {ItemApplicationScopesUpdateRequest} itemApplicationScopesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationScopesUpdate: (itemApplicationScopesUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemApplicationScopesUpdateRequest' is not null or undefined
            common_1.assertParamExists('itemApplicationScopesUpdate', 'itemApplicationScopesUpdateRequest', itemApplicationScopesUpdateRequest);
            const localVarPath = `/item/application/scopes/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemApplicationScopesUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Unlink a user’s connected application. On an unlink request, Plaid will immediately revoke the Application’s access to the User’s data.  The User will have to redo the OAuth authentication process in order to restore functionality.  This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default).  This endpoint should be called in real time as the User is unlinking an Application, and should not be batched in order to ensure that the change is reflected as soon as possible.
         * @summary Unlink a user’s connected application
         * @param {ItemApplicationUnlinkRequest} itemApplicationUnlinkRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationUnlink: (itemApplicationUnlinkRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemApplicationUnlinkRequest' is not null or undefined
            common_1.assertParamExists('itemApplicationUnlink', 'itemApplicationUnlinkRequest', itemApplicationUnlinkRequest);
            const localVarPath = `/item/application/unlink`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemApplicationUnlinkRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).  If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.  A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.  The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
         * @summary Create public token
         * @param {ItemPublicTokenCreateRequest} itemPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemCreatePublicToken: (itemPublicTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemPublicTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('itemCreatePublicToken', 'itemPublicTokenCreateRequest', itemPublicTokenCreateRequest);
            const localVarPath = `/item/public_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemPublicTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns information about the status of an Item.
         * @summary Retrieve an Item
         * @param {ItemGetRequest} itemGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemGet: (itemGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemGetRequest' is not null or undefined
            common_1.assertParamExists('itemGet', 'itemGetRequest', itemGetRequest);
            const localVarPath = `/item/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.  Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated.
         * @summary Import Item
         * @param {ItemImportRequest} itemImportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemImport: (itemImportRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemImportRequest' is not null or undefined
            common_1.assertParamExists('itemImport', 'itemImportRequest', itemImportRequest);
            const localVarPath = `/item/import`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemImportRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes. An `access_token` does not expire, but can be revoked by calling `/item/remove`.  The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
         * @summary Exchange public token for an access token
         * @param {ItemPublicTokenExchangeRequest} itemPublicTokenExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemPublicTokenExchange: (itemPublicTokenExchangeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemPublicTokenExchangeRequest' is not null or undefined
            common_1.assertParamExists('itemPublicTokenExchange', 'itemPublicTokenExchangeRequest', itemPublicTokenExchangeRequest);
            const localVarPath = `/item/public_token/exchange`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemPublicTokenExchangeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token`, as well as any processor tokens or bank account tokens associated with the Item, is no longer valid and cannot be used to access any data that was associated with the Item.   Calling `/item/remove` is a recommended best practice when offboarding users or if a user chooses to disconnect an account linked via Plaid. For subscription products, such as Transactions, Liabilities, and Investments, calling `/item/remove` is required to end subscription billing for the Item. For money movement products such as Auth and Transfer, if the Item is at an institution that uses Tokenized Account Numbers (TANs), such as Chase or PNC, calling `/item/remove` will invalidate the TAN, and subsequent ACH transfer attempts using that TAN will be returned.  In Limited Production, calling `/item/remove` does not impact the number of remaining Limited Production Items you have available.  Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove access to them specifically using the `/asset_report/remove` endpoint.  Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution\'s OAuth permission manager.  API versions 2019-05-29 and earlier return a `removed` boolean as part of the response.
         * @summary Remove an Item
         * @param {ItemRemoveRequest} itemRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemRemove: (itemRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemRemoveRequest' is not null or undefined
            common_1.assertParamExists('itemRemove', 'itemRemoveRequest', itemRemoveRequest);
            const localVarPath = `/item/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/items/#webhook_update_acknowledged) webhook to the newly specified webhook URL.
         * @summary Update Webhook URL
         * @param {ItemWebhookUpdateRequest} itemWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemWebhookUpdate: (itemWebhookUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'itemWebhookUpdateRequest' is not null or undefined
            common_1.assertParamExists('itemWebhookUpdate', 'itemWebhookUpdateRequest', itemWebhookUpdateRequest);
            const localVarPath = `/item/webhook/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(itemWebhookUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/link/#linktokencreate).  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.
         * @summary Retrieve Liabilities data
         * @param {LiabilitiesGetRequest} liabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        liabilitiesGet: (liabilitiesGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'liabilitiesGetRequest' is not null or undefined
            common_1.assertParamExists('liabilitiesGet', 'liabilitiesGetRequest', liabilitiesGetRequest);
            const localVarPath = `/liabilities/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(liabilitiesGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/link_delivery/create` endpoint to create a Hosted Link session.
         * @summary Create Hosted Link session
         * @param {LinkDeliveryCreateRequest} linkDeliveryCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryCreate: (linkDeliveryCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'linkDeliveryCreateRequest' is not null or undefined
            common_1.assertParamExists('linkDeliveryCreate', 'linkDeliveryCreateRequest', linkDeliveryCreateRequest);
            const localVarPath = `/link_delivery/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(linkDeliveryCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session.
         * @summary Get Hosted Link session
         * @param {LinkDeliveryGetRequest} linkDeliveryGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryGet: (linkDeliveryGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'linkDeliveryGetRequest' is not null or undefined
            common_1.assertParamExists('linkDeliveryGet', 'linkDeliveryGetRequest', linkDeliveryGetRequest);
            const localVarPath = `/link_delivery/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(linkDeliveryGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Exchange an OAuth `link_correlation_id` for the corresponding `link_token`. The `link_correlation_id` is only available for \'payment_initiation\' products and is provided to the client via the OAuth `redirect_uri` as a query parameter. The `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the \'link_token\'.
         * @summary Exchange the Link Correlation Id for a Link Token
         * @param {LinkOAuthCorrelationIdExchangeRequest} linkOAuthCorrelationIdExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkOauthCorrelationIdExchange: (linkOAuthCorrelationIdExchangeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'linkOAuthCorrelationIdExchangeRequest' is not null or undefined
            common_1.assertParamExists('linkOauthCorrelationIdExchange', 'linkOAuthCorrelationIdExchangeRequest', linkOAuthCorrelationIdExchangeRequest);
            const localVarPath = `/link/oauth/correlation_id/exchange`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(linkOAuthCorrelationIdExchangeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`. For most Plaid products, the `public_token` is saved and exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).  A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the [update mode](https://plaid.com/docs/link/update-mode) flow for tokens with expired credentials, or the Identity Verification flow.
         * @summary Create Link Token
         * @param {LinkTokenCreateRequest} linkTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenCreate: (linkTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'linkTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('linkTokenCreate', 'linkTokenCreateRequest', linkTokenCreateRequest);
            const localVarPath = `/link/token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(linkTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/link/token/get` endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don\'t provide a public token via frontend callbacks, such as the [Hosted Link flow](https://plaid.com/docs/link/hosted-link/) and the [Multi-Item Link flow](https://plaid.com/docs/link/multi-item-link/). It also can be useful for debugging purposes.
         * @summary Get Link Token
         * @param {LinkTokenGetRequest} linkTokenGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenGet: (linkTokenGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'linkTokenGetRequest' is not null or undefined
            common_1.assertParamExists('linkTokenGet', 'linkTokenGetRequest', linkTokenGetRequest);
            const localVarPath = `/link/token/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(linkTokenGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you to retrieve the Network Insights from a list of `access_tokens`.
         * @summary Retrieve network insights for the provided `access_tokens`
         * @param {NetworkInsightsReportGetRequest} networkInsightsReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkInsightsReportGet: (networkInsightsReportGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'networkInsightsReportGetRequest' is not null or undefined
            common_1.assertParamExists('networkInsightsReportGet', 'networkInsightsReportGetRequest', networkInsightsReportGetRequest);
            const localVarPath = `/network_insights/report/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(networkInsightsReportGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. This is useful for determining if a user is eligible for a streamlined experience, such as Layer.  Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview).
         * @summary Check a user\'s Plaid Network status
         * @param {NetworkStatusGetRequest} networkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkStatusGet: (networkStatusGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'networkStatusGetRequest' is not null or undefined
            common_1.assertParamExists('networkStatusGet', 'networkStatusGetRequest', networkStatusGetRequest);
            const localVarPath = `/network/status/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(networkStatusGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/partner/customer/create` endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid.
         * @summary Creates a new end customer for a Plaid reseller.
         * @param {PartnerCustomerCreateRequest} partnerCustomerCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerCreate: (partnerCustomerCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'partnerCustomerCreateRequest' is not null or undefined
            common_1.assertParamExists('partnerCustomerCreate', 'partnerCustomerCreateRequest', partnerCustomerCreateRequest);
            const localVarPath = `/partner/customer/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(partnerCustomerCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.
         * @summary Enables a Plaid reseller\'s end customer in the Production environment.
         * @param {PartnerCustomerEnableRequest} partnerCustomerEnableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerEnable: (partnerCustomerEnableRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'partnerCustomerEnableRequest' is not null or undefined
            common_1.assertParamExists('partnerCustomerEnable', 'partnerCustomerEnableRequest', partnerCustomerEnableRequest);
            const localVarPath = `/partner/customer/enable`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(partnerCustomerEnableRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer.
         * @summary Returns a Plaid reseller\'s end customer.
         * @param {PartnerCustomerGetRequest} partnerCustomerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerGet: (partnerCustomerGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'partnerCustomerGetRequest' is not null or undefined
            common_1.assertParamExists('partnerCustomerGet', 'partnerCustomerGetRequest', partnerCustomerGetRequest);
            const localVarPath = `/partner/customer/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(partnerCustomerGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/partner/customer/oauth_institutions/get` endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the [reseller documentation](https://plaid.com/docs/account/resellers/#enabling-end-customers).
         * @summary Returns OAuth-institution registration information for a given end customer.
         * @param {PartnerCustomerOAuthInstitutionsGetRequest} partnerCustomerOAuthInstitutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerOauthInstitutionsGet: (partnerCustomerOAuthInstitutionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'partnerCustomerOAuthInstitutionsGetRequest' is not null or undefined
            common_1.assertParamExists('partnerCustomerOauthInstitutionsGet', 'partnerCustomerOAuthInstitutionsGetRequest', partnerCustomerOAuthInstitutionsGetRequest);
            const localVarPath = `/partner/customer/oauth_institutions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(partnerCustomerOAuthInstitutionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/partner/customer/remove` endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production.
         * @summary Removes a Plaid reseller\'s end customer.
         * @param {PartnerCustomerRemoveRequest} partnerCustomerRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerRemove: (partnerCustomerRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'partnerCustomerRemoveRequest' is not null or undefined
            common_1.assertParamExists('partnerCustomerRemove', 'partnerCustomerRemoveRequest', partnerCustomerRemoveRequest);
            const localVarPath = `/partner/customer/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(partnerCustomerRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated.  Consents can be limited in time and scope, and have constraints that describe limitations for payments.
         * @summary Create payment consent
         * @param {PaymentInitiationConsentCreateRequest} paymentInitiationConsentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentCreate: (paymentInitiationConsentCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationConsentCreateRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationConsentCreate', 'paymentInitiationConsentCreateRequest', paymentInitiationConsentCreateRequest);
            const localVarPath = `/payment_initiation/consent/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationConsentCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/consent/get` endpoint can be used to check the status of a payment consent, as well as to receive basic information such as recipient and constraints.
         * @summary Get payment consent
         * @param {PaymentInitiationConsentGetRequest} paymentInitiationConsentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentGet: (paymentInitiationConsentGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationConsentGetRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationConsentGet', 'paymentInitiationConsentGetRequest', paymentInitiationConsentGetRequest);
            const localVarPath = `/payment_initiation/consent/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationConsentGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent.
         * @summary Execute a single payment using consent
         * @param {PaymentInitiationConsentPaymentExecuteRequest} paymentInitiationConsentPaymentExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentPaymentExecute: (paymentInitiationConsentPaymentExecuteRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationConsentPaymentExecuteRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationConsentPaymentExecute', 'paymentInitiationConsentPaymentExecuteRequest', paymentInitiationConsentPaymentExecuteRequest);
            const localVarPath = `/payment_initiation/consent/payment/execute`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationConsentPaymentExecuteRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/consent/revoke` endpoint can be used to revoke the payment consent. Once the consent is revoked, it is not possible to initiate payments using it.
         * @summary Revoke payment consent
         * @param {PaymentInitiationConsentRevokeRequest} paymentInitiationConsentRevokeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentRevoke: (paymentInitiationConsentRevokeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationConsentRevokeRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationConsentRevoke', 'paymentInitiationConsentRevokeRequest', paymentInitiationConsentRevokeRequest);
            const localVarPath = `/payment_initiation/consent/revoke`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationConsentRevokeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient.  Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency).  If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day.  Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.  In Limited Production, payments must be below 5 GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency), and standing orders, variable recurring payments, and Virtual Accounts are not supported.
         * @summary Create a payment
         * @param {PaymentInitiationPaymentCreateRequest} paymentInitiationPaymentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentCreate: (paymentInitiationPaymentCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationPaymentCreateRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationPaymentCreate', 'paymentInitiationPaymentCreateRequest', paymentInitiationPaymentCreateRequest);
            const localVarPath = `/payment_initiation/payment/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationPaymentCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
         * @summary Get payment details
         * @param {PaymentInitiationPaymentGetRequest} paymentInitiationPaymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentGet: (paymentInitiationPaymentGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationPaymentGetRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationPaymentGet', 'paymentInitiationPaymentGetRequest', paymentInitiationPaymentGetRequest);
            const localVarPath = `/payment_initiation/payment/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationPaymentGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
         * @summary List payments
         * @param {PaymentInitiationPaymentListRequest} paymentInitiationPaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentList: (paymentInitiationPaymentListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationPaymentListRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationPaymentList', 'paymentInitiationPaymentListRequest', paymentInitiationPaymentListRequest);
            const localVarPath = `/payment_initiation/payment/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationPaymentListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Reverse a settled payment from a Plaid virtual account.  The original payment must be in a settled state to be refunded. To refund partially, specify the amount as part of the request. If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet.  The refund will go back to the source account that initiated the payment. The original payment must have been initiated to a Plaid virtual account so that this account can be used to initiate the refund.  Providing counterparty information such as date of birth and address increases  the likelihood of refund being successful without human intervention.
         * @summary Reverse an existing payment
         * @param {PaymentInitiationPaymentReverseRequest} paymentInitiationPaymentReverseRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentReverse: (paymentInitiationPaymentReverseRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationPaymentReverseRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationPaymentReverse', 'paymentInitiationPaymentReverseRequest', paymentInitiationPaymentReverseRequest);
            const localVarPath = `/payment_initiation/payment/reverse`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationPaymentReverseRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a payment recipient for payment initiation.  The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA) or a non-Eurozone country [supported](https://plaid.com/global) by Plaid. For a standing order (recurring) payment, the recipient must be in the UK.  It is recommended to use `bacs` in the UK and `iban` in EU.  The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
         * @summary Create payment recipient
         * @param {PaymentInitiationRecipientCreateRequest} paymentInitiationRecipientCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientCreate: (paymentInitiationRecipientCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationRecipientCreateRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationRecipientCreate', 'paymentInitiationRecipientCreateRequest', paymentInitiationRecipientCreateRequest);
            const localVarPath = `/payment_initiation/recipient/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationRecipientCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Get details about a payment recipient you have previously created.
         * @summary Get payment recipient
         * @param {PaymentInitiationRecipientGetRequest} paymentInitiationRecipientGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientGet: (paymentInitiationRecipientGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationRecipientGetRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationRecipientGet', 'paymentInitiationRecipientGetRequest', paymentInitiationRecipientGetRequest);
            const localVarPath = `/payment_initiation/recipient/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationRecipientGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
         * @summary List payment recipients
         * @param {PaymentInitiationRecipientListRequest} paymentInitiationRecipientListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientList: (paymentInitiationRecipientListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentInitiationRecipientListRequest' is not null or undefined
            common_1.assertParamExists('paymentInitiationRecipientList', 'paymentInitiationRecipientListRequest', paymentInitiationRecipientListRequest);
            const localVarPath = `/payment_initiation/recipient/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentInitiationRecipientListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/payment_profile/create` endpoint to create a new payment profile. To initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field. You can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`.
         * @summary Create payment profile
         * @param {PaymentProfileCreateRequest} paymentProfileCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileCreate: (paymentProfileCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentProfileCreateRequest' is not null or undefined
            common_1.assertParamExists('paymentProfileCreate', 'paymentProfileCreateRequest', paymentProfileCreateRequest);
            const localVarPath = `/payment_profile/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentProfileCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/payment_profile/get` endpoint to get the status of a given Payment Profile.
         * @summary Get payment profile
         * @param {PaymentProfileGetRequest} paymentProfileGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileGet: (paymentProfileGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentProfileGetRequest' is not null or undefined
            common_1.assertParamExists('paymentProfileGet', 'paymentProfileGetRequest', paymentProfileGetRequest);
            const localVarPath = `/payment_profile/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentProfileGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it’s removed, it can no longer be used to create transfers.
         * @summary Remove payment profile
         * @param {PaymentProfileRemoveRequest} paymentProfileRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileRemove: (paymentProfileRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'paymentProfileRemoveRequest' is not null or undefined
            common_1.assertParamExists('paymentProfileRemove', 'paymentProfileRemoveRequest', paymentProfileRemoveRequest);
            const localVarPath = `/payment_profile/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(paymentProfileRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint returns the account associated with a given processor token.  This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, the account balance returned may not be up-to-date; for realtime balance information, use `/processor/balance/get` instead. Note that some information is nullable.
         * @summary Retrieve the account associated with a processor token
         * @param {ProcessorAccountGetRequest} processorAccountGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAccountGet: (processorAccountGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorAccountGetRequest' is not null or undefined
            common_1.assertParamExists('processorAccountGet', 'processorAccountGetRequest', processorAccountGetRequest);
            const localVarPath = `/processor/account/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorAccountGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
         * @summary Create Apex bank account token
         * @param {ProcessorApexProcessorTokenCreateRequest} processorApexProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorApexProcessorTokenCreate: (processorApexProcessorTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorApexProcessorTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('processorApexProcessorTokenCreate', 'processorApexProcessorTokenCreateRequest', processorApexProcessorTokenCreateRequest);
            const localVarPath = `/processor/apex/processor_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorApexProcessorTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking, savings, or cash management account that\'\'s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available.  Versioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14).
         * @summary Retrieve Auth data
         * @param {ProcessorAuthGetRequest} processorAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAuthGet: (processorAuthGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorAuthGetRequest' is not null or undefined
            common_1.assertParamExists('processorAuthGet', 'processorAuthGetRequest', processorAuthGetRequest);
            const localVarPath = `/processor/auth/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorAuthGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached.
         * @summary Retrieve Balance data
         * @param {ProcessorBalanceGetRequest} processorBalanceGetRequest The &#x60;/processor/balance/get&#x60; endpoint returns the real-time balance for the account associated with a given &#x60;processor_token&#x60;.  The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.  Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of &#x60;null&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBalanceGet: (processorBalanceGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorBalanceGetRequest' is not null or undefined
            common_1.assertParamExists('processorBalanceGet', 'processorBalanceGetRequest', processorBalanceGetRequest);
            const localVarPath = `/processor/balance/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorBalanceGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
         * @summary Create a bank transfer as a processor
         * @param {ProcessorBankTransferCreateRequest} processorBankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBankTransferCreate: (processorBankTransferCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorBankTransferCreateRequest' is not null or undefined
            common_1.assertParamExists('processorBankTransferCreate', 'processorBankTransferCreateRequest', processorBankTransferCreateRequest);
            const localVarPath = `/processor/bank_transfer/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorBankTransferCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
         * @summary Retrieve Identity data
         * @param {ProcessorIdentityGetRequest} processorIdentityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityGet: (processorIdentityGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorIdentityGetRequest' is not null or undefined
            common_1.assertParamExists('processorIdentityGet', 'processorIdentityGetRequest', processorIdentityGetRequest);
            const localVarPath = `/processor/identity/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorIdentityGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {ProcessorIdentityMatchRequest} processorIdentityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityMatch: (processorIdentityMatchRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorIdentityMatchRequest' is not null or undefined
            common_1.assertParamExists('processorIdentityMatch', 'processorIdentityMatchRequest', processorIdentityMatchRequest);
            const localVarPath = `/processor/identity/match`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorIdentityMatchRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint returns the stock position data of the account associated with a given processor token.
         * @summary Retrieve Investment Holdings
         * @param {ProcessorInvestmentsHoldingsGetRequest} processorInvestmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsHoldingsGet: (processorInvestmentsHoldingsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorInvestmentsHoldingsGetRequest' is not null or undefined
            common_1.assertParamExists('processorInvestmentsHoldingsGet', 'processorInvestmentsHoldingsGetRequest', processorInvestmentsHoldingsGetRequest);
            const localVarPath = `/processor/investments/holdings/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorInvestmentsHoldingsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for the investment account associated with the processor token.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with the account, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/processor/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/processor/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/processor/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/processor/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Investments Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get investment transactions data
         * @param {ProcessorInvestmentsTransactionsGetRequest} processorInvestmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsTransactionsGet: (processorInvestmentsTransactionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorInvestmentsTransactionsGetRequest' is not null or undefined
            common_1.assertParamExists('processorInvestmentsTransactionsGet', 'processorInvestmentsTransactionsGetRequest', processorInvestmentsTransactionsGetRequest);
            const localVarPath = `/processor/investments/transactions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorInvestmentsTransactionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/liabilities/get` endpoint returns various details about a loan or credit account. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`.  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/processor/liabilities/get`.  Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the processor token. This is because Plaid must communicate directly with the institution to retrieve the additional data.
         * @summary Retrieve Liabilities data
         * @param {ProcessorLiabilitiesGetRequest} processorLiabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorLiabilitiesGet: (processorLiabilitiesGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorLiabilitiesGetRequest' is not null or undefined
            common_1.assertParamExists('processorLiabilitiesGet', 'processorLiabilitiesGetRequest', processorLiabilitiesGetRequest);
            const localVarPath = `/processor/liabilities/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorLiabilitiesGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * After calling `/processor/signal/evaluate`, call `/processor/signal/decision/report` to report whether the transaction was initiated.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {ProcessorSignalDecisionReportRequest} processorSignalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalDecisionReport: (processorSignalDecisionReportRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorSignalDecisionReportRequest' is not null or undefined
            common_1.assertParamExists('processorSignalDecisionReport', 'processorSignalDecisionReportRequest', processorSignalDecisionReportRequest);
            const localVarPath = `/processor/signal/decision/report`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorSignalDecisionReportRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/processor/signal/evaluate` to evaluate a planned ACH transaction as a processor to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/processor/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to our error documentation on [item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time. To reduce this latency, you can call `/signal/prepare` on the Item before you need to request Signal data.
         * @summary Evaluate a planned ACH transaction
         * @param {ProcessorSignalEvaluateRequest} processorSignalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalEvaluate: (processorSignalEvaluateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorSignalEvaluateRequest' is not null or undefined
            common_1.assertParamExists('processorSignalEvaluate', 'processorSignalEvaluateRequest', processorSignalEvaluateRequest);
            const localVarPath = `/processor/signal/evaluate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorSignalEvaluateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * When a processor token is not initialized with Signal, call `/processor/signal/prepare` to opt-in that processor token to the Signal data collection process, which will improve the accuracy of the Signal score.  If this endpoint is called with a processor token that is already initialized with Signal, it will return a 200 response and will not modify the processor token.
         * @summary Opt-in a processor token to Signal
         * @param {ProcessorSignalPrepareRequest} processorSignalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalPrepare: (processorSignalPrepareRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorSignalPrepareRequest' is not null or undefined
            common_1.assertParamExists('processorSignalPrepare', 'processorSignalPrepareRequest', processorSignalPrepareRequest);
            const localVarPath = `/processor/signal/prepare`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorSignalPrepareRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Call the `/processor/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/processor/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was returned.
         * @summary Report a return for an ACH transaction
         * @param {ProcessorSignalReturnReportRequest} processorSignalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalReturnReport: (processorSignalReturnReportRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorSignalReturnReportRequest' is not null or undefined
            common_1.assertParamExists('processorSignalReturnReport', 'processorSignalReturnReportRequest', processorSignalReturnReportRequest);
            const localVarPath = `/processor/signal/return/report`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorSignalReturnReportRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         *  Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).  Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user\'s bank account information changes or they revoke Plaid\'s permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new `access_token`.  To revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`.
         * @summary Create Stripe bank account token
         * @param {ProcessorStripeBankAccountTokenCreateRequest} processorStripeBankAccountTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorStripeBankAccountTokenCreate: (processorStripeBankAccountTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorStripeBankAccountTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('processorStripeBankAccountTokenCreate', 'processorStripeBankAccountTokenCreateRequest', processorStripeBankAccountTokenCreateRequest);
            const localVarPath = `/processor/stripe/bank_account_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorStripeBankAccountTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Used to create a token suitable for sending to one of Plaid\'s partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item cannot be modified or updated. To revoke the processor\'s access, the entire Item must be deleted by calling `/item/remove`.
         * @summary Create processor token
         * @param {ProcessorTokenCreateRequest} processorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenCreate: (processorTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('processorTokenCreate', 'processorTokenCreateRequest', processorTokenCreateRequest);
            const localVarPath = `/processor/token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Used to get a processor token\'s product permissions. The `products` field will be an empty list if the processor can access all available products.
         * @summary Get a processor token\'s product permissions
         * @param {ProcessorTokenPermissionsGetRequest} processorTokenPermissionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsGet: (processorTokenPermissionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTokenPermissionsGetRequest' is not null or undefined
            common_1.assertParamExists('processorTokenPermissionsGet', 'processorTokenPermissionsGetRequest', processorTokenPermissionsGetRequest);
            const localVarPath = `/processor/token/permissions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTokenPermissionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Used to control a processor\'s access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor\'s needs change.
         * @summary Control a processor\'s access to products
         * @param {ProcessorTokenPermissionsSetRequest} processorTokenPermissionsSetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsSet: (processorTokenPermissionsSetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTokenPermissionsSetRequest' is not null or undefined
            common_1.assertParamExists('processorTokenPermissionsSet', 'processorTokenPermissionsSetRequest', processorTokenPermissionsSetRequest);
            const localVarPath = `/processor/token/permissions/set`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTokenPermissionsSetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint allows you, the processor, to update the webhook URL associated with a processor token. This request triggers a `WEBHOOK_UPDATE_ACKNOWLEDGED` webhook to the newly specified webhook URL.
         * @summary Update a processor token\'s webhook URL
         * @param {ProcessorTokenWebhookUpdateRequest} processorTokenWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenWebhookUpdate: (processorTokenWebhookUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTokenWebhookUpdateRequest' is not null or undefined
            common_1.assertParamExists('processorTokenWebhookUpdate', 'processorTokenWebhookUpdateRequest', processorTokenWebhookUpdateRequest);
            const localVarPath = `/processor/token/webhook/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTokenWebhookUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/processor/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with a processor token, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/processor/transactions/get` will be the data available for the processor token as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint.  Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn\'t. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get transaction data
         * @param {ProcessorTransactionsGetRequest} processorTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsGet: (processorTransactionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTransactionsGetRequest' is not null or undefined
            common_1.assertParamExists('processorTransactionsGet', 'processorTransactionsGetRequest', processorTransactionsGetRequest);
            const localVarPath = `/processor/transactions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTransactionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on a processor token that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/processor/transactions/get` or `/processor/transactions/sync`). Once all historical transactions have been fetched, call `/processor/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/processor/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/processor/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Fetch recurring transaction streams
         * @param {ProcessorTransactionsRecurringGetRequest} processorTransactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRecurringGet: (processorTransactionsRecurringGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTransactionsRecurringGetRequest' is not null or undefined
            common_1.assertParamExists('processorTransactionsRecurringGet', 'processorTransactionsRecurringGetRequest', processorTransactionsRecurringGetRequest);
            const localVarPath = `/processor/transactions/recurring/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTransactionsRecurringGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/processor/transactions/refresh` is offered as an add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {ProcessorTransactionsRefreshRequest} processorTransactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRefresh: (processorTransactionsRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTransactionsRefreshRequest' is not null or undefined
            common_1.assertParamExists('processorTransactionsRefresh', 'processorTransactionsRefreshRequest', processorTransactionsRefreshRequest);
            const localVarPath = `/processor/transactions/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTransactionsRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         *  The `/processor/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/processor/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/processor/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.  When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/processor/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get incremental transaction updates on a processor token
         * @param {ProcessorTransactionsSyncRequest} processorTransactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsSync: (processorTransactionsSyncRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'processorTransactionsSyncRequest' is not null or undefined
            common_1.assertParamExists('processorTransactionsSync', 'processorTransactionsSyncRequest', processorTransactionsSyncRequest);
            const localVarPath = `/processor/transactions/sync`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(processorTransactionsSyncRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user.
         * @summary Check a user\'s Plaid Network status
         * @param {ProfileNetworkStatusGetRequest} profileNetworkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        profileNetworkStatusGet: (profileNetworkStatusGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'profileNetworkStatusGetRequest' is not null or undefined
            common_1.assertParamExists('profileNetworkStatusGet', 'profileNetworkStatusGetRequest', profileNetworkStatusGetRequest);
            const localVarPath = `/profile/network_status/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(profileNetworkStatusGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment.
         * @summary Manually fire a bank income webhook in sandbox
         * @param {SandboxBankIncomeFireWebhookRequest} sandboxBankIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankIncomeFireWebhook: (sandboxBankIncomeFireWebhookRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxBankIncomeFireWebhookRequest' is not null or undefined
            common_1.assertParamExists('sandboxBankIncomeFireWebhook', 'sandboxBankIncomeFireWebhookRequest', sandboxBankIncomeFireWebhookRequest);
            const localVarPath = `/sandbox/bank_income/fire_webhook`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxBankIncomeFireWebhookRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
         * @summary Manually fire a Bank Transfer webhook
         * @param {SandboxBankTransferFireWebhookRequest} sandboxBankTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferFireWebhook: (sandboxBankTransferFireWebhookRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxBankTransferFireWebhookRequest' is not null or undefined
            common_1.assertParamExists('sandboxBankTransferFireWebhook', 'sandboxBankTransferFireWebhookRequest', sandboxBankTransferFireWebhookRequest);
            const localVarPath = `/sandbox/bank_transfer/fire_webhook`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxBankTransferFireWebhookRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a bank transfer event in Sandbox
         * @param {SandboxBankTransferSimulateRequest} sandboxBankTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferSimulate: (sandboxBankTransferSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxBankTransferSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxBankTransferSimulate', 'sandboxBankTransferSimulateRequest', sandboxBankTransferSimulateRequest);
            const localVarPath = `/sandbox/bank_transfer/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxBankTransferSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for cashflow updates (Monitoring) in the Sandbox environment.
         * @summary Trigger an update for Cashflow Updates
         * @param {SandboxCraCashflowUpdatesUpdateRequest} sandboxCraCashflowUpdatesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxCraCashflowUpdatesUpdate: (sandboxCraCashflowUpdatesUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxCraCashflowUpdatesUpdateRequest' is not null or undefined
            common_1.assertParamExists('sandboxCraCashflowUpdatesUpdate', 'sandboxCraCashflowUpdatesUpdateRequest', sandboxCraCashflowUpdatesUpdateRequest);
            const localVarPath = `/sandbox/cra/cashflow_updates/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxCraCashflowUpdatesUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.
         * @summary Manually fire an Income webhook
         * @param {SandboxIncomeFireWebhookRequest} sandboxIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxIncomeFireWebhook: (sandboxIncomeFireWebhookRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxIncomeFireWebhookRequest' is not null or undefined
            common_1.assertParamExists('sandboxIncomeFireWebhook', 'sandboxIncomeFireWebhookRequest', sandboxIncomeFireWebhookRequest);
            const localVarPath = `/sandbox/income/fire_webhook`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxIncomeFireWebhookRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:  `DEFAULT_UPDATE`: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the `webhook_type` in the request body. Valid Sandbox `DEFAULT_UPDATE` webhook types include: `AUTH`, `IDENTITY`, `TRANSACTIONS`, `INVESTMENTS_TRANSACTIONS`, `LIABILITIES`, `HOLDINGS`. If the Item does not support the product, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it.  `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given same day micro-deposit item is verified via SMS verification.  `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app.  `PENDING_DISCONNECT`: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working.   `RECURRING_TRANSACTIONS_UPDATE`: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `SYNC_UPDATES_AVAILABLE`: Transactions webhook to be fired for a given Sandbox Item.  If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `PRODUCT_READY`: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions’ consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider\'s portal. This webhook is currently sent only for Chase and PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type `TRANSFER`).
         * @summary Fire a test webhook
         * @param {SandboxItemFireWebhookRequest} sandboxItemFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemFireWebhook: (sandboxItemFireWebhookRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxItemFireWebhookRequest' is not null or undefined
            common_1.assertParamExists('sandboxItemFireWebhook', 'sandboxItemFireWebhookRequest', sandboxItemFireWebhookRequest);
            const localVarPath = `/sandbox/item/fire_webhook`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxItemFireWebhookRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force a Sandbox Item into an error state
         * @param {SandboxItemResetLoginRequest} sandboxItemResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemResetLogin: (sandboxItemResetLoginRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxItemResetLoginRequest' is not null or undefined
            common_1.assertParamExists('sandboxItemResetLogin', 'sandboxItemResetLoginRequest', sandboxItemResetLoginRequest);
            const localVarPath = `/sandbox/item/reset_login`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxItemResetLoginRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.  For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
         * @summary Set verification status for Sandbox account
         * @param {SandboxItemSetVerificationStatusRequest} sandboxItemSetVerificationStatusRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemSetVerificationStatus: (sandboxItemSetVerificationStatusRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxItemSetVerificationStatusRequest' is not null or undefined
            common_1.assertParamExists('sandboxItemSetVerificationStatus', 'sandboxItemSetVerificationStatusRequest', sandboxItemSetVerificationStatusRequest);
            const localVarPath = `/sandbox/item/set_verification_status`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxItemSetVerificationStatusRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Save the selected accounts when connecting to the Platypus Oauth institution
         * @summary Save the selected accounts when connecting to the Platypus Oauth institution
         * @param {SandboxOauthSelectAccountsRequest} sandboxOauthSelectAccountsRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxOauthSelectAccounts: (sandboxOauthSelectAccountsRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxOauthSelectAccountsRequest' is not null or undefined
            common_1.assertParamExists('sandboxOauthSelectAccounts', 'sandboxOauthSelectAccountsRequest', sandboxOauthSelectAccountsRequest);
            const localVarPath = `/sandbox/oauth/select_accounts`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxOauthSelectAccountsRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/sandbox/payment_profile/reset_login/` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment.   After calling `/sandbox/payment_profile/reset_login`, calls to the `/transfer/authorization/create` with the Payment Profile will result in a `decision_rationale` `PAYMENT_PROFILE_LOGIN_REQUIRED`. You can then use update mode for Payment Profile to restore it into a good state.   In order to invoke this endpoint, you must first [create a Payment Profile](https://plaid.com/docs/transfer/add-to-app/#create-a-payment-profile-optional) and [go through the Link flow](https://plaid.com/docs/transfer/add-to-app/#create-a-link-token).
         * @summary Reset the login of a Payment Profile
         * @param {SandboxPaymentProfileResetLoginRequest} sandboxPaymentProfileResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentProfileResetLogin: (sandboxPaymentProfileResetLoginRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxPaymentProfileResetLoginRequest' is not null or undefined
            common_1.assertParamExists('sandboxPaymentProfileResetLogin', 'sandboxPaymentProfileResetLoginRequest', sandboxPaymentProfileResetLoginRequest);
            const localVarPath = `/sandbox/payment_profile/reset_login`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxPaymentProfileResetLoginRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/payment/simulate` endpoint to simulate various payment events in the Sandbox environment. This endpoint will trigger the corresponding payment status webhook.
         * @summary Simulate a payment event in Sandbox
         * @param {SandboxPaymentSimulateRequest} sandboxPaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentSimulate: (sandboxPaymentSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxPaymentSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxPaymentSimulate', 'sandboxPaymentSimulateRequest', sandboxPaymentSimulateRequest);
            const localVarPath = `/sandbox/payment/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxPaymentSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
         * @summary Create a test Item and processor token
         * @param {SandboxProcessorTokenCreateRequest} sandboxProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxProcessorTokenCreate: (sandboxProcessorTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxProcessorTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('sandboxProcessorTokenCreate', 'sandboxProcessorTokenCreateRequest', sandboxProcessorTokenCreateRequest);
            const localVarPath = `/sandbox/processor_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxProcessorTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/public_token/create` endpoint to create a valid `public_token`  for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data, or with Plaid\'s [pre-populated Sandbox test accounts](https://plaid.com/docs/sandbox/test-credentials/).
         * @summary Create a test Item
         * @param {SandboxPublicTokenCreateRequest} sandboxPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPublicTokenCreate: (sandboxPublicTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxPublicTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('sandboxPublicTokenCreate', 'sandboxPublicTokenCreateRequest', sandboxPublicTokenCreateRequest);
            const localVarPath = `/sandbox/public_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxPublicTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment.
         * @summary Manually fire a Transfer webhook
         * @param {SandboxTransferFireWebhookRequest} sandboxTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferFireWebhook: (sandboxTransferFireWebhookRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferFireWebhookRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferFireWebhook', 'sandboxTransferFireWebhookRequest', sandboxTransferFireWebhookRequest);
            const localVarPath = `/sandbox/transfer/fire_webhook`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferFireWebhookRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment.
         * @summary Simulate a ledger deposit event in Sandbox
         * @param {SandboxTransferLedgerDepositSimulateRequest} sandboxTransferLedgerDepositSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerDepositSimulate: (sandboxTransferLedgerDepositSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferLedgerDepositSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferLedgerDepositSimulate', 'sandboxTransferLedgerDepositSimulateRequest', sandboxTransferLedgerDepositSimulateRequest);
            const localVarPath = `/sandbox/transfer/ledger/deposit/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferLedgerDepositSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.
         * @summary Simulate converting pending balance to available balance
         * @param {SandboxTransferLedgerSimulateAvailableRequest} sandboxTransferLedgerSimulateAvailableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerSimulateAvailable: (sandboxTransferLedgerSimulateAvailableRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferLedgerSimulateAvailableRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferLedgerSimulateAvailable', 'sandboxTransferLedgerSimulateAvailableRequest', sandboxTransferLedgerSimulateAvailableRequest);
            const localVarPath = `/sandbox/transfer/ledger/simulate_available`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferLedgerSimulateAvailableRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment.
         * @summary Simulate a ledger withdraw event in Sandbox
         * @param {SandboxTransferLedgerWithdrawSimulateRequest} sandboxTransferLedgerWithdrawSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerWithdrawSimulate: (sandboxTransferLedgerWithdrawSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferLedgerWithdrawSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferLedgerWithdrawSimulate', 'sandboxTransferLedgerWithdrawSimulateRequest', sandboxTransferLedgerWithdrawSimulateRequest);
            const localVarPath = `/sandbox/transfer/ledger/withdraw/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferLedgerWithdrawSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/refund/simulate` endpoint to simulate a refund event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a refund event in Sandbox
         * @param {SandboxTransferRefundSimulateRequest} sandboxTransferRefundSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRefundSimulate: (sandboxTransferRefundSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferRefundSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferRefundSimulate', 'sandboxTransferRefundSimulateRequest', sandboxTransferRefundSimulateRequest);
            const localVarPath = `/sandbox/transfer/refund/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferRefundSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned.
         * @summary Trigger the creation of a repayment
         * @param {SandboxTransferRepaymentSimulateRequest} sandboxTransferRepaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRepaymentSimulate: (sandboxTransferRepaymentSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferRepaymentSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferRepaymentSimulate', 'sandboxTransferRepaymentSimulateRequest', sandboxTransferRepaymentSimulateRequest);
            const localVarPath = `/sandbox/transfer/repayment/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferRepaymentSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a transfer event in Sandbox
         * @param {SandboxTransferSimulateRequest} sandboxTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSimulate: (sandboxTransferSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferSimulate', 'sandboxTransferSimulateRequest', sandboxTransferSimulateRequest);
            const localVarPath = `/sandbox/transfer/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of `swept` will become `swept_settled`, all `posted` or `pending` transfers with a sweep status of `unswept` will become `swept`, and all `returned` transfers with a sweep status of `swept` will become `return_swept`.
         * @summary Simulate creating a sweep
         * @param {SandboxTransferSweepSimulateRequest} sandboxTransferSweepSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSweepSimulate: (sandboxTransferSweepSimulateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferSweepSimulateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferSweepSimulate', 'sandboxTransferSweepSimulateRequest', sandboxTransferSweepSimulateRequest);
            const localVarPath = `/sandbox/transfer/sweep/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferSweepSimulateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing `virtual_time`, but may never go back to a lower `virtual_time`.  If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.  For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting `virtual_time` = t + 15 days, 2 new originations should be created, along with the webhook events.  The advancement of the test clock from its current `virtual_time` should be limited such that there are no more than 20 originations resulting from the advance operation on each `recurring_transfer` associated with the `test_clock`.  For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the `virtual_time` up to 80 weeks on each API call.
         * @summary Advance a test clock
         * @param {SandboxTransferTestClockAdvanceRequest} sandboxTransferTestClockAdvanceRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockAdvance: (sandboxTransferTestClockAdvanceRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferTestClockAdvanceRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferTestClockAdvance', 'sandboxTransferTestClockAdvanceRequest', sandboxTransferTestClockAdvanceRequest);
            const localVarPath = `/sandbox/transfer/test_clock/advance`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferTestClockAdvanceRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox.  A test clock can be associated with up to 5 recurring transfers.
         * @summary Create a test clock
         * @param {SandboxTransferTestClockCreateRequest} sandboxTransferTestClockCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockCreate: (sandboxTransferTestClockCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferTestClockCreateRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferTestClockCreate', 'sandboxTransferTestClockCreateRequest', sandboxTransferTestClockCreateRequest);
            const localVarPath = `/sandbox/transfer/test_clock/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferTestClockCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment.
         * @summary Get a test clock
         * @param {SandboxTransferTestClockGetRequest} sandboxTransferTestClockGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockGet: (sandboxTransferTestClockGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferTestClockGetRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferTestClockGet', 'sandboxTransferTestClockGetRequest', sandboxTransferTestClockGetRequest);
            const localVarPath = `/sandbox/transfer/test_clock/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferTestClockGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/sandbox/transfer/test_clock/list` endpoint to see a list of all your test clocks in the Sandbox environment, by ascending `virtual_time`. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired test clocks.
         * @summary List test clocks
         * @param {SandboxTransferTestClockListRequest} sandboxTransferTestClockListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockList: (sandboxTransferTestClockListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxTransferTestClockListRequest' is not null or undefined
            common_1.assertParamExists('sandboxTransferTestClockList', 'sandboxTransferTestClockListRequest', sandboxTransferTestClockListRequest);
            const localVarPath = `/sandbox/transfer/test_clock/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxTransferTestClockListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/user/reset_login`, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force item(s) for a Sandbox User into an error state
         * @param {SandboxUserResetLoginRequest} sandboxUserResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxUserResetLogin: (sandboxUserResetLoginRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'sandboxUserResetLoginRequest' is not null or undefined
            common_1.assertParamExists('sandboxUserResetLogin', 'sandboxUserResetLoginRequest', sandboxUserResetLoginRequest);
            const localVarPath = `/sandbox/user/reset_login`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(sandboxUserResetLoginRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {SignalDecisionReportRequest} signalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalDecisionReport: (signalDecisionReportRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'signalDecisionReportRequest' is not null or undefined
            common_1.assertParamExists('signalDecisionReport', 'signalDecisionReportRequest', signalDecisionReportRequest);
            const localVarPath = `/signal/decision/report`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(signalDecisionReportRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to the error documentation on [Item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time.
         * @summary Evaluate a planned ACH transaction
         * @param {SignalEvaluateRequest} signalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalEvaluate: (signalEvaluateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'signalEvaluateRequest' is not null or undefined
            common_1.assertParamExists('signalEvaluate', 'signalEvaluateRequest', signalEvaluateRequest);
            const localVarPath = `/signal/evaluate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(signalEvaluateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * When an Item is not initialized with Signal, call `/signal/prepare` to opt-in that Item to the Signal data collection process, developing a Signal score. This should be done on Items where Signal was added in the `additional_consented_products` array but not in the `products`, `optional_products`, or `required_if_supported_products` array. If `/signal/prepare` is skipped on an Item that is not initialized with Signal, the initial call to `/signal/evaluate` on that Item will be less accurate, because Signal will have access to less data for computing the Signal score.  If run on an Item that is already initialized with Signal, this endpoint will return a 200 response and will not modify the Item.
         * @summary Opt-in an Item to Signal
         * @param {SignalPrepareRequest} signalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalPrepare: (signalPrepareRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'signalPrepareRequest' is not null or undefined
            common_1.assertParamExists('signalPrepare', 'signalPrepareRequest', signalPrepareRequest);
            const localVarPath = `/signal/prepare`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(signalPrepareRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
         * @summary Report a return for an ACH transaction
         * @param {SignalReturnReportRequest} signalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalReturnReport: (signalReturnReportRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'signalReturnReportRequest' is not null or undefined
            common_1.assertParamExists('signalReturnReport', 'signalReturnReportRequest', signalReturnReportRequest);
            const localVarPath = `/signal/return/report`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(signalReturnReportRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use `/signal/schedule` to schedule a planned ACH transaction.
         * @summary Schedule a planned ACH transaction
         * @param {SignalScheduleRequest} signalScheduleRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalSchedule: (signalScheduleRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'signalScheduleRequest' is not null or undefined
            common_1.assertParamExists('signalSchedule', 'signalScheduleRequest', signalScheduleRequest);
            const localVarPath = `/signal/schedule`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(signalScheduleRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/statements/download` endpoint retrieves a single statement PDF in binary format.  The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system.
         * @summary Retrieve a single statement.
         * @param {StatementsDownloadRequest} statementsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsDownload: (statementsDownloadRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'statementsDownloadRequest' is not null or undefined
            common_1.assertParamExists('statementsDownload', 'statementsDownloadRequest', statementsDownloadRequest);
            const localVarPath = `/statements/download`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(statementsDownloadRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/statements/list` endpoint retrieves a list of all statements associated with an item.
         * @summary Retrieve a list of all statements associated with an item.
         * @param {StatementsListRequest} statementsListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsList: (statementsListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'statementsListRequest' is not null or undefined
            common_1.assertParamExists('statementsList', 'statementsListRequest', statementsListRequest);
            const localVarPath = `/statements/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(statementsListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.
         * @summary Refresh statements data.
         * @param {StatementsRefreshRequest} statementsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsRefresh: (statementsRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'statementsRefreshRequest' is not null or undefined
            common_1.assertParamExists('statementsRefresh', 'statementsRefreshRequest', statementsRefreshRequest);
            const localVarPath = `/statements/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(statementsRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.  The product is currently in beta.
         * @summary enhance locally-held transaction data
         * @param {TransactionsEnhanceGetRequest} transactionsEnhanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnhance: (transactionsEnhanceGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsEnhanceGetRequest' is not null or undefined
            common_1.assertParamExists('transactionsEnhance', 'transactionsEnhanceGetRequest', transactionsEnhanceGetRequest);
            const localVarPath = `/beta/transactions/v1/enhance`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsEnhanceGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.
         * @summary Enrich locally-held transaction data
         * @param {TransactionsEnrichRequest} transactionsEnrichRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnrich: (transactionsEnrichRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsEnrichRequest' is not null or undefined
            common_1.assertParamExists('transactionsEnrich', 'transactionsEnrichRequest', transactionsEnrichRequest);
            const localVarPath = `/transactions/enrich`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsEnrichRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates.  The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.  Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn\'t. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get transaction data
         * @param {TransactionsGetRequest} transactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsGet: (transactionsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsGetRequest' is not null or undefined
            common_1.assertParamExists('transactionsGet', 'transactionsGetRequest', transactionsGetRequest);
            const localVarPath = `/transactions/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on an Item that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/transactions/get` or `/transactions/sync`).   When using Recurring Transactions, for best results, make sure to use the [`days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) parameter to request at least 180 days of history when initializing Items with Transactions. Once all historical transactions have been fetched, call `/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.
         * @summary Fetch recurring transaction streams
         * @param {TransactionsRecurringGetRequest} transactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRecurringGet: (transactionsRecurringGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsRecurringGetRequest' is not null or undefined
            common_1.assertParamExists('transactionsRecurringGet', 'transactionsRecurringGetRequest', transactionsRecurringGetRequest);
            const localVarPath = `/transactions/recurring/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsRecurringGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item. The on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled Item. The Item must already have Transactions added as a product in order to call `/transactions/refresh`.  If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/transactions/sync` and `/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get` or `/transactions/sync`.  Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/transactions/refresh` is offered as an optional add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {TransactionsRefreshRequest} transactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRefresh: (transactionsRefreshRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsRefreshRequest' is not null or undefined
            common_1.assertParamExists('transactionsRefresh', 'transactionsRefreshRequest', transactionsRefreshRequest);
            const localVarPath = `/transactions/refresh`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsRefreshRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/rules/v1/create` endpoint creates transaction categorization rules.  Rules will be applied on the Item\'s transactions returned in `/transactions/get` response.  The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
         * @summary Create transaction category rule
         * @param {TransactionsRulesCreateRequest} transactionsRulesCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesCreate: (transactionsRulesCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsRulesCreateRequest' is not null or undefined
            common_1.assertParamExists('transactionsRulesCreate', 'transactionsRulesCreateRequest', transactionsRulesCreateRequest);
            const localVarPath = `/beta/transactions/rules/v1/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsRulesCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token.
         * @summary Return a list of rules created for the Item associated with the access token.
         * @param {TransactionsRulesListRequest} transactionsRulesListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesList: (transactionsRulesListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsRulesListRequest' is not null or undefined
            common_1.assertParamExists('transactionsRulesList', 'transactionsRulesListRequest', transactionsRulesListRequest);
            const localVarPath = `/beta/transactions/rules/v1/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsRulesListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/rules/v1/remove` endpoint is used to remove a transaction rule.
         * @summary Remove transaction rule
         * @param {TransactionsRulesRemoveRequest} transactionsRulesRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesRemove: (transactionsRulesRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsRulesRemoveRequest' is not null or undefined
            common_1.assertParamExists('transactionsRulesRemove', 'transactionsRulesRemoveRequest', transactionsRulesRemoveRequest);
            const localVarPath = `/beta/transactions/rules/v1/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsRulesRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.   When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.
         * @summary Get incremental transaction updates on an Item
         * @param {TransactionsSyncRequest} transactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsSync: (transactionsSyncRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsSyncRequest' is not null or undefined
            common_1.assertParamExists('transactionsSync', 'transactionsSyncRequest', transactionsSyncRequest);
            const localVarPath = `/transactions/sync`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsSyncRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`.  The product is currently in beta.
         * @summary Obtain user insights based on transactions sent through /transactions/enrich
         * @param {TransactionsUserInsightsGetRequest} transactionsUserInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsUserInsightsGet: (transactionsUserInsightsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transactionsUserInsightsGetRequest' is not null or undefined
            common_1.assertParamExists('transactionsUserInsightsGet', 'transactionsUserInsightsGetRequest', transactionsUserInsightsGetRequest);
            const localVarPath = `/beta/transactions/user_insights/v1/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transactionsUserInsightsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/authorization/cancel` endpoint to cancel a transfer authorization. A transfer authorization is eligible for cancellation if it has not yet been used to create a transfer.
         * @summary Cancel a transfer authorization
         * @param {TransferAuthorizationCancelRequest} transferAuthorizationCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCancel: (transferAuthorizationCancelRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferAuthorizationCancelRequest' is not null or undefined
            common_1.assertParamExists('transferAuthorizationCancel', 'transferAuthorizationCancelRequest', transferAuthorizationCancelRequest);
            const localVarPath = `/transfer/authorization/cancel`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferAuthorizationCancelRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/authorization/create` endpoint to authorize a transfer. This endpoint must be called prior to calling `/transfer/create`. The transfer authorization will expire if not used after one hour. (You can contact your account manager to change the default authorization lifetime.)   There are four possible outcomes to calling this endpoint:     - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer.     - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization.    - If the `authorization.decision` is `approved`, and the `authorization.rationale_code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`.      - If the `authorization.decision` is `approved` and the `authorization.rationale_code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema.  In Plaid\'s Sandbox environment the decisions will be returned as follows:    - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account.    - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).    - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).    - To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.    - To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
         * @summary Create a transfer authorization
         * @param {TransferAuthorizationCreateRequest} transferAuthorizationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCreate: (transferAuthorizationCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferAuthorizationCreateRequest' is not null or undefined
            common_1.assertParamExists('transferAuthorizationCreate', 'transferAuthorizationCreateRequest', transferAuthorizationCreateRequest);
            const localVarPath = `/transfer/authorization/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferAuthorizationCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * (Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid.
         * @summary (Deprecated) Retrieve a balance held with Plaid
         * @param {TransferBalanceGetRequest} transferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferBalanceGet: (transferBalanceGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferBalanceGetRequest' is not null or undefined
            common_1.assertParamExists('transferBalanceGet', 'transferBalanceGetRequest', transferBalanceGetRequest);
            const localVarPath = `/transfer/balance/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferBalanceGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/cancel` endpoint to cancel a transfer.  A transfer is eligible for cancellation if the `cancellable` property returned by `/transfer/get` is `true`.
         * @summary Cancel a transfer
         * @param {TransferCancelRequest} transferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCancel: (transferCancelRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferCancelRequest' is not null or undefined
            common_1.assertParamExists('transferCancel', 'transferCancelRequest', transferCancelRequest);
            const localVarPath = `/transfer/cancel`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferCancelRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/capabilities/get` endpoint to determine the RTP eligibility information of an account to be used with Transfer. This endpoint works on all Transfer-capable Items, including those created by `/transfer/migrate_account`. To simulate RTP eligibility in Sandbox, log in using the username `user_good` and password `pass_good` and use the first two checking and savings accounts in the \"First Platypus Bank\" institution (ending in 0000 or 1111), which will return `true`. Any other account will return `false`.
         * @summary Get RTP eligibility information of a transfer
         * @param {TransferCapabilitiesGetRequest} transferCapabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCapabilitiesGet: (transferCapabilitiesGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferCapabilitiesGetRequest' is not null or undefined
            common_1.assertParamExists('transferCapabilitiesGet', 'transferCapabilitiesGetRequest', transferCapabilitiesGetRequest);
            const localVarPath = `/transfer/capabilities/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferCapabilitiesGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/configuration/get` endpoint to view your transfer product configurations.
         * @summary Get transfer product configuration
         * @param {TransferConfigurationGetRequest} transferConfigurationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferConfigurationGet: (transferConfigurationGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferConfigurationGetRequest' is not null or undefined
            common_1.assertParamExists('transferConfigurationGet', 'transferConfigurationGetRequest', transferConfigurationGetRequest);
            const localVarPath = `/transfer/configuration/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferConfigurationGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/create` endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided `transfer_id` has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use [Transfer events](https://plaid.com/docs/transfer/reconciling-transfers/).
         * @summary Create a transfer
         * @param {TransferCreateRequest} transferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCreate: (transferCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferCreateRequest' is not null or undefined
            common_1.assertParamExists('transferCreate', 'transferCreateRequest', transferCreateRequest);
            const localVarPath = `/transfer/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. You must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header.
         * @summary Upload transfer diligence document on behalf of the originator
         * @param {TransferDiligenceDocumentUploadRequest} transferDiligenceDocumentUploadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceDocumentUpload: (transferDiligenceDocumentUploadRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferDiligenceDocumentUploadRequest' is not null or undefined
            common_1.assertParamExists('transferDiligenceDocumentUpload', 'transferDiligenceDocumentUploadRequest', transferDiligenceDocumentUploadRequest);
            const localVarPath = `/transfer/diligence/document/upload`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferDiligenceDocumentUploadRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).
         * @summary Submit transfer diligence on behalf of the originator
         * @param {TransferDiligenceSubmitRequest} transferDiligenceSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceSubmit: (transferDiligenceSubmitRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferDiligenceSubmitRequest' is not null or undefined
            common_1.assertParamExists('transferDiligenceSubmit', 'transferDiligenceSubmitRequest', transferDiligenceSubmitRequest);
            const localVarPath = `/transfer/diligence/submit`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferDiligenceSubmitRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
         * @summary List transfer events
         * @param {TransferEventListRequest} transferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventList: (transferEventListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferEventListRequest' is not null or undefined
            common_1.assertParamExists('transferEventList', 'transferEventListRequest', transferEventListRequest);
            const localVarPath = `/transfer/event/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferEventListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.
         * @summary Sync transfer events
         * @param {TransferEventSyncRequest} transferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventSync: (transferEventSyncRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferEventSyncRequest' is not null or undefined
            common_1.assertParamExists('transferEventSync', 'transferEventSyncRequest', transferEventSyncRequest);
            const localVarPath = `/transfer/event/sync`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferEventSyncRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/get` endpoint fetches information about the transfer corresponding to the given `transfer_id` or `authorization_id`. One of `transfer_id` or `authorization_id` must be populated but not both.
         * @summary Retrieve a transfer
         * @param {TransferGetRequest} transferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGet: (transferGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferGetRequest' is not null or undefined
            common_1.assertParamExists('transferGet', 'transferGetRequest', transferGetRequest);
            const localVarPath = `/transfer/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.
         * @summary Create a transfer intent object to invoke the Transfer UI
         * @param {TransferIntentCreateRequest} transferIntentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentCreate: (transferIntentCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferIntentCreateRequest' is not null or undefined
            common_1.assertParamExists('transferIntentCreate', 'transferIntentCreateRequest', transferIntentCreateRequest);
            const localVarPath = `/transfer/intent/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferIntentCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.
         * @summary Retrieve more information about a transfer intent
         * @param {TransferIntentGetRequest} transferIntentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentGet: (transferIntentGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferIntentGetRequest' is not null or undefined
            common_1.assertParamExists('transferIntentGet', 'transferIntentGetRequest', transferIntentGetRequest);
            const localVarPath = `/transfer/intent/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferIntentGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger.
         * @summary Deposit funds into a Plaid Ledger balance
         * @param {TransferLedgerDepositRequest} transferLedgerDepositRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDeposit: (transferLedgerDepositRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferLedgerDepositRequest' is not null or undefined
            common_1.assertParamExists('transferLedgerDeposit', 'transferLedgerDepositRequest', transferLedgerDepositRequest);
            const localVarPath = `/transfer/ledger/deposit`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferLedgerDepositRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/ledger/distribute` endpoint to move available balance between the ledgers of the platform and one of its originators.
         * @summary Move available balance between the ledgers of the platform and one of its originators
         * @param {TransferLedgerDistributeRequest} transferLedgerDistributeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDistribute: (transferLedgerDistributeRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferLedgerDistributeRequest' is not null or undefined
            common_1.assertParamExists('transferLedgerDistribute', 'transferLedgerDistributeRequest', transferLedgerDistributeRequest);
            const localVarPath = `/transfer/ledger/distribute`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferLedgerDistributeRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid.
         * @summary Retrieve Plaid Ledger balance
         * @param {TransferLedgerGetRequest} transferLedgerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerGet: (transferLedgerGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferLedgerGetRequest' is not null or undefined
            common_1.assertParamExists('transferLedgerGet', 'transferLedgerGetRequest', transferLedgerGetRequest);
            const localVarPath = `/transfer/ledger/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferLedgerGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance.
         * @summary Withdraw funds from a Plaid Ledger balance
         * @param {TransferLedgerWithdrawRequest} transferLedgerWithdrawRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerWithdraw: (transferLedgerWithdrawRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferLedgerWithdrawRequest' is not null or undefined
            common_1.assertParamExists('transferLedgerWithdraw', 'transferLedgerWithdrawRequest', transferLedgerWithdrawRequest);
            const localVarPath = `/transfer/ledger/withdraw`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferLedgerWithdrawRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
         * @summary List transfers
         * @param {TransferListRequest} transferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferList: (transferListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferListRequest' is not null or undefined
            common_1.assertParamExists('transferList', 'transferListRequest', transferListRequest);
            const localVarPath = `/transfer/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics.
         * @summary Get transfer product usage metrics
         * @param {TransferMetricsGetRequest} transferMetricsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMetricsGet: (transferMetricsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferMetricsGetRequest' is not null or undefined
            common_1.assertParamExists('transferMetricsGet', 'transferMetricsGetRequest', transferMetricsGetRequest);
            const localVarPath = `/transfer/metrics/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferMetricsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Transfers
         * @param {TransferMigrateAccountRequest} transferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMigrateAccount: (transferMigrateAccountRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferMigrateAccountRequest' is not null or undefined
            common_1.assertParamExists('transferMigrateAccount', 'transferMigrateAccountRequest', transferMigrateAccountRequest);
            const localVarPath = `/transfer/migrate_account`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferMigrateAccountRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`.
         * @summary Create a new originator
         * @param {TransferOriginatorCreateRequest} transferOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorCreate: (transferOriginatorCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferOriginatorCreateRequest' is not null or undefined
            common_1.assertParamExists('transferOriginatorCreate', 'transferOriginatorCreateRequest', transferOriginatorCreateRequest);
            const localVarPath = `/transfer/originator/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferOriginatorCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator.
         * @summary Update the funding account associated with the originator
         * @param {TransferOriginatorFundingAccountUpdateRequest} transferOriginatorFundingAccountUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorFundingAccountUpdate: (transferOriginatorFundingAccountUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferOriginatorFundingAccountUpdateRequest' is not null or undefined
            common_1.assertParamExists('transferOriginatorFundingAccountUpdate', 'transferOriginatorFundingAccountUpdateRequest', transferOriginatorFundingAccountUpdateRequest);
            const localVarPath = `/transfer/originator/funding_account/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferOriginatorFundingAccountUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/originator/get` endpoint gets status updates for an originator\'s onboarding process. This information is also available via the Transfer page on the Plaid dashboard.
         * @summary Get status of an originator\'s onboarding
         * @param {TransferOriginatorGetRequest} transferOriginatorGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorGet: (transferOriginatorGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferOriginatorGetRequest' is not null or undefined
            common_1.assertParamExists('transferOriginatorGet', 'transferOriginatorGetRequest', transferOriginatorGetRequest);
            const localVarPath = `/transfer/originator/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferOriginatorGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/originator/list` endpoint gets status updates for all of your originators\' onboarding. This information is also available via the Plaid dashboard.
         * @summary Get status of all originators\' onboarding
         * @param {TransferOriginatorListRequest} transferOriginatorListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorList: (transferOriginatorListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferOriginatorListRequest' is not null or undefined
            common_1.assertParamExists('transferOriginatorList', 'transferOriginatorListRequest', transferOriginatorListRequest);
            const localVarPath = `/transfer/originator/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferOriginatorListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/platform/originator/create` endpoint allows gathering information about the originator specific to the Scaled Platform Transfer offering, including the originator\'s agreement to legal terms required before accepting any further information related to the originator.
         * @summary Create an originator for scaled platform customers
         * @param {TransferPlatformOriginatorCreateRequest} transferPlatformOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformOriginatorCreate: (transferPlatformOriginatorCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferPlatformOriginatorCreateRequest' is not null or undefined
            common_1.assertParamExists('transferPlatformOriginatorCreate', 'transferPlatformOriginatorCreateRequest', transferPlatformOriginatorCreateRequest);
            const localVarPath = `/transfer/platform/originator/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferPlatformOriginatorCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/platform/person/create` endpoint to create a person record associated with an originator and optionally submit person-specific requirements.
         * @summary Create a person associated with an originator
         * @param {TransferPlatformPersonCreateRequest} transferPlatformPersonCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformPersonCreate: (transferPlatformPersonCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferPlatformPersonCreateRequest' is not null or undefined
            common_1.assertParamExists('transferPlatformPersonCreate', 'transferPlatformPersonCreateRequest', transferPlatformPersonCreateRequest);
            const localVarPath = `/transfer/platform/person/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferPlatformPersonCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/platform/requirement/submit` endpoint allows platforms to submit onboarding requirements for an originator as part of the Scaled Platform Transfer offering.
         * @summary Submit onboarding requirements for Scaled Platform originators
         * @param {TransferPlatformRequirementSubmitRequest} transferPlatformRequirementSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformRequirementSubmit: (transferPlatformRequirementSubmitRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferPlatformRequirementSubmitRequest' is not null or undefined
            common_1.assertParamExists('transferPlatformRequirementSubmit', 'transferPlatformRequirementSubmitRequest', transferPlatformRequirementSubmitRequest);
            const localVarPath = `/transfer/platform/requirement/submit`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferPlatformRequirementSubmitRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement.
         * @summary Generate a Plaid-hosted onboarding UI URL.
         * @param {TransferQuestionnaireCreateRequest} transferQuestionnaireCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferQuestionnaireCreate: (transferQuestionnaireCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferQuestionnaireCreateRequest' is not null or undefined
            common_1.assertParamExists('transferQuestionnaireCreate', 'transferQuestionnaireCreateRequest', transferQuestionnaireCreateRequest);
            const localVarPath = `/transfer/questionnaire/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferQuestionnaireCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer.  Scheduled transfer that hasn\'t been submitted to bank will be cancelled.
         * @summary Cancel a recurring transfer.
         * @param {TransferRecurringCancelRequest} transferRecurringCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCancel: (transferRecurringCancelRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRecurringCancelRequest' is not null or undefined
            common_1.assertParamExists('transferRecurringCancel', 'transferRecurringCancelRequest', transferRecurringCancelRequest);
            const localVarPath = `/transfer/recurring/cancel`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRecurringCancelRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/recurring/create` endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Platform Payments (beta) customers.
         * @summary Create a recurring transfer
         * @param {TransferRecurringCreateRequest} transferRecurringCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCreate: (transferRecurringCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRecurringCreateRequest' is not null or undefined
            common_1.assertParamExists('transferRecurringCreate', 'transferRecurringCreateRequest', transferRecurringCreateRequest);
            const localVarPath = `/transfer/recurring/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRecurringCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`.
         * @summary Retrieve a recurring transfer
         * @param {TransferRecurringGetRequest} transferRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringGet: (transferRecurringGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRecurringGetRequest' is not null or undefined
            common_1.assertParamExists('transferRecurringGet', 'transferRecurringGetRequest', transferRecurringGetRequest);
            const localVarPath = `/transfer/recurring/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRecurringGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/recurring/list` endpoint to see a list of all your recurring transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired recurring transfers.
         * @summary List recurring transfers
         * @param {TransferRecurringListRequest} transferRecurringListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringList: (transferRecurringListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRecurringListRequest' is not null or undefined
            common_1.assertParamExists('transferRecurringList', 'transferRecurringListRequest', transferRecurringListRequest);
            const localVarPath = `/transfer/recurring/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRecurringListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/refund/cancel` endpoint to cancel a refund.  A refund is eligible for cancellation if it has not yet been submitted to the payment network.
         * @summary Cancel a refund
         * @param {TransferRefundCancelRequest} transferRefundCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCancel: (transferRefundCancelRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRefundCancelRequest' is not null or undefined
            common_1.assertParamExists('transferRefundCancel', 'transferRefundCancelRequest', transferRefundCancelRequest);
            const localVarPath = `/transfer/refund/cancel`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRefundCancelRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Use the `/transfer/refund/create` endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days.  Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds.
         * @summary Create a refund
         * @param {TransferRefundCreateRequest} transferRefundCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCreate: (transferRefundCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRefundCreateRequest' is not null or undefined
            common_1.assertParamExists('transferRefundCreate', 'transferRefundCreateRequest', transferRefundCreateRequest);
            const localVarPath = `/transfer/refund/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRefundCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`.
         * @summary Retrieve a refund
         * @param {TransferRefundGetRequest} transferRefundGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundGet: (transferRefundGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRefundGetRequest' is not null or undefined
            common_1.assertParamExists('transferRefundGet', 'transferRefundGetRequest', transferRefundGetRequest);
            const localVarPath = `/transfer/refund/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRefundGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/repayment/list` endpoint fetches repayments matching the given filters. Repayments are returned in reverse-chronological order (most recent first) starting at the given `start_time`.
         * @summary Lists historical repayments
         * @param {TransferRepaymentListRequest} transferRepaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentList: (transferRepaymentListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRepaymentListRequest' is not null or undefined
            common_1.assertParamExists('transferRepaymentList', 'transferRepaymentListRequest', transferRepaymentListRequest);
            const localVarPath = `/transfer/repayment/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRepaymentListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/repayment/return/list` endpoint retrieves the set of returns that were batched together into the specified repayment. The sum of amounts of returns retrieved by this request equals the amount of the repayment.
         * @summary List the returns included in a repayment
         * @param {TransferRepaymentReturnListRequest} transferRepaymentReturnListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentReturnList: (transferRepaymentReturnListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferRepaymentReturnListRequest' is not null or undefined
            common_1.assertParamExists('transferRepaymentReturnList', 'transferRepaymentReturnListRequest', transferRepaymentReturnListRequest);
            const localVarPath = `/transfer/repayment/return/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferRepaymentReturnListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {TransferSweepGetRequest} transferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepGet: (transferSweepGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferSweepGetRequest' is not null or undefined
            common_1.assertParamExists('transferSweepGet', 'transferSweepGetRequest', transferSweepGetRequest);
            const localVarPath = `/transfer/sweep/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferSweepGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.
         * @summary List sweeps
         * @param {TransferSweepListRequest} transferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepList: (transferSweepListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'transferSweepListRequest' is not null or undefined
            common_1.assertParamExists('transferSweepList', 'transferSweepListRequest', transferSweepListRequest);
            const localVarPath = `/transfer/sweep/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(transferSweepListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns user permissioned account data including identity and Item access tokens.
         * @summary Retrieve User Account
         * @param {UserAccountSessionGetRequest} userAccountSessionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userAccountSessionGet: (userAccountSessionGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userAccountSessionGetRequest' is not null or undefined
            common_1.assertParamExists('userAccountSessionGet', 'userAccountSessionGetRequest', userAccountSessionGetRequest);
            const localVarPath = `/user_account/session/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userAccountSessionGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint should be called for each of your end users before they begin a Plaid Check or Income flow, or a Multi-Item Link flow. This provides you a single token to access all data associated with the user. You should only create one per end user.  The `consumer_report_user_identity` object must be present in order to create a Plaid Check Consumer Report for a user. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.  If you call the endpoint multiple times with the same `client_user_id`, the first creation call will succeed and the rest will fail with an error message indicating that the user has been created for the given `client_user_id`.  Ensure that you store the `user_token` along with your user\'s identifier in your database, as it is not possible to retrieve a previously created `user_token`.
         * @summary Create user
         * @param {UserCreateRequest} userCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userCreate: (userCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userCreateRequest' is not null or undefined
            common_1.assertParamExists('userCreate', 'userCreateRequest', userCreateRequest);
            const localVarPath = `/user/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Returns Items associated with a User along with their corresponding statuses.
         * @summary Get Items associated with a User
         * @param {UserItemsGetRequest} userItemsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userItemsGet: (userItemsGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userItemsGetRequest' is not null or undefined
            common_1.assertParamExists('userItemsGet', 'userItemsGetRequest', userItemsGetRequest);
            const localVarPath = `/user/items/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userItemsGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * `/user/remove` deletes a user token and and associated information, including any Items associated with the token.  Any subsequent calls to retrieve information using the same user token will result in an error stating the user does not exist.
         * @summary Remove user
         * @param {UserRemoveRequest} userRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userRemove: (userRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userRemoveRequest' is not null or undefined
            common_1.assertParamExists('userRemove', 'userRemoveRequest', userRemoveRequest);
            const localVarPath = `/user/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint is used to create a third-party user token. This token can be shared with and used by a specified third-party client to access data associated with the user through supported endpoints.  Ensure you store the `third_party_user_token` along with the `user_token` and `third_party_client_id`, as it is not possible to retrieve a previously created `third_party_user_token`.
         * @summary Create a third-party user token
         * @param {UserThirdPartyTokenCreateRequest} userThirdPartyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenCreate: (userThirdPartyTokenCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userThirdPartyTokenCreateRequest' is not null or undefined
            common_1.assertParamExists('userThirdPartyTokenCreate', 'userThirdPartyTokenCreateRequest', userThirdPartyTokenCreateRequest);
            const localVarPath = `/user/third_party_token/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userThirdPartyTokenCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user.   Any subsequent calls to retrieve information using the same third-party user token will result in an error stating the third-party user token does not exist.
         * @summary Remove a third-party user token
         * @param {UserThirdPartyTokenRemoveRequest} userThirdPartyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenRemove: (userThirdPartyTokenRemoveRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userThirdPartyTokenRemoveRequest' is not null or undefined
            common_1.assertParamExists('userThirdPartyTokenRemove', 'userThirdPartyTokenRemoveRequest', userThirdPartyTokenRemoveRequest);
            const localVarPath = `/user/third_party_token/remove`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userThirdPartyTokenRemoveRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint is used to update user information associated with an existing `user_token`. It can also be used to enable an existing `user_token` for use with Consumer Reports by Plaid Check, by adding a `consumer_report_user_identity` object to the user. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.
         * @summary Update user information
         * @param {UserUpdateRequest} userUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userUpdate: (userUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'userUpdateRequest' is not null or undefined
            common_1.assertParamExists('userUpdate', 'userUpdateRequest', userUpdateRequest);
            const localVarPath = `/user/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(userUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create an e-wallet. The response is the newly created e-wallet object.
         * @summary Create an e-wallet
         * @param {WalletCreateRequest} walletCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletCreate: (walletCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletCreateRequest' is not null or undefined
            common_1.assertParamExists('walletCreate', 'walletCreateRequest', walletCreateRequest);
            const localVarPath = `/wallet/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Fetch an e-wallet. The response includes the current balance.
         * @summary Fetch an e-wallet
         * @param {WalletGetRequest} walletGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletGet: (walletGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletGetRequest' is not null or undefined
            common_1.assertParamExists('walletGet', 'walletGetRequest', walletGetRequest);
            const localVarPath = `/wallet/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint lists all e-wallets in descending order of creation.
         * @summary Fetch a list of e-wallets
         * @param {WalletListRequest} walletListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletList: (walletListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletListRequest' is not null or undefined
            common_1.assertParamExists('walletList', 'walletListRequest', walletListRequest);
            const localVarPath = `/wallet/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction. Transactions will settle in seconds to several days, depending on the underlying payment rail.
         * @summary Execute a transaction using an e-wallet
         * @param {WalletTransactionExecuteRequest} walletTransactionExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionExecute: (walletTransactionExecuteRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletTransactionExecuteRequest' is not null or undefined
            common_1.assertParamExists('walletTransactionExecute', 'walletTransactionExecuteRequest', walletTransactionExecuteRequest);
            const localVarPath = `/wallet/transaction/execute`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletTransactionExecuteRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Fetch a specific e-wallet transaction
         * @summary Fetch an e-wallet transaction
         * @param {WalletTransactionGetRequest} walletTransactionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionGet: (walletTransactionGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletTransactionGetRequest' is not null or undefined
            common_1.assertParamExists('walletTransactionGet', 'walletTransactionGetRequest', walletTransactionGetRequest);
            const localVarPath = `/wallet/transaction/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletTransactionGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.
         * @summary List e-wallet transactions
         * @param {WalletTransactionListRequest} walletTransactionListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionList: (walletTransactionListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'walletTransactionListRequest' is not null or undefined
            common_1.assertParamExists('walletTransactionList', 'walletTransactionListRequest', walletTransactionListRequest);
            const localVarPath = `/wallet/transaction/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(walletTransactionListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a new entity watchlist screening to check your customer against watchlists defined in the associated entity watchlist program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for an entity
         * @param {WatchlistScreeningEntityCreateRequest} watchlistScreeningEntityCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityCreate: (watchlistScreeningEntityCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityCreateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityCreate', 'watchlistScreeningEntityCreateRequest', watchlistScreeningEntityCreateRequest);
            const localVarPath = `/watchlist_screening/entity/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Retrieve an entity watchlist screening.
         * @summary Get an entity screening
         * @param {WatchlistScreeningEntityGetRequest} watchlistScreeningEntityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityGet: (watchlistScreeningEntityGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityGetRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityGet', 'watchlistScreeningEntityGetRequest', watchlistScreeningEntityGetRequest);
            const localVarPath = `/watchlist_screening/entity/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all changes to the entity watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for entity watchlist screenings
         * @param {WatchlistScreeningEntityHistoryListRequest} watchlistScreeningEntityHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHistoryList: (watchlistScreeningEntityHistoryListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityHistoryListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityHistoryList', 'watchlistScreeningEntityHistoryListRequest', watchlistScreeningEntityHistoryListRequest);
            const localVarPath = `/watchlist_screening/entity/history/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityHistoryListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all hits for the entity watchlist screening.
         * @summary List hits for entity watchlist screenings
         * @param {WatchlistScreeningEntityHitListRequest} watchlistScreeningEntityHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHitList: (watchlistScreeningEntityHitListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityHitListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityHitList', 'watchlistScreeningEntityHitListRequest', watchlistScreeningEntityHitListRequest);
            const localVarPath = `/watchlist_screening/entity/hit/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityHitListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all entity screenings.
         * @summary List entity watchlist screenings
         * @param {WatchlistScreeningEntityListRequest} watchlistScreeningEntityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityList: (watchlistScreeningEntityListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityList', 'watchlistScreeningEntityListRequest', watchlistScreeningEntityListRequest);
            const localVarPath = `/watchlist_screening/entity/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Get an entity watchlist screening program
         * @summary Get entity watchlist screening program
         * @param {WatchlistScreeningEntityProgramGetRequest} watchlistScreeningEntityProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramGet: (watchlistScreeningEntityProgramGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityProgramGetRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityProgramGet', 'watchlistScreeningEntityProgramGetRequest', watchlistScreeningEntityProgramGetRequest);
            const localVarPath = `/watchlist_screening/entity/program/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityProgramGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all entity watchlist screening programs
         * @summary List entity watchlist screening programs
         * @param {WatchlistScreeningEntityProgramListRequest} watchlistScreeningEntityProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramList: (watchlistScreeningEntityProgramListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityProgramListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityProgramList', 'watchlistScreeningEntityProgramListRequest', watchlistScreeningEntityProgramListRequest);
            const localVarPath = `/watchlist_screening/entity/program/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityProgramListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a review for an entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an entity watchlist screening
         * @param {WatchlistScreeningEntityReviewCreateRequest} watchlistScreeningEntityReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewCreate: (watchlistScreeningEntityReviewCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityReviewCreateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityReviewCreate', 'watchlistScreeningEntityReviewCreateRequest', watchlistScreeningEntityReviewCreateRequest);
            const localVarPath = `/watchlist_screening/entity/review/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityReviewCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all reviews for a particular entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary List reviews for entity watchlist screenings
         * @param {WatchlistScreeningEntityReviewListRequest} watchlistScreeningEntityReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewList: (watchlistScreeningEntityReviewListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityReviewListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityReviewList', 'watchlistScreeningEntityReviewListRequest', watchlistScreeningEntityReviewListRequest);
            const localVarPath = `/watchlist_screening/entity/review/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityReviewListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Update an entity watchlist screening.
         * @summary Update an entity screening
         * @param {WatchlistScreeningEntityUpdateRequest} watchlistScreeningEntityUpdateRequest The entity screening was successfully updated.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityUpdate: (watchlistScreeningEntityUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningEntityUpdateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningEntityUpdate', 'watchlistScreeningEntityUpdateRequest', watchlistScreeningEntityUpdateRequest);
            const localVarPath = `/watchlist_screening/entity/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningEntityUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a new Watchlist Screening to check your customer against watchlists defined in the associated Watchlist Program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for a person
         * @param {WatchlistScreeningIndividualCreateRequest} watchlistScreeningIndividualCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualCreate: (watchlistScreeningIndividualCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualCreateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualCreate', 'watchlistScreeningIndividualCreateRequest', watchlistScreeningIndividualCreateRequest);
            const localVarPath = `/watchlist_screening/individual/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Retrieve a previously created individual watchlist screening
         * @summary Retrieve an individual watchlist screening
         * @param {WatchlistScreeningIndividualGetRequest} watchlistScreeningIndividualGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualGet: (watchlistScreeningIndividualGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualGetRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualGet', 'watchlistScreeningIndividualGetRequest', watchlistScreeningIndividualGetRequest);
            const localVarPath = `/watchlist_screening/individual/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all changes to the individual watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for individual watchlist screenings
         * @param {WatchlistScreeningIndividualHistoryListRequest} watchlistScreeningIndividualHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHistoryList: (watchlistScreeningIndividualHistoryListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualHistoryListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualHistoryList', 'watchlistScreeningIndividualHistoryListRequest', watchlistScreeningIndividualHistoryListRequest);
            const localVarPath = `/watchlist_screening/individual/history/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualHistoryListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all hits found by Plaid for a particular individual watchlist screening.
         * @summary List hits for individual watchlist screening
         * @param {WatchlistScreeningIndividualHitListRequest} watchlistScreeningIndividualHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHitList: (watchlistScreeningIndividualHitListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualHitListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualHitList', 'watchlistScreeningIndividualHitListRequest', watchlistScreeningIndividualHitListRequest);
            const localVarPath = `/watchlist_screening/individual/hit/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualHitListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List previously created watchlist screenings for individuals
         * @summary List Individual Watchlist Screenings
         * @param {WatchlistScreeningIndividualListRequest} watchlistScreeningIndividualListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualList: (watchlistScreeningIndividualListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualList', 'watchlistScreeningIndividualListRequest', watchlistScreeningIndividualListRequest);
            const localVarPath = `/watchlist_screening/individual/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Get an individual watchlist screening program
         * @summary Get individual watchlist screening program
         * @param {WatchlistScreeningIndividualProgramGetRequest} watchlistScreeningIndividualProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramGet: (watchlistScreeningIndividualProgramGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualProgramGetRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualProgramGet', 'watchlistScreeningIndividualProgramGetRequest', watchlistScreeningIndividualProgramGetRequest);
            const localVarPath = `/watchlist_screening/individual/program/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualProgramGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all individual watchlist screening programs
         * @summary List individual watchlist screening programs
         * @param {WatchlistScreeningIndividualProgramListRequest} watchlistScreeningIndividualProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramList: (watchlistScreeningIndividualProgramListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualProgramListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualProgramList', 'watchlistScreeningIndividualProgramListRequest', watchlistScreeningIndividualProgramListRequest);
            const localVarPath = `/watchlist_screening/individual/program/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualProgramListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Create a review for the individual watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an individual watchlist screening
         * @param {WatchlistScreeningIndividualReviewCreateRequest} watchlistScreeningIndividualReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewCreate: (watchlistScreeningIndividualReviewCreateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualReviewCreateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualReviewCreate', 'watchlistScreeningIndividualReviewCreateRequest', watchlistScreeningIndividualReviewCreateRequest);
            const localVarPath = `/watchlist_screening/individual/review/create`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualReviewCreateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * List all reviews for the individual watchlist screening.
         * @summary List reviews for individual watchlist screenings
         * @param {WatchlistScreeningIndividualReviewListRequest} watchlistScreeningIndividualReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewList: (watchlistScreeningIndividualReviewListRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualReviewListRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualReviewList', 'watchlistScreeningIndividualReviewListRequest', watchlistScreeningIndividualReviewListRequest);
            const localVarPath = `/watchlist_screening/individual/review/list`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualReviewListRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Update a specific individual watchlist screening. This endpoint can be used to add additional customer information, correct outdated information, add a reference id, assign the individual to a reviewer, and update which program it is associated with. Please note that you may not update `search_terms` and `status` at the same time since editing `search_terms` may trigger an automatic `status` change.
         * @summary Update individual watchlist screening
         * @param {WatchlistScreeningIndividualUpdateRequest} watchlistScreeningIndividualUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualUpdate: (watchlistScreeningIndividualUpdateRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'watchlistScreeningIndividualUpdateRequest' is not null or undefined
            common_1.assertParamExists('watchlistScreeningIndividualUpdate', 'watchlistScreeningIndividualUpdateRequest', watchlistScreeningIndividualUpdateRequest);
            const localVarPath = `/watchlist_screening/individual/update`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(watchlistScreeningIndividualUpdateRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
        /**
         * Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.  The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
         * @summary Get webhook verification key
         * @param {WebhookVerificationKeyGetRequest} webhookVerificationKeyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        webhookVerificationKeyGet: (webhookVerificationKeyGetRequest, options = {}) => __awaiter(this, void 0, void 0, function* () {
            // verify required parameter 'webhookVerificationKeyGetRequest' is not null or undefined
            common_1.assertParamExists('webhookVerificationKeyGet', 'webhookVerificationKeyGetRequest', webhookVerificationKeyGetRequest);
            const localVarPath = `/webhook_verification_key/get`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
            const localVarHeaderParameter = {};
            const localVarQueryParameter = {};
            // authentication clientId required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-CLIENT-ID", configuration);
            // authentication plaidVersion required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "Plaid-Version", configuration);
            // authentication secret required
            yield common_1.setApiKeyToObject(localVarHeaderParameter, "PLAID-SECRET", configuration);
            localVarHeaderParameter['Content-Type'] = 'application/json';
            common_1.setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
            localVarRequestOptions.data = common_1.serializeDataIfNeeded(webhookVerificationKeyGetRequest, localVarRequestOptions, configuration);
            return {
                url: common_1.toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        }),
    };
};
exports.PlaidApiAxiosParamCreator = PlaidApiAxiosParamCreator;
/**
 * PlaidApi - functional programming interface
 * @export
 */
const PlaidApiFp = function (configuration) {
    const localVarAxiosParamCreator = exports.PlaidApiAxiosParamCreator(configuration);
    return {
        /**
         * The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints, such as `/accounts/get`, return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.
         * @summary Retrieve real-time balance data
         * @param {AccountsBalanceGetRequest} accountsBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsBalanceGet(accountsBalanceGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.accountsBalanceGet(accountsBalanceGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link\'s [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you.  `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older.  For realtime balance information, use the paid endpoint `/accounts/balance/get` instead.
         * @summary Retrieve accounts
         * @param {AccountsGetRequest} accountsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsGet(accountsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.accountsGet(accountsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
         * @summary Retrieve information about a Plaid application
         * @param {ApplicationGetRequest} applicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applicationGet(applicationGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.applicationGet(applicationGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.  To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
         * @summary Create Asset Report Audit Copy
         * @param {AssetReportAuditCopyCreateRequest} assetReportAuditCopyCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint.  The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor.  This token can then be used to call `/asset_report/audit_copy/create`.
         * @summary Retrieve an Asset Report Audit Copy
         * @param {AssetReportAuditCopyGetRequest} assetReportAuditCopyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove Asset Report Audit Copy
         * @param {AssetReportAuditCopyRemoveRequest} assetReportAuditCopyRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.  The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. The exact amount of time to create the report will vary depending on how many days of history are requested and will typically range from a few seconds to about one minute. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/products/assets/#webhooks).  The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
         * @summary Create an Asset Report
         * @param {AssetReportCreateRequest} assetReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportCreate(assetReportCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportCreate(assetReportCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.  To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report\'s data.  Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.  Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed.
         * @summary Filter Asset Report
         * @param {AssetReportFilterRequest} assetReportFilterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportFilter(assetReportFilterRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportFilter(assetReportFilterRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`.  For latency-sensitive applications, you can optionally call `/asset_report/create` with `options.add_ons` set to `[\"fast_assets\"]`. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report.
         * @summary Retrieve an Asset Report
         * @param {AssetReportGetRequest} assetReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportGet(assetReportGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportGet(assetReportGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve a PDF Asset Report
         * @param {AssetReportPDFGetRequest} assetReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportPdfGet(assetReportPDFGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportPdfGet(assetReportPDFGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * An Asset Report is an immutable snapshot of a user\'s assets. In order to \"refresh\" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.  The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string (\"\") for any previously-populated fields you would like set as empty.
         * @summary Refresh an Asset Report
         * @param {AssetReportRefreshRequest} assetReportRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRefresh(assetReportRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportRefresh(assetReportRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.  The `/asset_report/remove` endpoint allows you to remove access to an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
         * @summary Delete an Asset Report
         * @param {AssetReportRemoveRequest} assetReportRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRemove(assetReportRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.assetReportRemove(assetReportRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item\'s checking, savings, and cash management accounts, along with high-level account data and balances when available.  Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22).
         * @summary Retrieve auth data
         * @param {AuthGetRequest} authGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authGet(authGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.authGet(authGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.  The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.  Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
         * @summary Get balance of your Bank Transfer account
         * @param {BankTransferBalanceGetRequest} bankTransferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferBalanceGet(bankTransferBalanceGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferBalanceGet(bankTransferBalanceGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
         * @summary Cancel a bank transfer
         * @param {BankTransferCancelRequest} bankTransferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCancel(bankTransferCancelRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferCancel(bankTransferCancelRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
         * @summary Create a bank transfer
         * @param {BankTransferCreateRequest} bankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCreate(bankTransferCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferCreate(bankTransferCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/bank_transfer/event/list` endpoint to get a list of Plaid-initiated ACH or bank transfer events based on specified filter criteria. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary List bank transfer events
         * @param {BankTransferEventListRequest} bankTransferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventList(bankTransferEventListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferEventList(bankTransferEventListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/bank_transfer/event/sync` allows you to request up to the next 25 Plaid-initiated bank transfer events that happened after a specific `event_id`. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://www.plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary Sync bank transfer events
         * @param {BankTransferEventSyncRequest} bankTransferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventSync(bankTransferEventSyncRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferEventSync(bankTransferEventSyncRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
         * @summary Retrieve a bank transfer
         * @param {BankTransferGetRequest} bankTransferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferGet(bankTransferGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferGet(bankTransferGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
         * @summary List bank transfers
         * @param {BankTransferListRequest} bankTransferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferList(bankTransferListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferList(bankTransferListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items.  Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Bank Transfers
         * @param {BankTransferMigrateAccountRequest} bankTransferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {BankTransferSweepGetRequest} bankTransferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepGet(bankTransferSweepGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferSweepGet(bankTransferSweepGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.
         * @summary List sweeps
         * @param {BankTransferSweepListRequest} bankTransferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepList(bankTransferSweepListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.bankTransferSweepList(bankTransferSweepListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account.
         * @summary Evaluate risk of a bank account
         * @param {BeaconAccountRiskEvaluateRequest} beaconAccountRiskEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a Beacon Duplicate for a given Beacon Duplicate id.  A Beacon Duplicate represents a pair of similar Beacon Users within your organization.  Two Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields.  The `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`.
         * @summary Get a Beacon Duplicate
         * @param {BeaconDuplicateGetRequest} beaconDuplicateGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconDuplicateGet(beaconDuplicateGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconDuplicateGet(beaconDuplicateGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a fraud report for a given Beacon User.
         * @summary Create a Beacon Report
         * @param {BeaconReportCreateRequest} beaconReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportCreate(beaconReportCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconReportCreate(beaconReportCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a Beacon report for a given Beacon report id.
         * @summary Get a Beacon Report
         * @param {BeaconReportGetRequest} beaconReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportGet(beaconReportGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconReportGet(beaconReportGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/beacon/report/list` endpoint to view all Beacon Reports you created for a specific Beacon User. The reports returned by this endpoint are exclusively reports you created for a specific user. A Beacon User can only have one active report at a time, but a new report can be created if a previous report has been deleted. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Reports for a Beacon User
         * @param {BeaconReportListRequest} beaconReportListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportList(beaconReportListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconReportList(beaconReportListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a Beacon Report Syndication for a given Beacon Report Syndication id.
         * @summary Get a Beacon Report Syndication
         * @param {BeaconReportSyndicationGetRequest} beaconReportSyndicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/beacon/report_syndication/list` endpoint to view all Beacon Reports that have been syndicated to a specific Beacon User. This endpoint returns Beacon Report Syndications which are references to Beacon Reports created either by you, or another Beacon customer, that matched the specified Beacon User. A Beacon User can have multiple active Beacon Report Syndications at once. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Report Syndications for a Beacon User
         * @param {BeaconReportSyndicationListRequest} beaconReportSyndicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationList(beaconReportSyndicationListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconReportSyndicationList(beaconReportSyndicationListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Get Account Insights for all Accounts linked to this Beacon User. The insights for each account are computed based on the information that was last retrieved from the financial institution.
         * @summary Get Account Insights for a Beacon User
         * @param {BeaconUserAccountInsightsGetRequest} beaconUserAccountInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create and scan a Beacon User against your Beacon Program, according to your program\'s settings.  When you submit a new user to `/beacon/user/create`, several checks are performed immediately:    - The user\'s PII (provided within the `user` object) is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.
         * @summary Create a Beacon User
         * @param {BeaconUserCreateRequest} beaconUserCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserCreate(beaconUserCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserCreate(beaconUserCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Fetch a Beacon User.  The Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks.
         * @summary Get a Beacon User
         * @param {BeaconUserGetRequest} beaconUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserGet(beaconUserGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserGet(beaconUserGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all changes to the Beacon User in reverse-chronological order.
         * @summary List a Beacon User\'s history
         * @param {BeaconUserHistoryListRequest} beaconUserHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserHistoryList(beaconUserHistoryListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserHistoryList(beaconUserHistoryListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Update the status of a Beacon User.  When updating a Beacon User\'s status via this endpoint, Plaid validates that the status change is consistent with the related state for this Beacon User. Specifically, we will check:  1. Whether there are any associated Beacon Reports connected to the Beacon User, and 2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User.  When updating a Beacon User\'s status to \"rejected\", we enforce that either a Beacon Report has been created for the Beacon User or a Beacon Report Syndication has been confirmed. When updating a Beacon User\'s status to \"cleared\", we enforce that there are no active Beacon Reports or confirmed Beacon Report Syndications associated with the user. If you previously created a Beacon Report for this user, you must delete it before updating the Beacon User\'s status to \"cleared\". There are no restrictions on updating a Beacon User\'s status to \"pending_review\".  If these conditions are not met, the request will be rejected with an error explaining the issue.
         * @summary Review a Beacon User
         * @param {BeaconUserReviewRequest} beaconUserReviewRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserReview(beaconUserReviewRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserReview(beaconUserReviewRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User.  Similar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`:    - The user\'s updated PII is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s updated PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.  Plaid maintains a version history for each Beacon User, so the Beacon User\'s identity data before and after the update is retained as separate versions.
         * @summary Update the identity data of a Beacon User
         * @param {BeaconUserUpdateRequest} beaconUserUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserUpdate(beaconUserUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.beaconUserUpdate(beaconUserUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Send a request to the `/categories/get` endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.  All implementations are recommended to use the newer `personal_finance_category` taxonomy instead of the older `category` taxonomy supported by this endpoint. The [`personal_finance_category taxonomy` CSV file](https://plaid.com/documents/transactions-personal-finance-category-taxonomy.csv) is available for download and is not accessible via API.
         * @summary Get categories
         * @param {object} body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        categoriesGet(body, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.categoriesGet(body, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List a historical log of Item consent events. Consent logs are only available for events occurring on or after November 7, 2024. Up to three years of consent logs will be available via the endpoint.
         * @summary List a historical log of item consent events
         * @param {ConsentEventsGetRequest} consentEventsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consentEventsGet(consentEventsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.consentEventsGet(consentEventsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format.  Response is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary Retrieve a PDF Reports
         * @param {ConsumerReportPDFGetRequest} consumerReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consumerReportPdfGet(consumerReportPDFGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.consumerReportPdfGet(consumerReportPDFGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/bank_income/create` creates a CRA report for income verification
         * @summary Create a CRA report for income verification
         * @param {CraBankIncomeCreateRequest} craBankIncomeCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeCreate(craBankIncomeCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craBankIncomeCreate(craBankIncomeCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/bank_income/get` returns the bank income report(s) for a specified user.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CraBankIncomeGetRequest} craBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeGet(craBankIncomeGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craBankIncomeGet(craBankIncomeGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Base Report for your user, allowing you to receive comprehensive bank account and cash flow data. You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn\'t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve a Base Report
         * @param {CraCheckReportBaseReportGetRequest} craCheckReportBaseReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from your user\'s banking data
         * @param {CraCheckReportCashflowInsightsGetRequest} craCheckReportCashflowInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/check_report/create` creates a Consumer Report powered by Plaid Check. You can call this endpoint to create a new report if `consumer_report_permissible_purpose` was omitted during Link token creation. If you did provide a `consumer_report_permissible_purpose` during Link token creation, then Plaid Check will automatically begin creating a Consumer Report once the user completes the Link process, and it is not necessary to call `/cra/check_report/create` before retrieving the report.   `/cra/check_report/create` can also be used to refresh data in an existing report. A Consumer Report will last for 24 hours before expiring; you should call any `/get` endpoints on the report before it expires. If a report expires, you can call `/cra/check_report/create` again to re-generate it. Note that refreshing or regenerating a report is a billable event.
         * @summary Create a Consumer Report
         * @param {CraCheckReportCreateRequest} craCheckReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCreate(craCheckReportCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportCreate(craCheckReportCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Income Insights report for your user.  You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve cash flow information from your user\'s banks
         * @param {CraCheckReportIncomeInsightsGetRequest} craCheckReportIncomeInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_network_attributes` product or have generated a report using `/cra/check_report/create`, we will generate the attributes when you call this endpoint.
         * @summary Retrieve network attributes for the user
         * @param {CraCheckReportNetworkInsightsGetRequest} craCheckReportNetworkInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from partners
         * @param {CraCheckReportPartnerInsightsGetRequest} craCheckReportPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/check_report/pdf/get` retrieves the most recent Consumer Report in PDF format. By default, the most recent Base Report (if it exists) for the user will be returned. To request that the most recent Income Insights report be included in the PDF as well, use the `add-ons` field.
         * @summary Retrieve Consumer Reports as a PDF
         * @param {CraCheckReportPDFGetRequest} craCheckReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPdfGet(craCheckReportPDFGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craCheckReportPdfGet(craCheckReportPDFGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/loans/applications/register` registers loan applications and decisions.
         * @summary Register loan applications and decisions.
         * @param {CraLoansApplicationsRegisterRequest} craLoansApplicationsRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/loans/register` registers a list of loans to their applicants.
         * @summary Register a list of loans to their applicants.
         * @param {CRALoansRegisterRequest} cRALoansRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansRegister(cRALoansRegisterRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craLoansRegister(cRALoansRegisterRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.
         * @summary Unregister a list of loans.
         * @param {CraLoansUnregisterRequest} craLoansUnregisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUnregister(craLoansUnregisterRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craLoansUnregister(craLoansUnregisterRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/loans/update` updates loan information such as the status and payment history.
         * @summary Updates loan data.
         * @param {CraLoansUpdateRequest} craLoansUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUpdate(craLoansUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craLoansUpdate(craLoansUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve a Monitoring Insights report by passing in the `user_token` referred to in the webhook you received.
         * @summary Retrieve a Monitoring Insights Report
         * @param {CraMonitoringInsightsGetRequest} craMonitoringInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to subscribe to insights for a user\'s linked CRA items, which are updated every day (best-effort).
         * @summary Subscribe to Monitoring Insights
         * @param {CraMonitoringInsightsSubscribeRequest} craMonitoringInsightsSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights.
         * @summary Unsubscribe from Monitoring Insights
         * @param {CraMonitoringInsightsUnsubscribeRequest} craMonitoringInsightsUnsubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/cra/partner_insights/get` returns cash flow insights for a specified user.
         * @summary Retrieve cash flow insights from the bank accounts used for income verification
         * @param {CraPartnerInsightsGetRequest} craPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craPartnerInsightsGet(craPartnerInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.craPartnerInsightsGet(craPartnerInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.  The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
         * @summary Create payment token
         * @param {PaymentInitiationPaymentTokenCreateRequest} paymentInitiationPaymentTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac\'s JSON format.
         * @summary Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAssetReportFreddieMacGet(requestBody, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditAssetReportFreddieMacGet(requestBody, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Plaid can create an Audit Copy token of an Asset Report and/or Income Report to share with participating Government Sponsored Entity (GSE). If you participate in the Day 1 Certainty™ program, Plaid can supply an Audit Copy token directly to Fannie Mae on your behalf. An Audit Copy token contains the same underlying data as the Asset Report and/or Income Report (result of /credit/payroll_income/get).  Use the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access.
         * @summary Create Asset or Income Report Audit Copy Token
         * @param {CreditAuditCopyTokenCreateRequest} creditAuditCopyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/credit/audit_copy_token/update` endpoint updates an existing  Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field.
         * @summary Update an Audit Copy Token
         * @param {CreditAuditCopyTokenUpdateRequest} creditAuditCopyTokenUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.
         * @summary Retrieve information from the bank accounts used for employment verification
         * @param {CreditBankEmploymentGetRequest} creditBankEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankEmploymentGet(creditBankEmploymentGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankEmploymentGet(creditBankEmploymentGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_income/get` returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link). To return older reports, use the `options.count` field.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CreditBankIncomeGetRequest} creditBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeGet(creditBankIncomeGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankIncomeGet(creditBankIncomeGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_income/pdf/get` returns the most recent bank income report for a specified user in PDF format.  A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link).
         * @summary Retrieve information from the bank accounts used for income verification in PDF format
         * @param {CreditBankIncomePDFGetRequest} creditBankIncomePDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_income/refresh` refreshes the most recent bank income report data for a specific user. If the most recent bank income report is no longer valid (i.e. deleted), the endpoint will refresh the most recent valid report instead.
         * @summary Refresh a user\'s bank income information
         * @param {CreditBankIncomeRefreshRequest} creditBankIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_income/webhook/update` allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed.  If a user is subscribed, on significant changes to the user\'s income profile, you will receive a `BANK_INCOME_REFRESH_UPDATE` webhook, prompting you to refresh bank income data for the user.
         * @summary Subscribe and unsubscribe to proactive notifications for a user\'s income profile
         * @param {CreditBankIncomeWebhookUpdateRequest} creditBankIncomeWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.
         * @summary Retrieve data for a user\'s uploaded bank statements
         * @param {CreditBankStatementsUploadsGetRequest} creditBankStatementsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/employment/get` returns a list of items with employment information from a user\'s payroll provider that was verified by an end user.
         * @summary Retrieve a summary of an individual\'s employment information
         * @param {CreditEmploymentGetRequest} creditEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditEmploymentGet(creditEmploymentGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditEmploymentGet(creditEmploymentGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Verification of Assets and Verification of Employment reports.
         * @summary Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint.
         * @param {CreditFreddieMacReportsGetRequest} creditFreddieMacReportsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document.
         * @summary Retrieve a user\'s payroll information
         * @param {CreditPayrollIncomeGetRequest} creditPayrollIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.
         * @summary Update the parsing configuration for a document income verification
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeParsingConfigUpdate(requestBody, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditPayrollIncomeParsingConfigUpdate(requestBody, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/payroll_income/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification. If the user is eligible for digital verification, that information will be associated with the user token, and in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing `employer` data will increase the chance of receiving a useful result.  When testing in Sandbox, you can control the results by providing special test values in the `employer` and `access_tokens` fields. `employer_good` and `employer_bad` will result in `HIGH` and `LOW` confidence values, respectively. `employer_multi` will result in a `HIGH` confidence with multiple payroll options. Likewise, `access_good` and `access_bad` will result in `HIGH` and `LOW` confidence values, respectively. Any other value for `employer` and `access_tokens` in Sandbox will result in `UNKNOWN` confidence.
         * @summary Check income verification eligibility and optimize conversion
         * @param {CreditPayrollIncomePrecheckRequest} creditPayrollIncomePrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/payroll_income/refresh` refreshes a given digital payroll income verification.
         * @summary Refresh a digital payroll income verification
         * @param {CreditPayrollIncomeRefreshRequest} creditPayrollIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/payroll_income/risk_signals/get` can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score.  To trigger risk signal generation for an Item, call `/link/token/create` with `parsing_config` set to include `risk_signals`, or call `/credit/payroll_income/parsing_config/update`. Once risk signal generation has been triggered, `/credit/payroll_income/risk_signals/get` can be called at any time after the `INCOME_VERIFICATION_RISK_SIGNALS` webhook has been fired.  `/credit/payroll_income/risk_signals/get` is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager.
         * @summary Retrieve fraud insights for a user\'s manually uploaded document(s).
         * @param {CreditPayrollIncomeRiskSignalsGetRequest} creditPayrollIncomeRiskSignalsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Plaid can share an Asset Report directly with a participating third party on your behalf. The shared Asset Report is the exact same Asset Report originally created in `/asset_report/create`.  To grant a third party access to an Asset Report, use the `/credit/relay/create` endpoint to create a `relay_token` and then pass that token to your third party. Each third party has its own `secondary_client_id`; for example, `ce5bd328dcd34123456`. You\'ll need to create a separate `relay_token` for each third party that needs access to the report on your behalf.
         * @summary Create a relay token to share an Asset Report with a partner client
         * @param {CreditRelayCreateRequest} creditRelayCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayCreate(creditRelayCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditRelayCreate(creditRelayCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/relay/get` allows third parties to receive a report that was shared with them, using a `relay_token` that was created by the report owner.
         * @summary Retrieve the reports associated with a relay token that was shared with you
         * @param {CreditRelayGetRequest} creditRelayGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayGet(creditRelayGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditRelayGet(creditRelayGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/credit/relay/pdf/get` allows third parties to receive a pdf report that was shared with them, using a `relay_token` that was created by the report owner.  The `/credit/relay/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/credit/relay/pdf/get`, you must first create the Asset Report using `/credit/relay/create` and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve the pdf reports associated with a relay token that was shared with you (beta)
         * @param {CreditRelayPDFGetRequest} creditRelayPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayPdfGet(creditRelayPDFGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditRelayPdfGet(creditRelayPDFGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/credit/relay/refresh` endpoint allows third parties to refresh a report that was relayed to them, using a `relay_token` that was created by the report owner. A new report will be created with the original report parameters, but with the most recent data available based on the `days_requested` value of the original report.
         * @summary Refresh a report of a relay token
         * @param {CreditRelayRefreshRequest} creditRelayRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRefresh(creditRelayRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditRelayRefresh(creditRelayRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/credit/relay/remove` endpoint allows you to invalidate a `relay_token`. The third party holding the token will no longer be able to access or refresh the reports which the `relay_token` gives access to. The original report, associated Items, and other relay tokens that provide access to the same report are not affected and will remain accessible after removing the given `relay_token`.
         * @summary Remove relay token
         * @param {CreditRelayRemoveRequest} creditRelayRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRemove(creditRelayRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditRelayRemove(creditRelayRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/credit/audit_copy_token/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Report data and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove an Audit Copy token
         * @param {CreditAuditCopyTokenRemoveRequest} creditAuditCopyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow.  These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step).
         * @summary Retrieve Link sessions for your user
         * @param {CreditSessionsGetRequest} creditSessionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditSessionsGet(creditSessionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.creditSessionsGet(creditSessionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/dashboard_user/get` endpoint provides details (such as email address) about a specific Dashboard user based on the `dashboard_user_id` field, which is returned in the `audit_trail` object of certain Monitor and Beacon endpoints. This can be used to identify the specific reviewer who performed a Dashboard action.
         * @summary Retrieve a dashboard user
         * @param {DashboardUserGetRequest} dashboardUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserGet(dashboardUserGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.dashboardUserGet(dashboardUserGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/dashboard_user/list` endpoint provides details (such as email address) all Dashboard users associated with your account. This can use used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products.
         * @summary List dashboard users
         * @param {DashboardUserListRequest} dashboardUserListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserList(dashboardUserListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.dashboardUserList(dashboardUserListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch without using Plaid Exchange
         * @param {DepositSwitchAltCreateRequest} depositSwitchAltCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchAltCreate(depositSwitchAltCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.depositSwitchAltCreate(depositSwitchAltCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch
         * @param {DepositSwitchCreateRequest} depositSwitchCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchCreate(depositSwitchCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.depositSwitchCreate(depositSwitchCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user\'s direct deposit allocation preferences.
         * @summary (Deprecated) Retrieve a deposit switch
         * @param {DepositSwitchGetRequest} depositSwitchGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchGet(depositSwitchGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.depositSwitchGet(depositSwitchGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
         * @summary (Deprecated) Create a deposit switch token
         * @param {DepositSwitchTokenCreateRequest} depositSwitchTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user\'s employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.  The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
         * @summary Search employer database
         * @param {EmployersSearchRequest} employersSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employersSearch(employersSearchRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.employersSearch(employersSearchRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user.  This endpoint has been deprecated; new integrations should use `/credit/employment/get` instead.
         * @summary (Deprecated) Retrieve a summary of an individual\'s employment information
         * @param {EmploymentVerificationGetRequest} employmentVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employmentVerificationGet(employmentVerificationGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.employmentVerificationGet(employmentVerificationGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * A generic webhook receiver endpoint for FDX Event Notifications
         * @summary Webhook receiver for fdx notifications
         * @param {FDXNotification} fDXNotification
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        fdxNotifications(fDXNotification, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.fdxNotifications(fDXNotification, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Get a specific recipient
         * @summary Get Recipient
         * @param {string} recipientId Recipient Identifier. Uniquely identifies the recipient
         * @param {string} [oAUTHSTATEID] The value that is passed into the OAuth URI \&#39;state\&#39; query parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipient(recipientId, oAUTHSTATEID, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecipient(recipientId, oAUTHSTATEID, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a list of Recipients
         * @summary Get Recipients
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipients(options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecipients(options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/).
         * @summary Returns uploaded document identity
         * @param {IdentityDocumentsUploadsGetRequest} identityDocumentsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.  Note: In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29).
         * @summary Retrieve identity data
         * @param {IdentityGetRequest} identityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityGet(identityGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityGet(identityGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {IdentityMatchRequest} identityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityMatch(identityMatchRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityMatch(identityMatchRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/identity/refresh` is an optional endpoint for users of the Identity product. It initiates an on-demand extraction to fetch the most up to date Identity information from the Financial Institution. This on-demand extraction takes place in addition to the periodic extractions that automatically occur for any Identity-enabled Item. If changes to Identity are discovered after calling `/identity/refresh`, Plaid will fire a webhook [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/identity/#default_update).  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/identity/refresh` is offered as an add-on to Identity and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh identity data
         * @param {IdentityRefreshRequest} identityRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityRefresh(identityRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityRefresh(identityRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Try to autofill an Identity Verification based of the provided phone number, date of birth and country of residence.
         * @summary Create autofill for an Identity Verification
         * @param {IdentityVerificationAutofillCreateRequest} identityVerificationAutofillCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a new Identity Verification for the user specified by the `client_user_id` field. The requirements and behavior of the verification are determined by the `template_id` provided. If you don\'t know whether the associated user already has an active Identity Verification, you can specify `\"is_idempotent\": true` in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated `client_user_id` and `template_id`. If an Identity Verification is found, it will be returned unmodified with an `200 OK` HTTP status code.  You can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow.
         * @summary Create a new Identity Verification
         * @param {IdentityVerificationCreateRequest} identityVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationCreate(identityVerificationCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityVerificationCreate(identityVerificationCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Retrieve a previously created Identity Verification.
         * @summary Retrieve Identity Verification
         * @param {IdentityVerificationGetRequest} identityVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationGet(identityVerificationGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityVerificationGet(identityVerificationGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Filter and list Identity Verifications created by your account
         * @summary List Identity Verifications
         * @param {IdentityVerificationListRequest} identityVerificationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationList(identityVerificationListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityVerificationList(identityVerificationListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Allow a customer to retry their Identity Verification
         * @summary Retry an Identity Verification
         * @param {IdentityVerificationRetryRequest} identityVerificationRetryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationRetry(identityVerificationRetryRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.identityVerificationRetry(identityVerificationRetryRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing.
         * @summary (Deprecated) Create an income verification instance
         * @param {IncomeVerificationCreateRequest} incomeVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationCreate(incomeVerificationCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.incomeVerificationCreate(incomeVerificationCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/income/verification/documents/download` provides the ability to download the source documents associated with the verification.  If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint.  The response to `/income/verification/documents/download` is a ZIP file in binary data. If a `document_id` is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification.  The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary (Deprecated) Download the original documents used for income verification
         * @param {IncomeVerificationDocumentsDownloadRequest} incomeVerificationDocumentsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the paystubs used for income verification
         * @param {IncomeVerificationPaystubsGetRequest} incomeVerificationPaystubsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/income/verification/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification and returns a `precheck_id` that can be provided to `/link/token/create`. If the user is eligible for digital verification, providing the `precheck_id` in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the `precheck_id` can still be provided to `/link/token/create` and the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead.
         * @summary (Deprecated) Check digital income verification eligibility and optimize conversion
         * @param {IncomeVerificationPrecheckRequest} incomeVerificationPrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/income/verification/taxforms/get` returns the information collected from forms that were used to verify an end user\'\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the tax documents used for income verification
         * @param {IncomeVerificationTaxformsGetRequest} incomeVerificationTaxformsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.  If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
         * @summary Get details of all supported institutions
         * @param {InstitutionsGetRequest} institutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGet(institutionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.institutionsGet(institutionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a JSON response containing details on a specified financial institution currently supported by Plaid.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Get details of an institution
         * @param {InstitutionsGetByIdRequest} institutionsGetByIdRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGetById(institutionsGetByIdRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.institutionsGetById(institutionsGetByIdRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Search institutions
         * @param {InstitutionsSearchRequest} institutionsSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsSearch(institutionsSearchRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.institutionsSearch(institutionsSearchRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings
         * @summary Get data needed to authorize an investments transfer
         * @param {InvestmentsAuthGetRequest} investmentsAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsAuthGet(investmentsAuthGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.investmentsAuthGet(investmentsAuthGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
         * @summary Get Investment holdings
         * @param {InvestmentsHoldingsGetRequest} investmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsHoldingsGet(investmentsHoldingsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.investmentsHoldingsGet(investmentsHoldingsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/investments/refresh` is an optional endpoint for users of the Investments product. It initiates an on-demand extraction to fetch the newest investment holdings and transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Investments-enabled Item. If changes to investments are discovered after calling `/investments/refresh`, Plaid will fire webhooks: [`HOLDINGS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#holdings-default_update) if any new holdings are detected, and [`INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#investments_transactions-default_update) if any new investment transactions are detected. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic investment transactions and holdings data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. Updated holdings and investment transactions can be fetched by calling `/investments/holdings/get` and `/investments/transactions/get`. Note that the `/investments/refresh` endpoint is not supported by all institutions. If called on an Item from an institution that does not support this functionality, it will return a `PRODUCT_NOT_SUPPORTED` error.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/investments/refresh` is offered as an add-on to Investments and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh investment data
         * @param {InvestmentsRefreshRequest} investmentsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsRefresh(investmentsRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.investmentsRefresh(investmentsRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get investment transactions
         * @param {InvestmentsTransactionsGetRequest} investmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsTransactionsGet(investmentsTransactionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.investmentsTransactionsGet(investmentsTransactionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object.
         * @summary Get an Issue
         * @param {IssuesGetRequest} issuesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesGet(issuesGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.issuesGet(issuesGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Search for an issue associated with one of the following identifiers:  `item_id`, `link_session_id` or Link session `request_id`.  This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the provided identifier. At least one of the identifiers must be provided to perform the search.
         * @summary Search for an Issue
         * @param {IssuesSearchRequest} issuesSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSearch(issuesSearchRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.issuesSearch(issuesSearchRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Allows a user to subscribe to updates on a specific `Issue` using a POST method. Subscribers will receive webhook notifications when the issue status changes, particularly when resolved.
         * @summary Subscribe to an Issue
         * @param {IssuesSubscribeRequest} issuesSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSubscribe(issuesSubscribeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.issuesSubscribe(issuesSubscribeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.  You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
         * @summary Invalidate access_token
         * @param {ItemAccessTokenInvalidateRequest} itemAccessTokenInvalidateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List a historical log of user consent events
         * @summary List a historical log of user consent events
         * @param {ItemActivityListRequest} itemActivityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemActivityList(itemActivityListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemActivityList(itemActivityListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List a user’s connected applications
         * @summary List a user’s connected applications
         * @param {ItemApplicationListRequest} itemApplicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationList(itemApplicationListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemApplicationList(itemApplicationListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Enable consumers to update product access on selected accounts for an application.
         * @summary Update the scopes of access for a particular application
         * @param {ItemApplicationScopesUpdateRequest} itemApplicationScopesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Unlink a user’s connected application. On an unlink request, Plaid will immediately revoke the Application’s access to the User’s data.  The User will have to redo the OAuth authentication process in order to restore functionality.  This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default).  This endpoint should be called in real time as the User is unlinking an Application, and should not be batched in order to ensure that the change is reflected as soon as possible.
         * @summary Unlink a user’s connected application
         * @param {ItemApplicationUnlinkRequest} itemApplicationUnlinkRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationUnlink(itemApplicationUnlinkRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemApplicationUnlink(itemApplicationUnlinkRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).  If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.  A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.  The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
         * @summary Create public token
         * @param {ItemPublicTokenCreateRequest} itemPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemCreatePublicToken(itemPublicTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemCreatePublicToken(itemPublicTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns information about the status of an Item.
         * @summary Retrieve an Item
         * @param {ItemGetRequest} itemGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemGet(itemGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemGet(itemGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.  Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated.
         * @summary Import Item
         * @param {ItemImportRequest} itemImportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemImport(itemImportRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemImport(itemImportRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes. An `access_token` does not expire, but can be revoked by calling `/item/remove`.  The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
         * @summary Exchange public token for an access token
         * @param {ItemPublicTokenExchangeRequest} itemPublicTokenExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemPublicTokenExchange(itemPublicTokenExchangeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemPublicTokenExchange(itemPublicTokenExchangeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token`, as well as any processor tokens or bank account tokens associated with the Item, is no longer valid and cannot be used to access any data that was associated with the Item.   Calling `/item/remove` is a recommended best practice when offboarding users or if a user chooses to disconnect an account linked via Plaid. For subscription products, such as Transactions, Liabilities, and Investments, calling `/item/remove` is required to end subscription billing for the Item. For money movement products such as Auth and Transfer, if the Item is at an institution that uses Tokenized Account Numbers (TANs), such as Chase or PNC, calling `/item/remove` will invalidate the TAN, and subsequent ACH transfer attempts using that TAN will be returned.  In Limited Production, calling `/item/remove` does not impact the number of remaining Limited Production Items you have available.  Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove access to them specifically using the `/asset_report/remove` endpoint.  Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution\'s OAuth permission manager.  API versions 2019-05-29 and earlier return a `removed` boolean as part of the response.
         * @summary Remove an Item
         * @param {ItemRemoveRequest} itemRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemRemove(itemRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemRemove(itemRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/items/#webhook_update_acknowledged) webhook to the newly specified webhook URL.
         * @summary Update Webhook URL
         * @param {ItemWebhookUpdateRequest} itemWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemWebhookUpdate(itemWebhookUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.itemWebhookUpdate(itemWebhookUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/link/#linktokencreate).  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.
         * @summary Retrieve Liabilities data
         * @param {LiabilitiesGetRequest} liabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        liabilitiesGet(liabilitiesGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.liabilitiesGet(liabilitiesGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/link_delivery/create` endpoint to create a Hosted Link session.
         * @summary Create Hosted Link session
         * @param {LinkDeliveryCreateRequest} linkDeliveryCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryCreate(linkDeliveryCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.linkDeliveryCreate(linkDeliveryCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session.
         * @summary Get Hosted Link session
         * @param {LinkDeliveryGetRequest} linkDeliveryGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryGet(linkDeliveryGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.linkDeliveryGet(linkDeliveryGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Exchange an OAuth `link_correlation_id` for the corresponding `link_token`. The `link_correlation_id` is only available for \'payment_initiation\' products and is provided to the client via the OAuth `redirect_uri` as a query parameter. The `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the \'link_token\'.
         * @summary Exchange the Link Correlation Id for a Link Token
         * @param {LinkOAuthCorrelationIdExchangeRequest} linkOAuthCorrelationIdExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`. For most Plaid products, the `public_token` is saved and exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).  A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the [update mode](https://plaid.com/docs/link/update-mode) flow for tokens with expired credentials, or the Identity Verification flow.
         * @summary Create Link Token
         * @param {LinkTokenCreateRequest} linkTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenCreate(linkTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.linkTokenCreate(linkTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/link/token/get` endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don\'t provide a public token via frontend callbacks, such as the [Hosted Link flow](https://plaid.com/docs/link/hosted-link/) and the [Multi-Item Link flow](https://plaid.com/docs/link/multi-item-link/). It also can be useful for debugging purposes.
         * @summary Get Link Token
         * @param {LinkTokenGetRequest} linkTokenGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenGet(linkTokenGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.linkTokenGet(linkTokenGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you to retrieve the Network Insights from a list of `access_tokens`.
         * @summary Retrieve network insights for the provided `access_tokens`
         * @param {NetworkInsightsReportGetRequest} networkInsightsReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkInsightsReportGet(networkInsightsReportGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.networkInsightsReportGet(networkInsightsReportGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. This is useful for determining if a user is eligible for a streamlined experience, such as Layer.  Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview).
         * @summary Check a user\'s Plaid Network status
         * @param {NetworkStatusGetRequest} networkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkStatusGet(networkStatusGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.networkStatusGet(networkStatusGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/partner/customer/create` endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid.
         * @summary Creates a new end customer for a Plaid reseller.
         * @param {PartnerCustomerCreateRequest} partnerCustomerCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerCreate(partnerCustomerCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.partnerCustomerCreate(partnerCustomerCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.
         * @summary Enables a Plaid reseller\'s end customer in the Production environment.
         * @param {PartnerCustomerEnableRequest} partnerCustomerEnableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerEnable(partnerCustomerEnableRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.partnerCustomerEnable(partnerCustomerEnableRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer.
         * @summary Returns a Plaid reseller\'s end customer.
         * @param {PartnerCustomerGetRequest} partnerCustomerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerGet(partnerCustomerGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.partnerCustomerGet(partnerCustomerGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/partner/customer/oauth_institutions/get` endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the [reseller documentation](https://plaid.com/docs/account/resellers/#enabling-end-customers).
         * @summary Returns OAuth-institution registration information for a given end customer.
         * @param {PartnerCustomerOAuthInstitutionsGetRequest} partnerCustomerOAuthInstitutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/partner/customer/remove` endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production.
         * @summary Removes a Plaid reseller\'s end customer.
         * @param {PartnerCustomerRemoveRequest} partnerCustomerRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerRemove(partnerCustomerRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.partnerCustomerRemove(partnerCustomerRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated.  Consents can be limited in time and scope, and have constraints that describe limitations for payments.
         * @summary Create payment consent
         * @param {PaymentInitiationConsentCreateRequest} paymentInitiationConsentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/consent/get` endpoint can be used to check the status of a payment consent, as well as to receive basic information such as recipient and constraints.
         * @summary Get payment consent
         * @param {PaymentInitiationConsentGetRequest} paymentInitiationConsentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent.
         * @summary Execute a single payment using consent
         * @param {PaymentInitiationConsentPaymentExecuteRequest} paymentInitiationConsentPaymentExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/consent/revoke` endpoint can be used to revoke the payment consent. Once the consent is revoked, it is not possible to initiate payments using it.
         * @summary Revoke payment consent
         * @param {PaymentInitiationConsentRevokeRequest} paymentInitiationConsentRevokeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient.  Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency).  If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day.  Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.  In Limited Production, payments must be below 5 GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency), and standing orders, variable recurring payments, and Virtual Accounts are not supported.
         * @summary Create a payment
         * @param {PaymentInitiationPaymentCreateRequest} paymentInitiationPaymentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
         * @summary Get payment details
         * @param {PaymentInitiationPaymentGetRequest} paymentInitiationPaymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
         * @summary List payments
         * @param {PaymentInitiationPaymentListRequest} paymentInitiationPaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Reverse a settled payment from a Plaid virtual account.  The original payment must be in a settled state to be refunded. To refund partially, specify the amount as part of the request. If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet.  The refund will go back to the source account that initiated the payment. The original payment must have been initiated to a Plaid virtual account so that this account can be used to initiate the refund.  Providing counterparty information such as date of birth and address increases  the likelihood of refund being successful without human intervention.
         * @summary Reverse an existing payment
         * @param {PaymentInitiationPaymentReverseRequest} paymentInitiationPaymentReverseRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a payment recipient for payment initiation.  The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA) or a non-Eurozone country [supported](https://plaid.com/global) by Plaid. For a standing order (recurring) payment, the recipient must be in the UK.  It is recommended to use `bacs` in the UK and `iban` in EU.  The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
         * @summary Create payment recipient
         * @param {PaymentInitiationRecipientCreateRequest} paymentInitiationRecipientCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Get details about a payment recipient you have previously created.
         * @summary Get payment recipient
         * @param {PaymentInitiationRecipientGetRequest} paymentInitiationRecipientGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
         * @summary List payment recipients
         * @param {PaymentInitiationRecipientListRequest} paymentInitiationRecipientListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/payment_profile/create` endpoint to create a new payment profile. To initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field. You can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`.
         * @summary Create payment profile
         * @param {PaymentProfileCreateRequest} paymentProfileCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileCreate(paymentProfileCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentProfileCreate(paymentProfileCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/payment_profile/get` endpoint to get the status of a given Payment Profile.
         * @summary Get payment profile
         * @param {PaymentProfileGetRequest} paymentProfileGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileGet(paymentProfileGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentProfileGet(paymentProfileGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it’s removed, it can no longer be used to create transfers.
         * @summary Remove payment profile
         * @param {PaymentProfileRemoveRequest} paymentProfileRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileRemove(paymentProfileRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.paymentProfileRemove(paymentProfileRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint returns the account associated with a given processor token.  This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, the account balance returned may not be up-to-date; for realtime balance information, use `/processor/balance/get` instead. Note that some information is nullable.
         * @summary Retrieve the account associated with a processor token
         * @param {ProcessorAccountGetRequest} processorAccountGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAccountGet(processorAccountGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorAccountGet(processorAccountGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
         * @summary Create Apex bank account token
         * @param {ProcessorApexProcessorTokenCreateRequest} processorApexProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking, savings, or cash management account that\'\'s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available.  Versioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14).
         * @summary Retrieve Auth data
         * @param {ProcessorAuthGetRequest} processorAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAuthGet(processorAuthGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorAuthGet(processorAuthGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached.
         * @summary Retrieve Balance data
         * @param {ProcessorBalanceGetRequest} processorBalanceGetRequest The &#x60;/processor/balance/get&#x60; endpoint returns the real-time balance for the account associated with a given &#x60;processor_token&#x60;.  The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.  Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of &#x60;null&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBalanceGet(processorBalanceGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorBalanceGet(processorBalanceGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
         * @summary Create a bank transfer as a processor
         * @param {ProcessorBankTransferCreateRequest} processorBankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBankTransferCreate(processorBankTransferCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorBankTransferCreate(processorBankTransferCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
         * @summary Retrieve Identity data
         * @param {ProcessorIdentityGetRequest} processorIdentityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityGet(processorIdentityGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorIdentityGet(processorIdentityGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {ProcessorIdentityMatchRequest} processorIdentityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityMatch(processorIdentityMatchRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorIdentityMatch(processorIdentityMatchRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint returns the stock position data of the account associated with a given processor token.
         * @summary Retrieve Investment Holdings
         * @param {ProcessorInvestmentsHoldingsGetRequest} processorInvestmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for the investment account associated with the processor token.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with the account, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/processor/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/processor/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/processor/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/processor/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Investments Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get investment transactions data
         * @param {ProcessorInvestmentsTransactionsGetRequest} processorInvestmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/liabilities/get` endpoint returns various details about a loan or credit account. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`.  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/processor/liabilities/get`.  Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the processor token. This is because Plaid must communicate directly with the institution to retrieve the additional data.
         * @summary Retrieve Liabilities data
         * @param {ProcessorLiabilitiesGetRequest} processorLiabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorLiabilitiesGet(processorLiabilitiesGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorLiabilitiesGet(processorLiabilitiesGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * After calling `/processor/signal/evaluate`, call `/processor/signal/decision/report` to report whether the transaction was initiated.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {ProcessorSignalDecisionReportRequest} processorSignalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalDecisionReport(processorSignalDecisionReportRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorSignalDecisionReport(processorSignalDecisionReportRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/processor/signal/evaluate` to evaluate a planned ACH transaction as a processor to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/processor/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to our error documentation on [item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time. To reduce this latency, you can call `/signal/prepare` on the Item before you need to request Signal data.
         * @summary Evaluate a planned ACH transaction
         * @param {ProcessorSignalEvaluateRequest} processorSignalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalEvaluate(processorSignalEvaluateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorSignalEvaluate(processorSignalEvaluateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * When a processor token is not initialized with Signal, call `/processor/signal/prepare` to opt-in that processor token to the Signal data collection process, which will improve the accuracy of the Signal score.  If this endpoint is called with a processor token that is already initialized with Signal, it will return a 200 response and will not modify the processor token.
         * @summary Opt-in a processor token to Signal
         * @param {ProcessorSignalPrepareRequest} processorSignalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalPrepare(processorSignalPrepareRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorSignalPrepare(processorSignalPrepareRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Call the `/processor/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/processor/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was returned.
         * @summary Report a return for an ACH transaction
         * @param {ProcessorSignalReturnReportRequest} processorSignalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalReturnReport(processorSignalReturnReportRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorSignalReturnReport(processorSignalReturnReportRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         *  Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).  Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user\'s bank account information changes or they revoke Plaid\'s permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new `access_token`.  To revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`.
         * @summary Create Stripe bank account token
         * @param {ProcessorStripeBankAccountTokenCreateRequest} processorStripeBankAccountTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Used to create a token suitable for sending to one of Plaid\'s partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item cannot be modified or updated. To revoke the processor\'s access, the entire Item must be deleted by calling `/item/remove`.
         * @summary Create processor token
         * @param {ProcessorTokenCreateRequest} processorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenCreate(processorTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTokenCreate(processorTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Used to get a processor token\'s product permissions. The `products` field will be an empty list if the processor can access all available products.
         * @summary Get a processor token\'s product permissions
         * @param {ProcessorTokenPermissionsGetRequest} processorTokenPermissionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Used to control a processor\'s access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor\'s needs change.
         * @summary Control a processor\'s access to products
         * @param {ProcessorTokenPermissionsSetRequest} processorTokenPermissionsSetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint allows you, the processor, to update the webhook URL associated with a processor token. This request triggers a `WEBHOOK_UPDATE_ACKNOWLEDGED` webhook to the newly specified webhook URL.
         * @summary Update a processor token\'s webhook URL
         * @param {ProcessorTokenWebhookUpdateRequest} processorTokenWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/processor/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with a processor token, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/processor/transactions/get` will be the data available for the processor token as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint.  Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn\'t. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get transaction data
         * @param {ProcessorTransactionsGetRequest} processorTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsGet(processorTransactionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTransactionsGet(processorTransactionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on a processor token that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/processor/transactions/get` or `/processor/transactions/sync`). Once all historical transactions have been fetched, call `/processor/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/processor/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/processor/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Fetch recurring transaction streams
         * @param {ProcessorTransactionsRecurringGetRequest} processorTransactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/processor/transactions/refresh` is offered as an add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {ProcessorTransactionsRefreshRequest} processorTransactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRefresh(processorTransactionsRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTransactionsRefresh(processorTransactionsRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         *  The `/processor/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/processor/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/processor/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.  When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/processor/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get incremental transaction updates on a processor token
         * @param {ProcessorTransactionsSyncRequest} processorTransactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsSync(processorTransactionsSyncRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.processorTransactionsSync(processorTransactionsSyncRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user.
         * @summary Check a user\'s Plaid Network status
         * @param {ProfileNetworkStatusGetRequest} profileNetworkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        profileNetworkStatusGet(profileNetworkStatusGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.profileNetworkStatusGet(profileNetworkStatusGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment.
         * @summary Manually fire a bank income webhook in sandbox
         * @param {SandboxBankIncomeFireWebhookRequest} sandboxBankIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
         * @summary Manually fire a Bank Transfer webhook
         * @param {SandboxBankTransferFireWebhookRequest} sandboxBankTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a bank transfer event in Sandbox
         * @param {SandboxBankTransferSimulateRequest} sandboxBankTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for cashflow updates (Monitoring) in the Sandbox environment.
         * @summary Trigger an update for Cashflow Updates
         * @param {SandboxCraCashflowUpdatesUpdateRequest} sandboxCraCashflowUpdatesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.
         * @summary Manually fire an Income webhook
         * @param {SandboxIncomeFireWebhookRequest} sandboxIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:  `DEFAULT_UPDATE`: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the `webhook_type` in the request body. Valid Sandbox `DEFAULT_UPDATE` webhook types include: `AUTH`, `IDENTITY`, `TRANSACTIONS`, `INVESTMENTS_TRANSACTIONS`, `LIABILITIES`, `HOLDINGS`. If the Item does not support the product, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it.  `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given same day micro-deposit item is verified via SMS verification.  `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app.  `PENDING_DISCONNECT`: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working.   `RECURRING_TRANSACTIONS_UPDATE`: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `SYNC_UPDATES_AVAILABLE`: Transactions webhook to be fired for a given Sandbox Item.  If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `PRODUCT_READY`: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions’ consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider\'s portal. This webhook is currently sent only for Chase and PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type `TRANSFER`).
         * @summary Fire a test webhook
         * @param {SandboxItemFireWebhookRequest} sandboxItemFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force a Sandbox Item into an error state
         * @param {SandboxItemResetLoginRequest} sandboxItemResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemResetLogin(sandboxItemResetLoginRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxItemResetLogin(sandboxItemResetLoginRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.  For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
         * @summary Set verification status for Sandbox account
         * @param {SandboxItemSetVerificationStatusRequest} sandboxItemSetVerificationStatusRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Save the selected accounts when connecting to the Platypus Oauth institution
         * @summary Save the selected accounts when connecting to the Platypus Oauth institution
         * @param {SandboxOauthSelectAccountsRequest} sandboxOauthSelectAccountsRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/sandbox/payment_profile/reset_login/` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment.   After calling `/sandbox/payment_profile/reset_login`, calls to the `/transfer/authorization/create` with the Payment Profile will result in a `decision_rationale` `PAYMENT_PROFILE_LOGIN_REQUIRED`. You can then use update mode for Payment Profile to restore it into a good state.   In order to invoke this endpoint, you must first [create a Payment Profile](https://plaid.com/docs/transfer/add-to-app/#create-a-payment-profile-optional) and [go through the Link flow](https://plaid.com/docs/transfer/add-to-app/#create-a-link-token).
         * @summary Reset the login of a Payment Profile
         * @param {SandboxPaymentProfileResetLoginRequest} sandboxPaymentProfileResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/payment/simulate` endpoint to simulate various payment events in the Sandbox environment. This endpoint will trigger the corresponding payment status webhook.
         * @summary Simulate a payment event in Sandbox
         * @param {SandboxPaymentSimulateRequest} sandboxPaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
         * @summary Create a test Item and processor token
         * @param {SandboxProcessorTokenCreateRequest} sandboxProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/public_token/create` endpoint to create a valid `public_token`  for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data, or with Plaid\'s [pre-populated Sandbox test accounts](https://plaid.com/docs/sandbox/test-credentials/).
         * @summary Create a test Item
         * @param {SandboxPublicTokenCreateRequest} sandboxPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment.
         * @summary Manually fire a Transfer webhook
         * @param {SandboxTransferFireWebhookRequest} sandboxTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment.
         * @summary Simulate a ledger deposit event in Sandbox
         * @param {SandboxTransferLedgerDepositSimulateRequest} sandboxTransferLedgerDepositSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.
         * @summary Simulate converting pending balance to available balance
         * @param {SandboxTransferLedgerSimulateAvailableRequest} sandboxTransferLedgerSimulateAvailableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment.
         * @summary Simulate a ledger withdraw event in Sandbox
         * @param {SandboxTransferLedgerWithdrawSimulateRequest} sandboxTransferLedgerWithdrawSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/refund/simulate` endpoint to simulate a refund event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a refund event in Sandbox
         * @param {SandboxTransferRefundSimulateRequest} sandboxTransferRefundSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned.
         * @summary Trigger the creation of a repayment
         * @param {SandboxTransferRepaymentSimulateRequest} sandboxTransferRepaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a transfer event in Sandbox
         * @param {SandboxTransferSimulateRequest} sandboxTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSimulate(sandboxTransferSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferSimulate(sandboxTransferSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of `swept` will become `swept_settled`, all `posted` or `pending` transfers with a sweep status of `unswept` will become `swept`, and all `returned` transfers with a sweep status of `swept` will become `return_swept`.
         * @summary Simulate creating a sweep
         * @param {SandboxTransferSweepSimulateRequest} sandboxTransferSweepSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing `virtual_time`, but may never go back to a lower `virtual_time`.  If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.  For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting `virtual_time` = t + 15 days, 2 new originations should be created, along with the webhook events.  The advancement of the test clock from its current `virtual_time` should be limited such that there are no more than 20 originations resulting from the advance operation on each `recurring_transfer` associated with the `test_clock`.  For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the `virtual_time` up to 80 weeks on each API call.
         * @summary Advance a test clock
         * @param {SandboxTransferTestClockAdvanceRequest} sandboxTransferTestClockAdvanceRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox.  A test clock can be associated with up to 5 recurring transfers.
         * @summary Create a test clock
         * @param {SandboxTransferTestClockCreateRequest} sandboxTransferTestClockCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment.
         * @summary Get a test clock
         * @param {SandboxTransferTestClockGetRequest} sandboxTransferTestClockGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/sandbox/transfer/test_clock/list` endpoint to see a list of all your test clocks in the Sandbox environment, by ascending `virtual_time`. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired test clocks.
         * @summary List test clocks
         * @param {SandboxTransferTestClockListRequest} sandboxTransferTestClockListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/user/reset_login`, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force item(s) for a Sandbox User into an error state
         * @param {SandboxUserResetLoginRequest} sandboxUserResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxUserResetLogin(sandboxUserResetLoginRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.sandboxUserResetLogin(sandboxUserResetLoginRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {SignalDecisionReportRequest} signalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalDecisionReport(signalDecisionReportRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.signalDecisionReport(signalDecisionReportRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to the error documentation on [Item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time.
         * @summary Evaluate a planned ACH transaction
         * @param {SignalEvaluateRequest} signalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalEvaluate(signalEvaluateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.signalEvaluate(signalEvaluateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * When an Item is not initialized with Signal, call `/signal/prepare` to opt-in that Item to the Signal data collection process, developing a Signal score. This should be done on Items where Signal was added in the `additional_consented_products` array but not in the `products`, `optional_products`, or `required_if_supported_products` array. If `/signal/prepare` is skipped on an Item that is not initialized with Signal, the initial call to `/signal/evaluate` on that Item will be less accurate, because Signal will have access to less data for computing the Signal score.  If run on an Item that is already initialized with Signal, this endpoint will return a 200 response and will not modify the Item.
         * @summary Opt-in an Item to Signal
         * @param {SignalPrepareRequest} signalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalPrepare(signalPrepareRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.signalPrepare(signalPrepareRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
         * @summary Report a return for an ACH transaction
         * @param {SignalReturnReportRequest} signalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalReturnReport(signalReturnReportRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.signalReturnReport(signalReturnReportRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use `/signal/schedule` to schedule a planned ACH transaction.
         * @summary Schedule a planned ACH transaction
         * @param {SignalScheduleRequest} signalScheduleRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalSchedule(signalScheduleRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.signalSchedule(signalScheduleRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/statements/download` endpoint retrieves a single statement PDF in binary format.  The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system.
         * @summary Retrieve a single statement.
         * @param {StatementsDownloadRequest} statementsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsDownload(statementsDownloadRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.statementsDownload(statementsDownloadRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/statements/list` endpoint retrieves a list of all statements associated with an item.
         * @summary Retrieve a list of all statements associated with an item.
         * @param {StatementsListRequest} statementsListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsList(statementsListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.statementsList(statementsListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.
         * @summary Refresh statements data.
         * @param {StatementsRefreshRequest} statementsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsRefresh(statementsRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.statementsRefresh(statementsRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.  The product is currently in beta.
         * @summary enhance locally-held transaction data
         * @param {TransactionsEnhanceGetRequest} transactionsEnhanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnhance(transactionsEnhanceGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsEnhance(transactionsEnhanceGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.
         * @summary Enrich locally-held transaction data
         * @param {TransactionsEnrichRequest} transactionsEnrichRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnrich(transactionsEnrichRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsEnrich(transactionsEnrichRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates.  The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.  Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn\'t. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get transaction data
         * @param {TransactionsGetRequest} transactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsGet(transactionsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsGet(transactionsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on an Item that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/transactions/get` or `/transactions/sync`).   When using Recurring Transactions, for best results, make sure to use the [`days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) parameter to request at least 180 days of history when initializing Items with Transactions. Once all historical transactions have been fetched, call `/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.
         * @summary Fetch recurring transaction streams
         * @param {TransactionsRecurringGetRequest} transactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRecurringGet(transactionsRecurringGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsRecurringGet(transactionsRecurringGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item. The on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled Item. The Item must already have Transactions added as a product in order to call `/transactions/refresh`.  If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/transactions/sync` and `/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get` or `/transactions/sync`.  Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/transactions/refresh` is offered as an optional add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {TransactionsRefreshRequest} transactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRefresh(transactionsRefreshRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsRefresh(transactionsRefreshRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/rules/v1/create` endpoint creates transaction categorization rules.  Rules will be applied on the Item\'s transactions returned in `/transactions/get` response.  The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
         * @summary Create transaction category rule
         * @param {TransactionsRulesCreateRequest} transactionsRulesCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesCreate(transactionsRulesCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsRulesCreate(transactionsRulesCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token.
         * @summary Return a list of rules created for the Item associated with the access token.
         * @param {TransactionsRulesListRequest} transactionsRulesListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesList(transactionsRulesListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsRulesList(transactionsRulesListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/rules/v1/remove` endpoint is used to remove a transaction rule.
         * @summary Remove transaction rule
         * @param {TransactionsRulesRemoveRequest} transactionsRulesRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesRemove(transactionsRulesRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsRulesRemove(transactionsRulesRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.   When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.
         * @summary Get incremental transaction updates on an Item
         * @param {TransactionsSyncRequest} transactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsSync(transactionsSyncRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsSync(transactionsSyncRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`.  The product is currently in beta.
         * @summary Obtain user insights based on transactions sent through /transactions/enrich
         * @param {TransactionsUserInsightsGetRequest} transactionsUserInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/authorization/cancel` endpoint to cancel a transfer authorization. A transfer authorization is eligible for cancellation if it has not yet been used to create a transfer.
         * @summary Cancel a transfer authorization
         * @param {TransferAuthorizationCancelRequest} transferAuthorizationCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCancel(transferAuthorizationCancelRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferAuthorizationCancel(transferAuthorizationCancelRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/authorization/create` endpoint to authorize a transfer. This endpoint must be called prior to calling `/transfer/create`. The transfer authorization will expire if not used after one hour. (You can contact your account manager to change the default authorization lifetime.)   There are four possible outcomes to calling this endpoint:     - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer.     - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization.    - If the `authorization.decision` is `approved`, and the `authorization.rationale_code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`.      - If the `authorization.decision` is `approved` and the `authorization.rationale_code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema.  In Plaid\'s Sandbox environment the decisions will be returned as follows:    - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account.    - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).    - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).    - To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.    - To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
         * @summary Create a transfer authorization
         * @param {TransferAuthorizationCreateRequest} transferAuthorizationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCreate(transferAuthorizationCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferAuthorizationCreate(transferAuthorizationCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * (Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid.
         * @summary (Deprecated) Retrieve a balance held with Plaid
         * @param {TransferBalanceGetRequest} transferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferBalanceGet(transferBalanceGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferBalanceGet(transferBalanceGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/cancel` endpoint to cancel a transfer.  A transfer is eligible for cancellation if the `cancellable` property returned by `/transfer/get` is `true`.
         * @summary Cancel a transfer
         * @param {TransferCancelRequest} transferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCancel(transferCancelRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferCancel(transferCancelRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/capabilities/get` endpoint to determine the RTP eligibility information of an account to be used with Transfer. This endpoint works on all Transfer-capable Items, including those created by `/transfer/migrate_account`. To simulate RTP eligibility in Sandbox, log in using the username `user_good` and password `pass_good` and use the first two checking and savings accounts in the \"First Platypus Bank\" institution (ending in 0000 or 1111), which will return `true`. Any other account will return `false`.
         * @summary Get RTP eligibility information of a transfer
         * @param {TransferCapabilitiesGetRequest} transferCapabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCapabilitiesGet(transferCapabilitiesGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferCapabilitiesGet(transferCapabilitiesGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/configuration/get` endpoint to view your transfer product configurations.
         * @summary Get transfer product configuration
         * @param {TransferConfigurationGetRequest} transferConfigurationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferConfigurationGet(transferConfigurationGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferConfigurationGet(transferConfigurationGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/create` endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided `transfer_id` has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use [Transfer events](https://plaid.com/docs/transfer/reconciling-transfers/).
         * @summary Create a transfer
         * @param {TransferCreateRequest} transferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCreate(transferCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferCreate(transferCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. You must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header.
         * @summary Upload transfer diligence document on behalf of the originator
         * @param {TransferDiligenceDocumentUploadRequest} transferDiligenceDocumentUploadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).
         * @summary Submit transfer diligence on behalf of the originator
         * @param {TransferDiligenceSubmitRequest} transferDiligenceSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceSubmit(transferDiligenceSubmitRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferDiligenceSubmit(transferDiligenceSubmitRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
         * @summary List transfer events
         * @param {TransferEventListRequest} transferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventList(transferEventListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferEventList(transferEventListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.
         * @summary Sync transfer events
         * @param {TransferEventSyncRequest} transferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventSync(transferEventSyncRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferEventSync(transferEventSyncRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/get` endpoint fetches information about the transfer corresponding to the given `transfer_id` or `authorization_id`. One of `transfer_id` or `authorization_id` must be populated but not both.
         * @summary Retrieve a transfer
         * @param {TransferGetRequest} transferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGet(transferGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferGet(transferGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.
         * @summary Create a transfer intent object to invoke the Transfer UI
         * @param {TransferIntentCreateRequest} transferIntentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentCreate(transferIntentCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferIntentCreate(transferIntentCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.
         * @summary Retrieve more information about a transfer intent
         * @param {TransferIntentGetRequest} transferIntentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentGet(transferIntentGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferIntentGet(transferIntentGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger.
         * @summary Deposit funds into a Plaid Ledger balance
         * @param {TransferLedgerDepositRequest} transferLedgerDepositRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDeposit(transferLedgerDepositRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferLedgerDeposit(transferLedgerDepositRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/ledger/distribute` endpoint to move available balance between the ledgers of the platform and one of its originators.
         * @summary Move available balance between the ledgers of the platform and one of its originators
         * @param {TransferLedgerDistributeRequest} transferLedgerDistributeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDistribute(transferLedgerDistributeRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferLedgerDistribute(transferLedgerDistributeRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid.
         * @summary Retrieve Plaid Ledger balance
         * @param {TransferLedgerGetRequest} transferLedgerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerGet(transferLedgerGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferLedgerGet(transferLedgerGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance.
         * @summary Withdraw funds from a Plaid Ledger balance
         * @param {TransferLedgerWithdrawRequest} transferLedgerWithdrawRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerWithdraw(transferLedgerWithdrawRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferLedgerWithdraw(transferLedgerWithdrawRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
         * @summary List transfers
         * @param {TransferListRequest} transferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferList(transferListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferList(transferListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics.
         * @summary Get transfer product usage metrics
         * @param {TransferMetricsGetRequest} transferMetricsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMetricsGet(transferMetricsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferMetricsGet(transferMetricsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Transfers
         * @param {TransferMigrateAccountRequest} transferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMigrateAccount(transferMigrateAccountRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferMigrateAccount(transferMigrateAccountRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`.
         * @summary Create a new originator
         * @param {TransferOriginatorCreateRequest} transferOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorCreate(transferOriginatorCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferOriginatorCreate(transferOriginatorCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator.
         * @summary Update the funding account associated with the originator
         * @param {TransferOriginatorFundingAccountUpdateRequest} transferOriginatorFundingAccountUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/originator/get` endpoint gets status updates for an originator\'s onboarding process. This information is also available via the Transfer page on the Plaid dashboard.
         * @summary Get status of an originator\'s onboarding
         * @param {TransferOriginatorGetRequest} transferOriginatorGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorGet(transferOriginatorGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferOriginatorGet(transferOriginatorGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/originator/list` endpoint gets status updates for all of your originators\' onboarding. This information is also available via the Plaid dashboard.
         * @summary Get status of all originators\' onboarding
         * @param {TransferOriginatorListRequest} transferOriginatorListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorList(transferOriginatorListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferOriginatorList(transferOriginatorListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/platform/originator/create` endpoint allows gathering information about the originator specific to the Scaled Platform Transfer offering, including the originator\'s agreement to legal terms required before accepting any further information related to the originator.
         * @summary Create an originator for scaled platform customers
         * @param {TransferPlatformOriginatorCreateRequest} transferPlatformOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/platform/person/create` endpoint to create a person record associated with an originator and optionally submit person-specific requirements.
         * @summary Create a person associated with an originator
         * @param {TransferPlatformPersonCreateRequest} transferPlatformPersonCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/platform/requirement/submit` endpoint allows platforms to submit onboarding requirements for an originator as part of the Scaled Platform Transfer offering.
         * @summary Submit onboarding requirements for Scaled Platform originators
         * @param {TransferPlatformRequirementSubmitRequest} transferPlatformRequirementSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement.
         * @summary Generate a Plaid-hosted onboarding UI URL.
         * @param {TransferQuestionnaireCreateRequest} transferQuestionnaireCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer.  Scheduled transfer that hasn\'t been submitted to bank will be cancelled.
         * @summary Cancel a recurring transfer.
         * @param {TransferRecurringCancelRequest} transferRecurringCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCancel(transferRecurringCancelRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRecurringCancel(transferRecurringCancelRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/recurring/create` endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Platform Payments (beta) customers.
         * @summary Create a recurring transfer
         * @param {TransferRecurringCreateRequest} transferRecurringCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCreate(transferRecurringCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRecurringCreate(transferRecurringCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`.
         * @summary Retrieve a recurring transfer
         * @param {TransferRecurringGetRequest} transferRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringGet(transferRecurringGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRecurringGet(transferRecurringGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/recurring/list` endpoint to see a list of all your recurring transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired recurring transfers.
         * @summary List recurring transfers
         * @param {TransferRecurringListRequest} transferRecurringListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringList(transferRecurringListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRecurringList(transferRecurringListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/refund/cancel` endpoint to cancel a refund.  A refund is eligible for cancellation if it has not yet been submitted to the payment network.
         * @summary Cancel a refund
         * @param {TransferRefundCancelRequest} transferRefundCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCancel(transferRefundCancelRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRefundCancel(transferRefundCancelRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Use the `/transfer/refund/create` endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days.  Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds.
         * @summary Create a refund
         * @param {TransferRefundCreateRequest} transferRefundCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCreate(transferRefundCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRefundCreate(transferRefundCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`.
         * @summary Retrieve a refund
         * @param {TransferRefundGetRequest} transferRefundGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundGet(transferRefundGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRefundGet(transferRefundGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/repayment/list` endpoint fetches repayments matching the given filters. Repayments are returned in reverse-chronological order (most recent first) starting at the given `start_time`.
         * @summary Lists historical repayments
         * @param {TransferRepaymentListRequest} transferRepaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentList(transferRepaymentListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRepaymentList(transferRepaymentListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/repayment/return/list` endpoint retrieves the set of returns that were batched together into the specified repayment. The sum of amounts of returns retrieved by this request equals the amount of the repayment.
         * @summary List the returns included in a repayment
         * @param {TransferRepaymentReturnListRequest} transferRepaymentReturnListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentReturnList(transferRepaymentReturnListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferRepaymentReturnList(transferRepaymentReturnListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {TransferSweepGetRequest} transferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepGet(transferSweepGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferSweepGet(transferSweepGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.
         * @summary List sweeps
         * @param {TransferSweepListRequest} transferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepList(transferSweepListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.transferSweepList(transferSweepListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns user permissioned account data including identity and Item access tokens.
         * @summary Retrieve User Account
         * @param {UserAccountSessionGetRequest} userAccountSessionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userAccountSessionGet(userAccountSessionGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userAccountSessionGet(userAccountSessionGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint should be called for each of your end users before they begin a Plaid Check or Income flow, or a Multi-Item Link flow. This provides you a single token to access all data associated with the user. You should only create one per end user.  The `consumer_report_user_identity` object must be present in order to create a Plaid Check Consumer Report for a user. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.  If you call the endpoint multiple times with the same `client_user_id`, the first creation call will succeed and the rest will fail with an error message indicating that the user has been created for the given `client_user_id`.  Ensure that you store the `user_token` along with your user\'s identifier in your database, as it is not possible to retrieve a previously created `user_token`.
         * @summary Create user
         * @param {UserCreateRequest} userCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userCreate(userCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userCreate(userCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Returns Items associated with a User along with their corresponding statuses.
         * @summary Get Items associated with a User
         * @param {UserItemsGetRequest} userItemsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userItemsGet(userItemsGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userItemsGet(userItemsGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * `/user/remove` deletes a user token and and associated information, including any Items associated with the token.  Any subsequent calls to retrieve information using the same user token will result in an error stating the user does not exist.
         * @summary Remove user
         * @param {UserRemoveRequest} userRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userRemove(userRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userRemove(userRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint is used to create a third-party user token. This token can be shared with and used by a specified third-party client to access data associated with the user through supported endpoints.  Ensure you store the `third_party_user_token` along with the `user_token` and `third_party_client_id`, as it is not possible to retrieve a previously created `third_party_user_token`.
         * @summary Create a third-party user token
         * @param {UserThirdPartyTokenCreateRequest} userThirdPartyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user.   Any subsequent calls to retrieve information using the same third-party user token will result in an error stating the third-party user token does not exist.
         * @summary Remove a third-party user token
         * @param {UserThirdPartyTokenRemoveRequest} userThirdPartyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint is used to update user information associated with an existing `user_token`. It can also be used to enable an existing `user_token` for use with Consumer Reports by Plaid Check, by adding a `consumer_report_user_identity` object to the user. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.
         * @summary Update user information
         * @param {UserUpdateRequest} userUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userUpdate(userUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.userUpdate(userUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create an e-wallet. The response is the newly created e-wallet object.
         * @summary Create an e-wallet
         * @param {WalletCreateRequest} walletCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletCreate(walletCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletCreate(walletCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Fetch an e-wallet. The response includes the current balance.
         * @summary Fetch an e-wallet
         * @param {WalletGetRequest} walletGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletGet(walletGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletGet(walletGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint lists all e-wallets in descending order of creation.
         * @summary Fetch a list of e-wallets
         * @param {WalletListRequest} walletListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletList(walletListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletList(walletListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction. Transactions will settle in seconds to several days, depending on the underlying payment rail.
         * @summary Execute a transaction using an e-wallet
         * @param {WalletTransactionExecuteRequest} walletTransactionExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionExecute(walletTransactionExecuteRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletTransactionExecute(walletTransactionExecuteRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Fetch a specific e-wallet transaction
         * @summary Fetch an e-wallet transaction
         * @param {WalletTransactionGetRequest} walletTransactionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionGet(walletTransactionGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletTransactionGet(walletTransactionGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.
         * @summary List e-wallet transactions
         * @param {WalletTransactionListRequest} walletTransactionListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionList(walletTransactionListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.walletTransactionList(walletTransactionListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a new entity watchlist screening to check your customer against watchlists defined in the associated entity watchlist program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for an entity
         * @param {WatchlistScreeningEntityCreateRequest} watchlistScreeningEntityCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Retrieve an entity watchlist screening.
         * @summary Get an entity screening
         * @param {WatchlistScreeningEntityGetRequest} watchlistScreeningEntityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all changes to the entity watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for entity watchlist screenings
         * @param {WatchlistScreeningEntityHistoryListRequest} watchlistScreeningEntityHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all hits for the entity watchlist screening.
         * @summary List hits for entity watchlist screenings
         * @param {WatchlistScreeningEntityHitListRequest} watchlistScreeningEntityHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all entity screenings.
         * @summary List entity watchlist screenings
         * @param {WatchlistScreeningEntityListRequest} watchlistScreeningEntityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Get an entity watchlist screening program
         * @summary Get entity watchlist screening program
         * @param {WatchlistScreeningEntityProgramGetRequest} watchlistScreeningEntityProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all entity watchlist screening programs
         * @summary List entity watchlist screening programs
         * @param {WatchlistScreeningEntityProgramListRequest} watchlistScreeningEntityProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a review for an entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an entity watchlist screening
         * @param {WatchlistScreeningEntityReviewCreateRequest} watchlistScreeningEntityReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all reviews for a particular entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary List reviews for entity watchlist screenings
         * @param {WatchlistScreeningEntityReviewListRequest} watchlistScreeningEntityReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Update an entity watchlist screening.
         * @summary Update an entity screening
         * @param {WatchlistScreeningEntityUpdateRequest} watchlistScreeningEntityUpdateRequest The entity screening was successfully updated.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a new Watchlist Screening to check your customer against watchlists defined in the associated Watchlist Program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for a person
         * @param {WatchlistScreeningIndividualCreateRequest} watchlistScreeningIndividualCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Retrieve a previously created individual watchlist screening
         * @summary Retrieve an individual watchlist screening
         * @param {WatchlistScreeningIndividualGetRequest} watchlistScreeningIndividualGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all changes to the individual watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for individual watchlist screenings
         * @param {WatchlistScreeningIndividualHistoryListRequest} watchlistScreeningIndividualHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all hits found by Plaid for a particular individual watchlist screening.
         * @summary List hits for individual watchlist screening
         * @param {WatchlistScreeningIndividualHitListRequest} watchlistScreeningIndividualHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List previously created watchlist screenings for individuals
         * @summary List Individual Watchlist Screenings
         * @param {WatchlistScreeningIndividualListRequest} watchlistScreeningIndividualListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Get an individual watchlist screening program
         * @summary Get individual watchlist screening program
         * @param {WatchlistScreeningIndividualProgramGetRequest} watchlistScreeningIndividualProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all individual watchlist screening programs
         * @summary List individual watchlist screening programs
         * @param {WatchlistScreeningIndividualProgramListRequest} watchlistScreeningIndividualProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Create a review for the individual watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an individual watchlist screening
         * @param {WatchlistScreeningIndividualReviewCreateRequest} watchlistScreeningIndividualReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * List all reviews for the individual watchlist screening.
         * @summary List reviews for individual watchlist screenings
         * @param {WatchlistScreeningIndividualReviewListRequest} watchlistScreeningIndividualReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Update a specific individual watchlist screening. This endpoint can be used to add additional customer information, correct outdated information, add a reference id, assign the individual to a reviewer, and update which program it is associated with. Please note that you may not update `search_terms` and `status` at the same time since editing `search_terms` may trigger an automatic `status` change.
         * @summary Update individual watchlist screening
         * @param {WatchlistScreeningIndividualUpdateRequest} watchlistScreeningIndividualUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
        /**
         * Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.  The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
         * @summary Get webhook verification key
         * @param {WebhookVerificationKeyGetRequest} webhookVerificationKeyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options) {
            return __awaiter(this, void 0, void 0, function* () {
                const localVarAxiosArgs = yield localVarAxiosParamCreator.webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options);
                return common_1.createRequestFunction(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration);
            });
        },
    };
};
exports.PlaidApiFp = PlaidApiFp;
/**
 * PlaidApi - factory interface
 * @export
 */
const PlaidApiFactory = function (configuration, basePath, axios) {
    const localVarFp = exports.PlaidApiFp(configuration);
    return {
        /**
         * The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints, such as `/accounts/get`, return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.
         * @summary Retrieve real-time balance data
         * @param {AccountsBalanceGetRequest} accountsBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsBalanceGet(accountsBalanceGetRequest, options) {
            return localVarFp.accountsBalanceGet(accountsBalanceGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link\'s [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you.  `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older.  For realtime balance information, use the paid endpoint `/accounts/balance/get` instead.
         * @summary Retrieve accounts
         * @param {AccountsGetRequest} accountsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        accountsGet(accountsGetRequest, options) {
            return localVarFp.accountsGet(accountsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
         * @summary Retrieve information about a Plaid application
         * @param {ApplicationGetRequest} applicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applicationGet(applicationGetRequest, options) {
            return localVarFp.applicationGet(applicationGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.  To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
         * @summary Create Asset Report Audit Copy
         * @param {AssetReportAuditCopyCreateRequest} assetReportAuditCopyCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options) {
            return localVarFp.assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint.  The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor.  This token can then be used to call `/asset_report/audit_copy/create`.
         * @summary Retrieve an Asset Report Audit Copy
         * @param {AssetReportAuditCopyGetRequest} assetReportAuditCopyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options) {
            return localVarFp.assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove Asset Report Audit Copy
         * @param {AssetReportAuditCopyRemoveRequest} assetReportAuditCopyRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options) {
            return localVarFp.assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.  The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. The exact amount of time to create the report will vary depending on how many days of history are requested and will typically range from a few seconds to about one minute. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/products/assets/#webhooks).  The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
         * @summary Create an Asset Report
         * @param {AssetReportCreateRequest} assetReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportCreate(assetReportCreateRequest, options) {
            return localVarFp.assetReportCreate(assetReportCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.  To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report\'s data.  Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.  Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed.
         * @summary Filter Asset Report
         * @param {AssetReportFilterRequest} assetReportFilterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportFilter(assetReportFilterRequest, options) {
            return localVarFp.assetReportFilter(assetReportFilterRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`.  For latency-sensitive applications, you can optionally call `/asset_report/create` with `options.add_ons` set to `[\"fast_assets\"]`. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report.
         * @summary Retrieve an Asset Report
         * @param {AssetReportGetRequest} assetReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportGet(assetReportGetRequest, options) {
            return localVarFp.assetReportGet(assetReportGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve a PDF Asset Report
         * @param {AssetReportPDFGetRequest} assetReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportPdfGet(assetReportPDFGetRequest, options) {
            return localVarFp.assetReportPdfGet(assetReportPDFGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * An Asset Report is an immutable snapshot of a user\'s assets. In order to \"refresh\" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.  The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string (\"\") for any previously-populated fields you would like set as empty.
         * @summary Refresh an Asset Report
         * @param {AssetReportRefreshRequest} assetReportRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRefresh(assetReportRefreshRequest, options) {
            return localVarFp.assetReportRefresh(assetReportRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.  The `/asset_report/remove` endpoint allows you to remove access to an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
         * @summary Delete an Asset Report
         * @param {AssetReportRemoveRequest} assetReportRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        assetReportRemove(assetReportRemoveRequest, options) {
            return localVarFp.assetReportRemove(assetReportRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item\'s checking, savings, and cash management accounts, along with high-level account data and balances when available.  Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22).
         * @summary Retrieve auth data
         * @param {AuthGetRequest} authGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authGet(authGetRequest, options) {
            return localVarFp.authGet(authGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.  The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.  Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
         * @summary Get balance of your Bank Transfer account
         * @param {BankTransferBalanceGetRequest} bankTransferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferBalanceGet(bankTransferBalanceGetRequest, options) {
            return localVarFp.bankTransferBalanceGet(bankTransferBalanceGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
         * @summary Cancel a bank transfer
         * @param {BankTransferCancelRequest} bankTransferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCancel(bankTransferCancelRequest, options) {
            return localVarFp.bankTransferCancel(bankTransferCancelRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
         * @summary Create a bank transfer
         * @param {BankTransferCreateRequest} bankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferCreate(bankTransferCreateRequest, options) {
            return localVarFp.bankTransferCreate(bankTransferCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/bank_transfer/event/list` endpoint to get a list of Plaid-initiated ACH or bank transfer events based on specified filter criteria. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary List bank transfer events
         * @param {BankTransferEventListRequest} bankTransferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventList(bankTransferEventListRequest, options) {
            return localVarFp.bankTransferEventList(bankTransferEventListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/bank_transfer/event/sync` allows you to request up to the next 25 Plaid-initiated bank transfer events that happened after a specific `event_id`. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://www.plaid.com/docs/auth/coverage/microdeposit-events/).
         * @summary Sync bank transfer events
         * @param {BankTransferEventSyncRequest} bankTransferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferEventSync(bankTransferEventSyncRequest, options) {
            return localVarFp.bankTransferEventSync(bankTransferEventSyncRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
         * @summary Retrieve a bank transfer
         * @param {BankTransferGetRequest} bankTransferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferGet(bankTransferGetRequest, options) {
            return localVarFp.bankTransferGet(bankTransferGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
         * @summary List bank transfers
         * @param {BankTransferListRequest} bankTransferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferList(bankTransferListRequest, options) {
            return localVarFp.bankTransferList(bankTransferListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items.  Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Bank Transfers
         * @param {BankTransferMigrateAccountRequest} bankTransferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options) {
            return localVarFp.bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {BankTransferSweepGetRequest} bankTransferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepGet(bankTransferSweepGetRequest, options) {
            return localVarFp.bankTransferSweepGet(bankTransferSweepGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.
         * @summary List sweeps
         * @param {BankTransferSweepListRequest} bankTransferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bankTransferSweepList(bankTransferSweepListRequest, options) {
            return localVarFp.bankTransferSweepList(bankTransferSweepListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account.
         * @summary Evaluate risk of a bank account
         * @param {BeaconAccountRiskEvaluateRequest} beaconAccountRiskEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options) {
            return localVarFp.beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a Beacon Duplicate for a given Beacon Duplicate id.  A Beacon Duplicate represents a pair of similar Beacon Users within your organization.  Two Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields.  The `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`.
         * @summary Get a Beacon Duplicate
         * @param {BeaconDuplicateGetRequest} beaconDuplicateGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconDuplicateGet(beaconDuplicateGetRequest, options) {
            return localVarFp.beaconDuplicateGet(beaconDuplicateGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a fraud report for a given Beacon User.
         * @summary Create a Beacon Report
         * @param {BeaconReportCreateRequest} beaconReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportCreate(beaconReportCreateRequest, options) {
            return localVarFp.beaconReportCreate(beaconReportCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a Beacon report for a given Beacon report id.
         * @summary Get a Beacon Report
         * @param {BeaconReportGetRequest} beaconReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportGet(beaconReportGetRequest, options) {
            return localVarFp.beaconReportGet(beaconReportGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/beacon/report/list` endpoint to view all Beacon Reports you created for a specific Beacon User. The reports returned by this endpoint are exclusively reports you created for a specific user. A Beacon User can only have one active report at a time, but a new report can be created if a previous report has been deleted. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Reports for a Beacon User
         * @param {BeaconReportListRequest} beaconReportListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportList(beaconReportListRequest, options) {
            return localVarFp.beaconReportList(beaconReportListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a Beacon Report Syndication for a given Beacon Report Syndication id.
         * @summary Get a Beacon Report Syndication
         * @param {BeaconReportSyndicationGetRequest} beaconReportSyndicationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options) {
            return localVarFp.beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/beacon/report_syndication/list` endpoint to view all Beacon Reports that have been syndicated to a specific Beacon User. This endpoint returns Beacon Report Syndications which are references to Beacon Reports created either by you, or another Beacon customer, that matched the specified Beacon User. A Beacon User can have multiple active Beacon Report Syndications at once. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
         * @summary List Beacon Report Syndications for a Beacon User
         * @param {BeaconReportSyndicationListRequest} beaconReportSyndicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconReportSyndicationList(beaconReportSyndicationListRequest, options) {
            return localVarFp.beaconReportSyndicationList(beaconReportSyndicationListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Get Account Insights for all Accounts linked to this Beacon User. The insights for each account are computed based on the information that was last retrieved from the financial institution.
         * @summary Get Account Insights for a Beacon User
         * @param {BeaconUserAccountInsightsGetRequest} beaconUserAccountInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options) {
            return localVarFp.beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create and scan a Beacon User against your Beacon Program, according to your program\'s settings.  When you submit a new user to `/beacon/user/create`, several checks are performed immediately:    - The user\'s PII (provided within the `user` object) is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.
         * @summary Create a Beacon User
         * @param {BeaconUserCreateRequest} beaconUserCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserCreate(beaconUserCreateRequest, options) {
            return localVarFp.beaconUserCreate(beaconUserCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Fetch a Beacon User.  The Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks.
         * @summary Get a Beacon User
         * @param {BeaconUserGetRequest} beaconUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserGet(beaconUserGetRequest, options) {
            return localVarFp.beaconUserGet(beaconUserGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all changes to the Beacon User in reverse-chronological order.
         * @summary List a Beacon User\'s history
         * @param {BeaconUserHistoryListRequest} beaconUserHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserHistoryList(beaconUserHistoryListRequest, options) {
            return localVarFp.beaconUserHistoryList(beaconUserHistoryListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Update the status of a Beacon User.  When updating a Beacon User\'s status via this endpoint, Plaid validates that the status change is consistent with the related state for this Beacon User. Specifically, we will check:  1. Whether there are any associated Beacon Reports connected to the Beacon User, and 2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User.  When updating a Beacon User\'s status to \"rejected\", we enforce that either a Beacon Report has been created for the Beacon User or a Beacon Report Syndication has been confirmed. When updating a Beacon User\'s status to \"cleared\", we enforce that there are no active Beacon Reports or confirmed Beacon Report Syndications associated with the user. If you previously created a Beacon Report for this user, you must delete it before updating the Beacon User\'s status to \"cleared\". There are no restrictions on updating a Beacon User\'s status to \"pending_review\".  If these conditions are not met, the request will be rejected with an error explaining the issue.
         * @summary Review a Beacon User
         * @param {BeaconUserReviewRequest} beaconUserReviewRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserReview(beaconUserReviewRequest, options) {
            return localVarFp.beaconUserReview(beaconUserReviewRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User.  Similar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`:    - The user\'s updated PII is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s updated PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.  Plaid maintains a version history for each Beacon User, so the Beacon User\'s identity data before and after the update is retained as separate versions.
         * @summary Update the identity data of a Beacon User
         * @param {BeaconUserUpdateRequest} beaconUserUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        beaconUserUpdate(beaconUserUpdateRequest, options) {
            return localVarFp.beaconUserUpdate(beaconUserUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Send a request to the `/categories/get` endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.  All implementations are recommended to use the newer `personal_finance_category` taxonomy instead of the older `category` taxonomy supported by this endpoint. The [`personal_finance_category taxonomy` CSV file](https://plaid.com/documents/transactions-personal-finance-category-taxonomy.csv) is available for download and is not accessible via API.
         * @summary Get categories
         * @param {object} body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        categoriesGet(body, options) {
            return localVarFp.categoriesGet(body, options).then((request) => request(axios, basePath));
        },
        /**
         * List a historical log of Item consent events. Consent logs are only available for events occurring on or after November 7, 2024. Up to three years of consent logs will be available via the endpoint.
         * @summary List a historical log of item consent events
         * @param {ConsentEventsGetRequest} consentEventsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consentEventsGet(consentEventsGetRequest, options) {
            return localVarFp.consentEventsGet(consentEventsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format.  Response is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary Retrieve a PDF Reports
         * @param {ConsumerReportPDFGetRequest} consumerReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        consumerReportPdfGet(consumerReportPDFGetRequest, options) {
            return localVarFp.consumerReportPdfGet(consumerReportPDFGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/bank_income/create` creates a CRA report for income verification
         * @summary Create a CRA report for income verification
         * @param {CraBankIncomeCreateRequest} craBankIncomeCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeCreate(craBankIncomeCreateRequest, options) {
            return localVarFp.craBankIncomeCreate(craBankIncomeCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/bank_income/get` returns the bank income report(s) for a specified user.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CraBankIncomeGetRequest} craBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craBankIncomeGet(craBankIncomeGetRequest, options) {
            return localVarFp.craBankIncomeGet(craBankIncomeGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Base Report for your user, allowing you to receive comprehensive bank account and cash flow data. You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn\'t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve a Base Report
         * @param {CraCheckReportBaseReportGetRequest} craCheckReportBaseReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options) {
            return localVarFp.craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from your user\'s banking data
         * @param {CraCheckReportCashflowInsightsGetRequest} craCheckReportCashflowInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options) {
            return localVarFp.craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/check_report/create` creates a Consumer Report powered by Plaid Check. You can call this endpoint to create a new report if `consumer_report_permissible_purpose` was omitted during Link token creation. If you did provide a `consumer_report_permissible_purpose` during Link token creation, then Plaid Check will automatically begin creating a Consumer Report once the user completes the Link process, and it is not necessary to call `/cra/check_report/create` before retrieving the report.   `/cra/check_report/create` can also be used to refresh data in an existing report. A Consumer Report will last for 24 hours before expiring; you should call any `/get` endpoints on the report before it expires. If a report expires, you can call `/cra/check_report/create` again to re-generate it. Note that refreshing or regenerating a report is a billable event.
         * @summary Create a Consumer Report
         * @param {CraCheckReportCreateRequest} craCheckReportCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportCreate(craCheckReportCreateRequest, options) {
            return localVarFp.craCheckReportCreate(craCheckReportCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Income Insights report for your user.  You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
         * @summary Retrieve cash flow information from your user\'s banks
         * @param {CraCheckReportIncomeInsightsGetRequest} craCheckReportIncomeInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options) {
            return localVarFp.craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_network_attributes` product or have generated a report using `/cra/check_report/create`, we will generate the attributes when you call this endpoint.
         * @summary Retrieve network attributes for the user
         * @param {CraCheckReportNetworkInsightsGetRequest} craCheckReportNetworkInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options) {
            return localVarFp.craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
         * @summary Retrieve cash flow insights from partners
         * @param {CraCheckReportPartnerInsightsGetRequest} craCheckReportPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options) {
            return localVarFp.craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/check_report/pdf/get` retrieves the most recent Consumer Report in PDF format. By default, the most recent Base Report (if it exists) for the user will be returned. To request that the most recent Income Insights report be included in the PDF as well, use the `add-ons` field.
         * @summary Retrieve Consumer Reports as a PDF
         * @param {CraCheckReportPDFGetRequest} craCheckReportPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craCheckReportPdfGet(craCheckReportPDFGetRequest, options) {
            return localVarFp.craCheckReportPdfGet(craCheckReportPDFGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/loans/applications/register` registers loan applications and decisions.
         * @summary Register loan applications and decisions.
         * @param {CraLoansApplicationsRegisterRequest} craLoansApplicationsRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options) {
            return localVarFp.craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/loans/register` registers a list of loans to their applicants.
         * @summary Register a list of loans to their applicants.
         * @param {CRALoansRegisterRequest} cRALoansRegisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansRegister(cRALoansRegisterRequest, options) {
            return localVarFp.craLoansRegister(cRALoansRegisterRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.
         * @summary Unregister a list of loans.
         * @param {CraLoansUnregisterRequest} craLoansUnregisterRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUnregister(craLoansUnregisterRequest, options) {
            return localVarFp.craLoansUnregister(craLoansUnregisterRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/loans/update` updates loan information such as the status and payment history.
         * @summary Updates loan data.
         * @param {CraLoansUpdateRequest} craLoansUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craLoansUpdate(craLoansUpdateRequest, options) {
            return localVarFp.craLoansUpdate(craLoansUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve a Monitoring Insights report by passing in the `user_token` referred to in the webhook you received.
         * @summary Retrieve a Monitoring Insights Report
         * @param {CraMonitoringInsightsGetRequest} craMonitoringInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options) {
            return localVarFp.craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to subscribe to insights for a user\'s linked CRA items, which are updated every day (best-effort).
         * @summary Subscribe to Monitoring Insights
         * @param {CraMonitoringInsightsSubscribeRequest} craMonitoringInsightsSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options) {
            return localVarFp.craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights.
         * @summary Unsubscribe from Monitoring Insights
         * @param {CraMonitoringInsightsUnsubscribeRequest} craMonitoringInsightsUnsubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options) {
            return localVarFp.craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/cra/partner_insights/get` returns cash flow insights for a specified user.
         * @summary Retrieve cash flow insights from the bank accounts used for income verification
         * @param {CraPartnerInsightsGetRequest} craPartnerInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        craPartnerInsightsGet(craPartnerInsightsGetRequest, options) {
            return localVarFp.craPartnerInsightsGet(craPartnerInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.  The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
         * @summary Create payment token
         * @param {PaymentInitiationPaymentTokenCreateRequest} paymentInitiationPaymentTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options) {
            return localVarFp.createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac\'s JSON format.
         * @summary Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAssetReportFreddieMacGet(requestBody, options) {
            return localVarFp.creditAssetReportFreddieMacGet(requestBody, options).then((request) => request(axios, basePath));
        },
        /**
         * Plaid can create an Audit Copy token of an Asset Report and/or Income Report to share with participating Government Sponsored Entity (GSE). If you participate in the Day 1 Certainty™ program, Plaid can supply an Audit Copy token directly to Fannie Mae on your behalf. An Audit Copy token contains the same underlying data as the Asset Report and/or Income Report (result of /credit/payroll_income/get).  Use the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access.
         * @summary Create Asset or Income Report Audit Copy Token
         * @param {CreditAuditCopyTokenCreateRequest} creditAuditCopyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options) {
            return localVarFp.creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/credit/audit_copy_token/update` endpoint updates an existing  Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field.
         * @summary Update an Audit Copy Token
         * @param {CreditAuditCopyTokenUpdateRequest} creditAuditCopyTokenUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options) {
            return localVarFp.creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.
         * @summary Retrieve information from the bank accounts used for employment verification
         * @param {CreditBankEmploymentGetRequest} creditBankEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankEmploymentGet(creditBankEmploymentGetRequest, options) {
            return localVarFp.creditBankEmploymentGet(creditBankEmploymentGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_income/get` returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link). To return older reports, use the `options.count` field.
         * @summary Retrieve information from the bank accounts used for income verification
         * @param {CreditBankIncomeGetRequest} creditBankIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeGet(creditBankIncomeGetRequest, options) {
            return localVarFp.creditBankIncomeGet(creditBankIncomeGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_income/pdf/get` returns the most recent bank income report for a specified user in PDF format.  A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link).
         * @summary Retrieve information from the bank accounts used for income verification in PDF format
         * @param {CreditBankIncomePDFGetRequest} creditBankIncomePDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options) {
            return localVarFp.creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_income/refresh` refreshes the most recent bank income report data for a specific user. If the most recent bank income report is no longer valid (i.e. deleted), the endpoint will refresh the most recent valid report instead.
         * @summary Refresh a user\'s bank income information
         * @param {CreditBankIncomeRefreshRequest} creditBankIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options) {
            return localVarFp.creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_income/webhook/update` allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed.  If a user is subscribed, on significant changes to the user\'s income profile, you will receive a `BANK_INCOME_REFRESH_UPDATE` webhook, prompting you to refresh bank income data for the user.
         * @summary Subscribe and unsubscribe to proactive notifications for a user\'s income profile
         * @param {CreditBankIncomeWebhookUpdateRequest} creditBankIncomeWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options) {
            return localVarFp.creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.
         * @summary Retrieve data for a user\'s uploaded bank statements
         * @param {CreditBankStatementsUploadsGetRequest} creditBankStatementsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options) {
            return localVarFp.creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/employment/get` returns a list of items with employment information from a user\'s payroll provider that was verified by an end user.
         * @summary Retrieve a summary of an individual\'s employment information
         * @param {CreditEmploymentGetRequest} creditEmploymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditEmploymentGet(creditEmploymentGetRequest, options) {
            return localVarFp.creditEmploymentGet(creditEmploymentGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Verification of Assets and Verification of Employment reports.
         * @summary Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint.
         * @param {CreditFreddieMacReportsGetRequest} creditFreddieMacReportsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options) {
            return localVarFp.creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document.
         * @summary Retrieve a user\'s payroll information
         * @param {CreditPayrollIncomeGetRequest} creditPayrollIncomeGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options) {
            return localVarFp.creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.
         * @summary Update the parsing configuration for a document income verification
         * @param {{ [key: string]: object; }} requestBody
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeParsingConfigUpdate(requestBody, options) {
            return localVarFp.creditPayrollIncomeParsingConfigUpdate(requestBody, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/payroll_income/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification. If the user is eligible for digital verification, that information will be associated with the user token, and in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing `employer` data will increase the chance of receiving a useful result.  When testing in Sandbox, you can control the results by providing special test values in the `employer` and `access_tokens` fields. `employer_good` and `employer_bad` will result in `HIGH` and `LOW` confidence values, respectively. `employer_multi` will result in a `HIGH` confidence with multiple payroll options. Likewise, `access_good` and `access_bad` will result in `HIGH` and `LOW` confidence values, respectively. Any other value for `employer` and `access_tokens` in Sandbox will result in `UNKNOWN` confidence.
         * @summary Check income verification eligibility and optimize conversion
         * @param {CreditPayrollIncomePrecheckRequest} creditPayrollIncomePrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options) {
            return localVarFp.creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/payroll_income/refresh` refreshes a given digital payroll income verification.
         * @summary Refresh a digital payroll income verification
         * @param {CreditPayrollIncomeRefreshRequest} creditPayrollIncomeRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options) {
            return localVarFp.creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/payroll_income/risk_signals/get` can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score.  To trigger risk signal generation for an Item, call `/link/token/create` with `parsing_config` set to include `risk_signals`, or call `/credit/payroll_income/parsing_config/update`. Once risk signal generation has been triggered, `/credit/payroll_income/risk_signals/get` can be called at any time after the `INCOME_VERIFICATION_RISK_SIGNALS` webhook has been fired.  `/credit/payroll_income/risk_signals/get` is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager.
         * @summary Retrieve fraud insights for a user\'s manually uploaded document(s).
         * @param {CreditPayrollIncomeRiskSignalsGetRequest} creditPayrollIncomeRiskSignalsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options) {
            return localVarFp.creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Plaid can share an Asset Report directly with a participating third party on your behalf. The shared Asset Report is the exact same Asset Report originally created in `/asset_report/create`.  To grant a third party access to an Asset Report, use the `/credit/relay/create` endpoint to create a `relay_token` and then pass that token to your third party. Each third party has its own `secondary_client_id`; for example, `ce5bd328dcd34123456`. You\'ll need to create a separate `relay_token` for each third party that needs access to the report on your behalf.
         * @summary Create a relay token to share an Asset Report with a partner client
         * @param {CreditRelayCreateRequest} creditRelayCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayCreate(creditRelayCreateRequest, options) {
            return localVarFp.creditRelayCreate(creditRelayCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/relay/get` allows third parties to receive a report that was shared with them, using a `relay_token` that was created by the report owner.
         * @summary Retrieve the reports associated with a relay token that was shared with you
         * @param {CreditRelayGetRequest} creditRelayGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayGet(creditRelayGetRequest, options) {
            return localVarFp.creditRelayGet(creditRelayGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/credit/relay/pdf/get` allows third parties to receive a pdf report that was shared with them, using a `relay_token` that was created by the report owner.  The `/credit/relay/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/credit/relay/pdf/get`, you must first create the Asset Report using `/credit/relay/create` and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
         * @summary Retrieve the pdf reports associated with a relay token that was shared with you (beta)
         * @param {CreditRelayPDFGetRequest} creditRelayPDFGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayPdfGet(creditRelayPDFGetRequest, options) {
            return localVarFp.creditRelayPdfGet(creditRelayPDFGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/credit/relay/refresh` endpoint allows third parties to refresh a report that was relayed to them, using a `relay_token` that was created by the report owner. A new report will be created with the original report parameters, but with the most recent data available based on the `days_requested` value of the original report.
         * @summary Refresh a report of a relay token
         * @param {CreditRelayRefreshRequest} creditRelayRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRefresh(creditRelayRefreshRequest, options) {
            return localVarFp.creditRelayRefresh(creditRelayRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/credit/relay/remove` endpoint allows you to invalidate a `relay_token`. The third party holding the token will no longer be able to access or refresh the reports which the `relay_token` gives access to. The original report, associated Items, and other relay tokens that provide access to the same report are not affected and will remain accessible after removing the given `relay_token`.
         * @summary Remove relay token
         * @param {CreditRelayRemoveRequest} creditRelayRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditRelayRemove(creditRelayRemoveRequest, options) {
            return localVarFp.creditRelayRemove(creditRelayRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/credit/audit_copy_token/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Report data and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
         * @summary Remove an Audit Copy token
         * @param {CreditAuditCopyTokenRemoveRequest} creditAuditCopyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options) {
            return localVarFp.creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow.  These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step).
         * @summary Retrieve Link sessions for your user
         * @param {CreditSessionsGetRequest} creditSessionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        creditSessionsGet(creditSessionsGetRequest, options) {
            return localVarFp.creditSessionsGet(creditSessionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/dashboard_user/get` endpoint provides details (such as email address) about a specific Dashboard user based on the `dashboard_user_id` field, which is returned in the `audit_trail` object of certain Monitor and Beacon endpoints. This can be used to identify the specific reviewer who performed a Dashboard action.
         * @summary Retrieve a dashboard user
         * @param {DashboardUserGetRequest} dashboardUserGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserGet(dashboardUserGetRequest, options) {
            return localVarFp.dashboardUserGet(dashboardUserGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/dashboard_user/list` endpoint provides details (such as email address) all Dashboard users associated with your account. This can use used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products.
         * @summary List dashboard users
         * @param {DashboardUserListRequest} dashboardUserListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        dashboardUserList(dashboardUserListRequest, options) {
            return localVarFp.dashboardUserList(dashboardUserListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch without using Plaid Exchange
         * @param {DepositSwitchAltCreateRequest} depositSwitchAltCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchAltCreate(depositSwitchAltCreateRequest, options) {
            return localVarFp.depositSwitchAltCreate(depositSwitchAltCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
         * @summary (Deprecated) Create a deposit switch
         * @param {DepositSwitchCreateRequest} depositSwitchCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchCreate(depositSwitchCreateRequest, options) {
            return localVarFp.depositSwitchCreate(depositSwitchCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user\'s direct deposit allocation preferences.
         * @summary (Deprecated) Retrieve a deposit switch
         * @param {DepositSwitchGetRequest} depositSwitchGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchGet(depositSwitchGetRequest, options) {
            return localVarFp.depositSwitchGet(depositSwitchGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
         * @summary (Deprecated) Create a deposit switch token
         * @param {DepositSwitchTokenCreateRequest} depositSwitchTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options) {
            return localVarFp.depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user\'s employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.  The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
         * @summary Search employer database
         * @param {EmployersSearchRequest} employersSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employersSearch(employersSearchRequest, options) {
            return localVarFp.employersSearch(employersSearchRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user.  This endpoint has been deprecated; new integrations should use `/credit/employment/get` instead.
         * @summary (Deprecated) Retrieve a summary of an individual\'s employment information
         * @param {EmploymentVerificationGetRequest} employmentVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        employmentVerificationGet(employmentVerificationGetRequest, options) {
            return localVarFp.employmentVerificationGet(employmentVerificationGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * A generic webhook receiver endpoint for FDX Event Notifications
         * @summary Webhook receiver for fdx notifications
         * @param {FDXNotification} fDXNotification
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        fdxNotifications(fDXNotification, options) {
            return localVarFp.fdxNotifications(fDXNotification, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific recipient
         * @summary Get Recipient
         * @param {string} recipientId Recipient Identifier. Uniquely identifies the recipient
         * @param {string} [oAUTHSTATEID] The value that is passed into the OAuth URI \&#39;state\&#39; query parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipient(recipientId, oAUTHSTATEID, options) {
            return localVarFp.getRecipient(recipientId, oAUTHSTATEID, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a list of Recipients
         * @summary Get Recipients
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRecipients(options) {
            return localVarFp.getRecipients(options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/).
         * @summary Returns uploaded document identity
         * @param {IdentityDocumentsUploadsGetRequest} identityDocumentsUploadsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options) {
            return localVarFp.identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.  Note: In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29).
         * @summary Retrieve identity data
         * @param {IdentityGetRequest} identityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityGet(identityGetRequest, options) {
            return localVarFp.identityGet(identityGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {IdentityMatchRequest} identityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityMatch(identityMatchRequest, options) {
            return localVarFp.identityMatch(identityMatchRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/identity/refresh` is an optional endpoint for users of the Identity product. It initiates an on-demand extraction to fetch the most up to date Identity information from the Financial Institution. This on-demand extraction takes place in addition to the periodic extractions that automatically occur for any Identity-enabled Item. If changes to Identity are discovered after calling `/identity/refresh`, Plaid will fire a webhook [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/identity/#default_update).  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/identity/refresh` is offered as an add-on to Identity and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh identity data
         * @param {IdentityRefreshRequest} identityRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityRefresh(identityRefreshRequest, options) {
            return localVarFp.identityRefresh(identityRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Try to autofill an Identity Verification based of the provided phone number, date of birth and country of residence.
         * @summary Create autofill for an Identity Verification
         * @param {IdentityVerificationAutofillCreateRequest} identityVerificationAutofillCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options) {
            return localVarFp.identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a new Identity Verification for the user specified by the `client_user_id` field. The requirements and behavior of the verification are determined by the `template_id` provided. If you don\'t know whether the associated user already has an active Identity Verification, you can specify `\"is_idempotent\": true` in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated `client_user_id` and `template_id`. If an Identity Verification is found, it will be returned unmodified with an `200 OK` HTTP status code.  You can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow.
         * @summary Create a new Identity Verification
         * @param {IdentityVerificationCreateRequest} identityVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationCreate(identityVerificationCreateRequest, options) {
            return localVarFp.identityVerificationCreate(identityVerificationCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a previously created Identity Verification.
         * @summary Retrieve Identity Verification
         * @param {IdentityVerificationGetRequest} identityVerificationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationGet(identityVerificationGetRequest, options) {
            return localVarFp.identityVerificationGet(identityVerificationGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Filter and list Identity Verifications created by your account
         * @summary List Identity Verifications
         * @param {IdentityVerificationListRequest} identityVerificationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationList(identityVerificationListRequest, options) {
            return localVarFp.identityVerificationList(identityVerificationListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Allow a customer to retry their Identity Verification
         * @summary Retry an Identity Verification
         * @param {IdentityVerificationRetryRequest} identityVerificationRetryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        identityVerificationRetry(identityVerificationRetryRequest, options) {
            return localVarFp.identityVerificationRetry(identityVerificationRetryRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing.
         * @summary (Deprecated) Create an income verification instance
         * @param {IncomeVerificationCreateRequest} incomeVerificationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationCreate(incomeVerificationCreateRequest, options) {
            return localVarFp.incomeVerificationCreate(incomeVerificationCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/income/verification/documents/download` provides the ability to download the source documents associated with the verification.  If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint.  The response to `/income/verification/documents/download` is a ZIP file in binary data. If a `document_id` is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification.  The `request_id` is returned in the `Plaid-Request-ID` header.
         * @summary (Deprecated) Download the original documents used for income verification
         * @param {IncomeVerificationDocumentsDownloadRequest} incomeVerificationDocumentsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options) {
            return localVarFp.incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the paystubs used for income verification
         * @param {IncomeVerificationPaystubsGetRequest} incomeVerificationPaystubsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options) {
            return localVarFp.incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/income/verification/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification and returns a `precheck_id` that can be provided to `/link/token/create`. If the user is eligible for digital verification, providing the `precheck_id` in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the `precheck_id` can still be provided to `/link/token/create` and the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead.
         * @summary (Deprecated) Check digital income verification eligibility and optimize conversion
         * @param {IncomeVerificationPrecheckRequest} incomeVerificationPrecheckRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options) {
            return localVarFp.incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/income/verification/taxforms/get` returns the information collected from forms that were used to verify an end user\'\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
         * @summary (Deprecated) Retrieve information from the tax documents used for income verification
         * @param {IncomeVerificationTaxformsGetRequest} incomeVerificationTaxformsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options) {
            return localVarFp.incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.  If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
         * @summary Get details of all supported institutions
         * @param {InstitutionsGetRequest} institutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGet(institutionsGetRequest, options) {
            return localVarFp.institutionsGet(institutionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a JSON response containing details on a specified financial institution currently supported by Plaid.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Get details of an institution
         * @param {InstitutionsGetByIdRequest} institutionsGetByIdRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsGetById(institutionsGetByIdRequest, options) {
            return localVarFp.institutionsGetById(institutionsGetByIdRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
         * @summary Search institutions
         * @param {InstitutionsSearchRequest} institutionsSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        institutionsSearch(institutionsSearchRequest, options) {
            return localVarFp.institutionsSearch(institutionsSearchRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings
         * @summary Get data needed to authorize an investments transfer
         * @param {InvestmentsAuthGetRequest} investmentsAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsAuthGet(investmentsAuthGetRequest, options) {
            return localVarFp.investmentsAuthGet(investmentsAuthGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
         * @summary Get Investment holdings
         * @param {InvestmentsHoldingsGetRequest} investmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsHoldingsGet(investmentsHoldingsGetRequest, options) {
            return localVarFp.investmentsHoldingsGet(investmentsHoldingsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/investments/refresh` is an optional endpoint for users of the Investments product. It initiates an on-demand extraction to fetch the newest investment holdings and transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Investments-enabled Item. If changes to investments are discovered after calling `/investments/refresh`, Plaid will fire webhooks: [`HOLDINGS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#holdings-default_update) if any new holdings are detected, and [`INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#investments_transactions-default_update) if any new investment transactions are detected. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic investment transactions and holdings data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. Updated holdings and investment transactions can be fetched by calling `/investments/holdings/get` and `/investments/transactions/get`. Note that the `/investments/refresh` endpoint is not supported by all institutions. If called on an Item from an institution that does not support this functionality, it will return a `PRODUCT_NOT_SUPPORTED` error.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/investments/refresh` is offered as an add-on to Investments and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh investment data
         * @param {InvestmentsRefreshRequest} investmentsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsRefresh(investmentsRefreshRequest, options) {
            return localVarFp.investmentsRefresh(investmentsRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get investment transactions
         * @param {InvestmentsTransactionsGetRequest} investmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        investmentsTransactionsGet(investmentsTransactionsGetRequest, options) {
            return localVarFp.investmentsTransactionsGet(investmentsTransactionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object.
         * @summary Get an Issue
         * @param {IssuesGetRequest} issuesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesGet(issuesGetRequest, options) {
            return localVarFp.issuesGet(issuesGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Search for an issue associated with one of the following identifiers:  `item_id`, `link_session_id` or Link session `request_id`.  This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the provided identifier. At least one of the identifiers must be provided to perform the search.
         * @summary Search for an Issue
         * @param {IssuesSearchRequest} issuesSearchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSearch(issuesSearchRequest, options) {
            return localVarFp.issuesSearch(issuesSearchRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Allows a user to subscribe to updates on a specific `Issue` using a POST method. Subscribers will receive webhook notifications when the issue status changes, particularly when resolved.
         * @summary Subscribe to an Issue
         * @param {IssuesSubscribeRequest} issuesSubscribeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        issuesSubscribe(issuesSubscribeRequest, options) {
            return localVarFp.issuesSubscribe(issuesSubscribeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.  You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
         * @summary Invalidate access_token
         * @param {ItemAccessTokenInvalidateRequest} itemAccessTokenInvalidateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options) {
            return localVarFp.itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List a historical log of user consent events
         * @summary List a historical log of user consent events
         * @param {ItemActivityListRequest} itemActivityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemActivityList(itemActivityListRequest, options) {
            return localVarFp.itemActivityList(itemActivityListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List a user’s connected applications
         * @summary List a user’s connected applications
         * @param {ItemApplicationListRequest} itemApplicationListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationList(itemApplicationListRequest, options) {
            return localVarFp.itemApplicationList(itemApplicationListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Enable consumers to update product access on selected accounts for an application.
         * @summary Update the scopes of access for a particular application
         * @param {ItemApplicationScopesUpdateRequest} itemApplicationScopesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options) {
            return localVarFp.itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Unlink a user’s connected application. On an unlink request, Plaid will immediately revoke the Application’s access to the User’s data.  The User will have to redo the OAuth authentication process in order to restore functionality.  This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default).  This endpoint should be called in real time as the User is unlinking an Application, and should not be batched in order to ensure that the change is reflected as soon as possible.
         * @summary Unlink a user’s connected application
         * @param {ItemApplicationUnlinkRequest} itemApplicationUnlinkRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemApplicationUnlink(itemApplicationUnlinkRequest, options) {
            return localVarFp.itemApplicationUnlink(itemApplicationUnlinkRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).  If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.  A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.  The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
         * @summary Create public token
         * @param {ItemPublicTokenCreateRequest} itemPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemCreatePublicToken(itemPublicTokenCreateRequest, options) {
            return localVarFp.itemCreatePublicToken(itemPublicTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns information about the status of an Item.
         * @summary Retrieve an Item
         * @param {ItemGetRequest} itemGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemGet(itemGetRequest, options) {
            return localVarFp.itemGet(itemGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.  Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated.
         * @summary Import Item
         * @param {ItemImportRequest} itemImportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemImport(itemImportRequest, options) {
            return localVarFp.itemImport(itemImportRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes. An `access_token` does not expire, but can be revoked by calling `/item/remove`.  The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
         * @summary Exchange public token for an access token
         * @param {ItemPublicTokenExchangeRequest} itemPublicTokenExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemPublicTokenExchange(itemPublicTokenExchangeRequest, options) {
            return localVarFp.itemPublicTokenExchange(itemPublicTokenExchangeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token`, as well as any processor tokens or bank account tokens associated with the Item, is no longer valid and cannot be used to access any data that was associated with the Item.   Calling `/item/remove` is a recommended best practice when offboarding users or if a user chooses to disconnect an account linked via Plaid. For subscription products, such as Transactions, Liabilities, and Investments, calling `/item/remove` is required to end subscription billing for the Item. For money movement products such as Auth and Transfer, if the Item is at an institution that uses Tokenized Account Numbers (TANs), such as Chase or PNC, calling `/item/remove` will invalidate the TAN, and subsequent ACH transfer attempts using that TAN will be returned.  In Limited Production, calling `/item/remove` does not impact the number of remaining Limited Production Items you have available.  Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove access to them specifically using the `/asset_report/remove` endpoint.  Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution\'s OAuth permission manager.  API versions 2019-05-29 and earlier return a `removed` boolean as part of the response.
         * @summary Remove an Item
         * @param {ItemRemoveRequest} itemRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemRemove(itemRemoveRequest, options) {
            return localVarFp.itemRemove(itemRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/items/#webhook_update_acknowledged) webhook to the newly specified webhook URL.
         * @summary Update Webhook URL
         * @param {ItemWebhookUpdateRequest} itemWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        itemWebhookUpdate(itemWebhookUpdateRequest, options) {
            return localVarFp.itemWebhookUpdate(itemWebhookUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/link/#linktokencreate).  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.
         * @summary Retrieve Liabilities data
         * @param {LiabilitiesGetRequest} liabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        liabilitiesGet(liabilitiesGetRequest, options) {
            return localVarFp.liabilitiesGet(liabilitiesGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/link_delivery/create` endpoint to create a Hosted Link session.
         * @summary Create Hosted Link session
         * @param {LinkDeliveryCreateRequest} linkDeliveryCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryCreate(linkDeliveryCreateRequest, options) {
            return localVarFp.linkDeliveryCreate(linkDeliveryCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session.
         * @summary Get Hosted Link session
         * @param {LinkDeliveryGetRequest} linkDeliveryGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkDeliveryGet(linkDeliveryGetRequest, options) {
            return localVarFp.linkDeliveryGet(linkDeliveryGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Exchange an OAuth `link_correlation_id` for the corresponding `link_token`. The `link_correlation_id` is only available for \'payment_initiation\' products and is provided to the client via the OAuth `redirect_uri` as a query parameter. The `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the \'link_token\'.
         * @summary Exchange the Link Correlation Id for a Link Token
         * @param {LinkOAuthCorrelationIdExchangeRequest} linkOAuthCorrelationIdExchangeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options) {
            return localVarFp.linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`. For most Plaid products, the `public_token` is saved and exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).  A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the [update mode](https://plaid.com/docs/link/update-mode) flow for tokens with expired credentials, or the Identity Verification flow.
         * @summary Create Link Token
         * @param {LinkTokenCreateRequest} linkTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenCreate(linkTokenCreateRequest, options) {
            return localVarFp.linkTokenCreate(linkTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/link/token/get` endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don\'t provide a public token via frontend callbacks, such as the [Hosted Link flow](https://plaid.com/docs/link/hosted-link/) and the [Multi-Item Link flow](https://plaid.com/docs/link/multi-item-link/). It also can be useful for debugging purposes.
         * @summary Get Link Token
         * @param {LinkTokenGetRequest} linkTokenGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        linkTokenGet(linkTokenGetRequest, options) {
            return localVarFp.linkTokenGet(linkTokenGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you to retrieve the Network Insights from a list of `access_tokens`.
         * @summary Retrieve network insights for the provided `access_tokens`
         * @param {NetworkInsightsReportGetRequest} networkInsightsReportGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkInsightsReportGet(networkInsightsReportGetRequest, options) {
            return localVarFp.networkInsightsReportGet(networkInsightsReportGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. This is useful for determining if a user is eligible for a streamlined experience, such as Layer.  Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview).
         * @summary Check a user\'s Plaid Network status
         * @param {NetworkStatusGetRequest} networkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        networkStatusGet(networkStatusGetRequest, options) {
            return localVarFp.networkStatusGet(networkStatusGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/partner/customer/create` endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid.
         * @summary Creates a new end customer for a Plaid reseller.
         * @param {PartnerCustomerCreateRequest} partnerCustomerCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerCreate(partnerCustomerCreateRequest, options) {
            return localVarFp.partnerCustomerCreate(partnerCustomerCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.
         * @summary Enables a Plaid reseller\'s end customer in the Production environment.
         * @param {PartnerCustomerEnableRequest} partnerCustomerEnableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerEnable(partnerCustomerEnableRequest, options) {
            return localVarFp.partnerCustomerEnable(partnerCustomerEnableRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer.
         * @summary Returns a Plaid reseller\'s end customer.
         * @param {PartnerCustomerGetRequest} partnerCustomerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerGet(partnerCustomerGetRequest, options) {
            return localVarFp.partnerCustomerGet(partnerCustomerGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/partner/customer/oauth_institutions/get` endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the [reseller documentation](https://plaid.com/docs/account/resellers/#enabling-end-customers).
         * @summary Returns OAuth-institution registration information for a given end customer.
         * @param {PartnerCustomerOAuthInstitutionsGetRequest} partnerCustomerOAuthInstitutionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options) {
            return localVarFp.partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/partner/customer/remove` endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production.
         * @summary Removes a Plaid reseller\'s end customer.
         * @param {PartnerCustomerRemoveRequest} partnerCustomerRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        partnerCustomerRemove(partnerCustomerRemoveRequest, options) {
            return localVarFp.partnerCustomerRemove(partnerCustomerRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated.  Consents can be limited in time and scope, and have constraints that describe limitations for payments.
         * @summary Create payment consent
         * @param {PaymentInitiationConsentCreateRequest} paymentInitiationConsentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options) {
            return localVarFp.paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/consent/get` endpoint can be used to check the status of a payment consent, as well as to receive basic information such as recipient and constraints.
         * @summary Get payment consent
         * @param {PaymentInitiationConsentGetRequest} paymentInitiationConsentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options) {
            return localVarFp.paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent.
         * @summary Execute a single payment using consent
         * @param {PaymentInitiationConsentPaymentExecuteRequest} paymentInitiationConsentPaymentExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options) {
            return localVarFp.paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/consent/revoke` endpoint can be used to revoke the payment consent. Once the consent is revoked, it is not possible to initiate payments using it.
         * @summary Revoke payment consent
         * @param {PaymentInitiationConsentRevokeRequest} paymentInitiationConsentRevokeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options) {
            return localVarFp.paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient.  Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency).  If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day.  Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.  In Limited Production, payments must be below 5 GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency), and standing orders, variable recurring payments, and Virtual Accounts are not supported.
         * @summary Create a payment
         * @param {PaymentInitiationPaymentCreateRequest} paymentInitiationPaymentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options) {
            return localVarFp.paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
         * @summary Get payment details
         * @param {PaymentInitiationPaymentGetRequest} paymentInitiationPaymentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options) {
            return localVarFp.paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
         * @summary List payments
         * @param {PaymentInitiationPaymentListRequest} paymentInitiationPaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options) {
            return localVarFp.paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Reverse a settled payment from a Plaid virtual account.  The original payment must be in a settled state to be refunded. To refund partially, specify the amount as part of the request. If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet.  The refund will go back to the source account that initiated the payment. The original payment must have been initiated to a Plaid virtual account so that this account can be used to initiate the refund.  Providing counterparty information such as date of birth and address increases  the likelihood of refund being successful without human intervention.
         * @summary Reverse an existing payment
         * @param {PaymentInitiationPaymentReverseRequest} paymentInitiationPaymentReverseRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options) {
            return localVarFp.paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a payment recipient for payment initiation.  The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA) or a non-Eurozone country [supported](https://plaid.com/global) by Plaid. For a standing order (recurring) payment, the recipient must be in the UK.  It is recommended to use `bacs` in the UK and `iban` in EU.  The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
         * @summary Create payment recipient
         * @param {PaymentInitiationRecipientCreateRequest} paymentInitiationRecipientCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options) {
            return localVarFp.paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Get details about a payment recipient you have previously created.
         * @summary Get payment recipient
         * @param {PaymentInitiationRecipientGetRequest} paymentInitiationRecipientGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options) {
            return localVarFp.paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
         * @summary List payment recipients
         * @param {PaymentInitiationRecipientListRequest} paymentInitiationRecipientListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options) {
            return localVarFp.paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/payment_profile/create` endpoint to create a new payment profile. To initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field. You can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`.
         * @summary Create payment profile
         * @param {PaymentProfileCreateRequest} paymentProfileCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileCreate(paymentProfileCreateRequest, options) {
            return localVarFp.paymentProfileCreate(paymentProfileCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/payment_profile/get` endpoint to get the status of a given Payment Profile.
         * @summary Get payment profile
         * @param {PaymentProfileGetRequest} paymentProfileGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileGet(paymentProfileGetRequest, options) {
            return localVarFp.paymentProfileGet(paymentProfileGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it’s removed, it can no longer be used to create transfers.
         * @summary Remove payment profile
         * @param {PaymentProfileRemoveRequest} paymentProfileRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        paymentProfileRemove(paymentProfileRemoveRequest, options) {
            return localVarFp.paymentProfileRemove(paymentProfileRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint returns the account associated with a given processor token.  This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, the account balance returned may not be up-to-date; for realtime balance information, use `/processor/balance/get` instead. Note that some information is nullable.
         * @summary Retrieve the account associated with a processor token
         * @param {ProcessorAccountGetRequest} processorAccountGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAccountGet(processorAccountGetRequest, options) {
            return localVarFp.processorAccountGet(processorAccountGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
         * @summary Create Apex bank account token
         * @param {ProcessorApexProcessorTokenCreateRequest} processorApexProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options) {
            return localVarFp.processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking, savings, or cash management account that\'\'s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available.  Versioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14).
         * @summary Retrieve Auth data
         * @param {ProcessorAuthGetRequest} processorAuthGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorAuthGet(processorAuthGetRequest, options) {
            return localVarFp.processorAuthGet(processorAuthGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached.
         * @summary Retrieve Balance data
         * @param {ProcessorBalanceGetRequest} processorBalanceGetRequest The &#x60;/processor/balance/get&#x60; endpoint returns the real-time balance for the account associated with a given &#x60;processor_token&#x60;.  The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.  Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of &#x60;null&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBalanceGet(processorBalanceGetRequest, options) {
            return localVarFp.processorBalanceGet(processorBalanceGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
         * @summary Create a bank transfer as a processor
         * @param {ProcessorBankTransferCreateRequest} processorBankTransferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorBankTransferCreate(processorBankTransferCreateRequest, options) {
            return localVarFp.processorBankTransferCreate(processorBankTransferCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
         * @summary Retrieve Identity data
         * @param {ProcessorIdentityGetRequest} processorIdentityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityGet(processorIdentityGetRequest, options) {
            return localVarFp.processorIdentityGet(processorIdentityGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
         * @summary Retrieve identity match score
         * @param {ProcessorIdentityMatchRequest} processorIdentityMatchRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorIdentityMatch(processorIdentityMatchRequest, options) {
            return localVarFp.processorIdentityMatch(processorIdentityMatchRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint returns the stock position data of the account associated with a given processor token.
         * @summary Retrieve Investment Holdings
         * @param {ProcessorInvestmentsHoldingsGetRequest} processorInvestmentsHoldingsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options) {
            return localVarFp.processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for the investment account associated with the processor token.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with the account, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/processor/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/processor/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/processor/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/processor/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Investments Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get investment transactions data
         * @param {ProcessorInvestmentsTransactionsGetRequest} processorInvestmentsTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options) {
            return localVarFp.processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/liabilities/get` endpoint returns various details about a loan or credit account. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`.  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/processor/liabilities/get`.  Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the processor token. This is because Plaid must communicate directly with the institution to retrieve the additional data.
         * @summary Retrieve Liabilities data
         * @param {ProcessorLiabilitiesGetRequest} processorLiabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorLiabilitiesGet(processorLiabilitiesGetRequest, options) {
            return localVarFp.processorLiabilitiesGet(processorLiabilitiesGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * After calling `/processor/signal/evaluate`, call `/processor/signal/decision/report` to report whether the transaction was initiated.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {ProcessorSignalDecisionReportRequest} processorSignalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalDecisionReport(processorSignalDecisionReportRequest, options) {
            return localVarFp.processorSignalDecisionReport(processorSignalDecisionReportRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/processor/signal/evaluate` to evaluate a planned ACH transaction as a processor to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/processor/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to our error documentation on [item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time. To reduce this latency, you can call `/signal/prepare` on the Item before you need to request Signal data.
         * @summary Evaluate a planned ACH transaction
         * @param {ProcessorSignalEvaluateRequest} processorSignalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalEvaluate(processorSignalEvaluateRequest, options) {
            return localVarFp.processorSignalEvaluate(processorSignalEvaluateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * When a processor token is not initialized with Signal, call `/processor/signal/prepare` to opt-in that processor token to the Signal data collection process, which will improve the accuracy of the Signal score.  If this endpoint is called with a processor token that is already initialized with Signal, it will return a 200 response and will not modify the processor token.
         * @summary Opt-in a processor token to Signal
         * @param {ProcessorSignalPrepareRequest} processorSignalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalPrepare(processorSignalPrepareRequest, options) {
            return localVarFp.processorSignalPrepare(processorSignalPrepareRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Call the `/processor/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/processor/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was returned.
         * @summary Report a return for an ACH transaction
         * @param {ProcessorSignalReturnReportRequest} processorSignalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorSignalReturnReport(processorSignalReturnReportRequest, options) {
            return localVarFp.processorSignalReturnReport(processorSignalReturnReportRequest, options).then((request) => request(axios, basePath));
        },
        /**
         *  Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).  Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user\'s bank account information changes or they revoke Plaid\'s permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new `access_token`.  To revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`.
         * @summary Create Stripe bank account token
         * @param {ProcessorStripeBankAccountTokenCreateRequest} processorStripeBankAccountTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options) {
            return localVarFp.processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Used to create a token suitable for sending to one of Plaid\'s partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item cannot be modified or updated. To revoke the processor\'s access, the entire Item must be deleted by calling `/item/remove`.
         * @summary Create processor token
         * @param {ProcessorTokenCreateRequest} processorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenCreate(processorTokenCreateRequest, options) {
            return localVarFp.processorTokenCreate(processorTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Used to get a processor token\'s product permissions. The `products` field will be an empty list if the processor can access all available products.
         * @summary Get a processor token\'s product permissions
         * @param {ProcessorTokenPermissionsGetRequest} processorTokenPermissionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options) {
            return localVarFp.processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Used to control a processor\'s access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor\'s needs change.
         * @summary Control a processor\'s access to products
         * @param {ProcessorTokenPermissionsSetRequest} processorTokenPermissionsSetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options) {
            return localVarFp.processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint allows you, the processor, to update the webhook URL associated with a processor token. This request triggers a `WEBHOOK_UPDATE_ACKNOWLEDGED` webhook to the newly specified webhook URL.
         * @summary Update a processor token\'s webhook URL
         * @param {ProcessorTokenWebhookUpdateRequest} processorTokenWebhookUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options) {
            return localVarFp.processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/processor/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with a processor token, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/processor/transactions/get` will be the data available for the processor token as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint.  Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn\'t. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get transaction data
         * @param {ProcessorTransactionsGetRequest} processorTransactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsGet(processorTransactionsGetRequest, options) {
            return localVarFp.processorTransactionsGet(processorTransactionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on a processor token that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/processor/transactions/get` or `/processor/transactions/sync`). Once all historical transactions have been fetched, call `/processor/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/processor/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/processor/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Fetch recurring transaction streams
         * @param {ProcessorTransactionsRecurringGetRequest} processorTransactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options) {
            return localVarFp.processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/processor/transactions/refresh` is offered as an add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {ProcessorTransactionsRefreshRequest} processorTransactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsRefresh(processorTransactionsRefreshRequest, options) {
            return localVarFp.processorTransactionsRefresh(processorTransactionsRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         *  The `/processor/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/processor/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/processor/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.  When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/processor/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
         * @summary Get incremental transaction updates on a processor token
         * @param {ProcessorTransactionsSyncRequest} processorTransactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processorTransactionsSync(processorTransactionsSyncRequest, options) {
            return localVarFp.processorTransactionsSync(processorTransactionsSyncRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user.
         * @summary Check a user\'s Plaid Network status
         * @param {ProfileNetworkStatusGetRequest} profileNetworkStatusGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        profileNetworkStatusGet(profileNetworkStatusGetRequest, options) {
            return localVarFp.profileNetworkStatusGet(profileNetworkStatusGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment.
         * @summary Manually fire a bank income webhook in sandbox
         * @param {SandboxBankIncomeFireWebhookRequest} sandboxBankIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options) {
            return localVarFp.sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
         * @summary Manually fire a Bank Transfer webhook
         * @param {SandboxBankTransferFireWebhookRequest} sandboxBankTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options) {
            return localVarFp.sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a bank transfer event in Sandbox
         * @param {SandboxBankTransferSimulateRequest} sandboxBankTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options) {
            return localVarFp.sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for cashflow updates (Monitoring) in the Sandbox environment.
         * @summary Trigger an update for Cashflow Updates
         * @param {SandboxCraCashflowUpdatesUpdateRequest} sandboxCraCashflowUpdatesUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options) {
            return localVarFp.sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.
         * @summary Manually fire an Income webhook
         * @param {SandboxIncomeFireWebhookRequest} sandboxIncomeFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options) {
            return localVarFp.sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:  `DEFAULT_UPDATE`: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the `webhook_type` in the request body. Valid Sandbox `DEFAULT_UPDATE` webhook types include: `AUTH`, `IDENTITY`, `TRANSACTIONS`, `INVESTMENTS_TRANSACTIONS`, `LIABILITIES`, `HOLDINGS`. If the Item does not support the product, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it.  `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given same day micro-deposit item is verified via SMS verification.  `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app.  `PENDING_DISCONNECT`: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working.   `RECURRING_TRANSACTIONS_UPDATE`: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `SYNC_UPDATES_AVAILABLE`: Transactions webhook to be fired for a given Sandbox Item.  If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `PRODUCT_READY`: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions’ consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider\'s portal. This webhook is currently sent only for Chase and PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type `TRANSFER`).
         * @summary Fire a test webhook
         * @param {SandboxItemFireWebhookRequest} sandboxItemFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options) {
            return localVarFp.sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force a Sandbox Item into an error state
         * @param {SandboxItemResetLoginRequest} sandboxItemResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemResetLogin(sandboxItemResetLoginRequest, options) {
            return localVarFp.sandboxItemResetLogin(sandboxItemResetLoginRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.  For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
         * @summary Set verification status for Sandbox account
         * @param {SandboxItemSetVerificationStatusRequest} sandboxItemSetVerificationStatusRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options) {
            return localVarFp.sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Save the selected accounts when connecting to the Platypus Oauth institution
         * @summary Save the selected accounts when connecting to the Platypus Oauth institution
         * @param {SandboxOauthSelectAccountsRequest} sandboxOauthSelectAccountsRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options) {
            return localVarFp.sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/sandbox/payment_profile/reset_login/` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment.   After calling `/sandbox/payment_profile/reset_login`, calls to the `/transfer/authorization/create` with the Payment Profile will result in a `decision_rationale` `PAYMENT_PROFILE_LOGIN_REQUIRED`. You can then use update mode for Payment Profile to restore it into a good state.   In order to invoke this endpoint, you must first [create a Payment Profile](https://plaid.com/docs/transfer/add-to-app/#create-a-payment-profile-optional) and [go through the Link flow](https://plaid.com/docs/transfer/add-to-app/#create-a-link-token).
         * @summary Reset the login of a Payment Profile
         * @param {SandboxPaymentProfileResetLoginRequest} sandboxPaymentProfileResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options) {
            return localVarFp.sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/payment/simulate` endpoint to simulate various payment events in the Sandbox environment. This endpoint will trigger the corresponding payment status webhook.
         * @summary Simulate a payment event in Sandbox
         * @param {SandboxPaymentSimulateRequest} sandboxPaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options) {
            return localVarFp.sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
         * @summary Create a test Item and processor token
         * @param {SandboxProcessorTokenCreateRequest} sandboxProcessorTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options) {
            return localVarFp.sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/public_token/create` endpoint to create a valid `public_token`  for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data, or with Plaid\'s [pre-populated Sandbox test accounts](https://plaid.com/docs/sandbox/test-credentials/).
         * @summary Create a test Item
         * @param {SandboxPublicTokenCreateRequest} sandboxPublicTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options) {
            return localVarFp.sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment.
         * @summary Manually fire a Transfer webhook
         * @param {SandboxTransferFireWebhookRequest} sandboxTransferFireWebhookRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options) {
            return localVarFp.sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment.
         * @summary Simulate a ledger deposit event in Sandbox
         * @param {SandboxTransferLedgerDepositSimulateRequest} sandboxTransferLedgerDepositSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options) {
            return localVarFp.sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.
         * @summary Simulate converting pending balance to available balance
         * @param {SandboxTransferLedgerSimulateAvailableRequest} sandboxTransferLedgerSimulateAvailableRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options) {
            return localVarFp.sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment.
         * @summary Simulate a ledger withdraw event in Sandbox
         * @param {SandboxTransferLedgerWithdrawSimulateRequest} sandboxTransferLedgerWithdrawSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options) {
            return localVarFp.sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/refund/simulate` endpoint to simulate a refund event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a refund event in Sandbox
         * @param {SandboxTransferRefundSimulateRequest} sandboxTransferRefundSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options) {
            return localVarFp.sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned.
         * @summary Trigger the creation of a repayment
         * @param {SandboxTransferRepaymentSimulateRequest} sandboxTransferRepaymentSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options) {
            return localVarFp.sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
         * @summary Simulate a transfer event in Sandbox
         * @param {SandboxTransferSimulateRequest} sandboxTransferSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSimulate(sandboxTransferSimulateRequest, options) {
            return localVarFp.sandboxTransferSimulate(sandboxTransferSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of `swept` will become `swept_settled`, all `posted` or `pending` transfers with a sweep status of `unswept` will become `swept`, and all `returned` transfers with a sweep status of `swept` will become `return_swept`.
         * @summary Simulate creating a sweep
         * @param {SandboxTransferSweepSimulateRequest} sandboxTransferSweepSimulateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options) {
            return localVarFp.sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing `virtual_time`, but may never go back to a lower `virtual_time`.  If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.  For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting `virtual_time` = t + 15 days, 2 new originations should be created, along with the webhook events.  The advancement of the test clock from its current `virtual_time` should be limited such that there are no more than 20 originations resulting from the advance operation on each `recurring_transfer` associated with the `test_clock`.  For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the `virtual_time` up to 80 weeks on each API call.
         * @summary Advance a test clock
         * @param {SandboxTransferTestClockAdvanceRequest} sandboxTransferTestClockAdvanceRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options) {
            return localVarFp.sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox.  A test clock can be associated with up to 5 recurring transfers.
         * @summary Create a test clock
         * @param {SandboxTransferTestClockCreateRequest} sandboxTransferTestClockCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options) {
            return localVarFp.sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment.
         * @summary Get a test clock
         * @param {SandboxTransferTestClockGetRequest} sandboxTransferTestClockGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options) {
            return localVarFp.sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/sandbox/transfer/test_clock/list` endpoint to see a list of all your test clocks in the Sandbox environment, by ascending `virtual_time`. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired test clocks.
         * @summary List test clocks
         * @param {SandboxTransferTestClockListRequest} sandboxTransferTestClockListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options) {
            return localVarFp.sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/user/reset_login`, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
         * @summary Force item(s) for a Sandbox User into an error state
         * @param {SandboxUserResetLoginRequest} sandboxUserResetLoginRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sandboxUserResetLogin(sandboxUserResetLoginRequest, options) {
            return localVarFp.sandboxUserResetLogin(sandboxUserResetLoginRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated.
         * @summary Report whether you initiated an ACH transaction
         * @param {SignalDecisionReportRequest} signalDecisionReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalDecisionReport(signalDecisionReportRequest, options) {
            return localVarFp.signalDecisionReport(signalDecisionReportRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to the error documentation on [Item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time.
         * @summary Evaluate a planned ACH transaction
         * @param {SignalEvaluateRequest} signalEvaluateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalEvaluate(signalEvaluateRequest, options) {
            return localVarFp.signalEvaluate(signalEvaluateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * When an Item is not initialized with Signal, call `/signal/prepare` to opt-in that Item to the Signal data collection process, developing a Signal score. This should be done on Items where Signal was added in the `additional_consented_products` array but not in the `products`, `optional_products`, or `required_if_supported_products` array. If `/signal/prepare` is skipped on an Item that is not initialized with Signal, the initial call to `/signal/evaluate` on that Item will be less accurate, because Signal will have access to less data for computing the Signal score.  If run on an Item that is already initialized with Signal, this endpoint will return a 200 response and will not modify the Item.
         * @summary Opt-in an Item to Signal
         * @param {SignalPrepareRequest} signalPrepareRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalPrepare(signalPrepareRequest, options) {
            return localVarFp.signalPrepare(signalPrepareRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
         * @summary Report a return for an ACH transaction
         * @param {SignalReturnReportRequest} signalReturnReportRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalReturnReport(signalReturnReportRequest, options) {
            return localVarFp.signalReturnReport(signalReturnReportRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use `/signal/schedule` to schedule a planned ACH transaction.
         * @summary Schedule a planned ACH transaction
         * @param {SignalScheduleRequest} signalScheduleRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signalSchedule(signalScheduleRequest, options) {
            return localVarFp.signalSchedule(signalScheduleRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/statements/download` endpoint retrieves a single statement PDF in binary format.  The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system.
         * @summary Retrieve a single statement.
         * @param {StatementsDownloadRequest} statementsDownloadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsDownload(statementsDownloadRequest, options) {
            return localVarFp.statementsDownload(statementsDownloadRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/statements/list` endpoint retrieves a list of all statements associated with an item.
         * @summary Retrieve a list of all statements associated with an item.
         * @param {StatementsListRequest} statementsListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsList(statementsListRequest, options) {
            return localVarFp.statementsList(statementsListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.
         * @summary Refresh statements data.
         * @param {StatementsRefreshRequest} statementsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        statementsRefresh(statementsRefreshRequest, options) {
            return localVarFp.statementsRefresh(statementsRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.  The product is currently in beta.
         * @summary enhance locally-held transaction data
         * @param {TransactionsEnhanceGetRequest} transactionsEnhanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnhance(transactionsEnhanceGetRequest, options) {
            return localVarFp.transactionsEnhance(transactionsEnhanceGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.
         * @summary Enrich locally-held transaction data
         * @param {TransactionsEnrichRequest} transactionsEnrichRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsEnrich(transactionsEnrichRequest, options) {
            return localVarFp.transactionsEnrich(transactionsEnrichRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates.  The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.  Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn\'t. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
         * @summary Get transaction data
         * @param {TransactionsGetRequest} transactionsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsGet(transactionsGetRequest, options) {
            return localVarFp.transactionsGet(transactionsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on an Item that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/transactions/get` or `/transactions/sync`).   When using Recurring Transactions, for best results, make sure to use the [`days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) parameter to request at least 180 days of history when initializing Items with Transactions. Once all historical transactions have been fetched, call `/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.
         * @summary Fetch recurring transaction streams
         * @param {TransactionsRecurringGetRequest} transactionsRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRecurringGet(transactionsRecurringGetRequest, options) {
            return localVarFp.transactionsRecurringGet(transactionsRecurringGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item. The on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled Item. The Item must already have Transactions added as a product in order to call `/transactions/refresh`.  If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/transactions/sync` and `/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get` or `/transactions/sync`.  Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/transactions/refresh` is offered as an optional add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
         * @summary Refresh transaction data
         * @param {TransactionsRefreshRequest} transactionsRefreshRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRefresh(transactionsRefreshRequest, options) {
            return localVarFp.transactionsRefresh(transactionsRefreshRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/rules/v1/create` endpoint creates transaction categorization rules.  Rules will be applied on the Item\'s transactions returned in `/transactions/get` response.  The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
         * @summary Create transaction category rule
         * @param {TransactionsRulesCreateRequest} transactionsRulesCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesCreate(transactionsRulesCreateRequest, options) {
            return localVarFp.transactionsRulesCreate(transactionsRulesCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token.
         * @summary Return a list of rules created for the Item associated with the access token.
         * @param {TransactionsRulesListRequest} transactionsRulesListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesList(transactionsRulesListRequest, options) {
            return localVarFp.transactionsRulesList(transactionsRulesListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/rules/v1/remove` endpoint is used to remove a transaction rule.
         * @summary Remove transaction rule
         * @param {TransactionsRulesRemoveRequest} transactionsRulesRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsRulesRemove(transactionsRulesRemoveRequest, options) {
            return localVarFp.transactionsRulesRemove(transactionsRulesRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.   When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.
         * @summary Get incremental transaction updates on an Item
         * @param {TransactionsSyncRequest} transactionsSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsSync(transactionsSyncRequest, options) {
            return localVarFp.transactionsSync(transactionsSyncRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`.  The product is currently in beta.
         * @summary Obtain user insights based on transactions sent through /transactions/enrich
         * @param {TransactionsUserInsightsGetRequest} transactionsUserInsightsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options) {
            return localVarFp.transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/authorization/cancel` endpoint to cancel a transfer authorization. A transfer authorization is eligible for cancellation if it has not yet been used to create a transfer.
         * @summary Cancel a transfer authorization
         * @param {TransferAuthorizationCancelRequest} transferAuthorizationCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCancel(transferAuthorizationCancelRequest, options) {
            return localVarFp.transferAuthorizationCancel(transferAuthorizationCancelRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/authorization/create` endpoint to authorize a transfer. This endpoint must be called prior to calling `/transfer/create`. The transfer authorization will expire if not used after one hour. (You can contact your account manager to change the default authorization lifetime.)   There are four possible outcomes to calling this endpoint:     - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer.     - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization.    - If the `authorization.decision` is `approved`, and the `authorization.rationale_code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`.      - If the `authorization.decision` is `approved` and the `authorization.rationale_code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema.  In Plaid\'s Sandbox environment the decisions will be returned as follows:    - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account.    - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).    - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).    - To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.    - To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
         * @summary Create a transfer authorization
         * @param {TransferAuthorizationCreateRequest} transferAuthorizationCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferAuthorizationCreate(transferAuthorizationCreateRequest, options) {
            return localVarFp.transferAuthorizationCreate(transferAuthorizationCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * (Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid.
         * @summary (Deprecated) Retrieve a balance held with Plaid
         * @param {TransferBalanceGetRequest} transferBalanceGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferBalanceGet(transferBalanceGetRequest, options) {
            return localVarFp.transferBalanceGet(transferBalanceGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/cancel` endpoint to cancel a transfer.  A transfer is eligible for cancellation if the `cancellable` property returned by `/transfer/get` is `true`.
         * @summary Cancel a transfer
         * @param {TransferCancelRequest} transferCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCancel(transferCancelRequest, options) {
            return localVarFp.transferCancel(transferCancelRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/capabilities/get` endpoint to determine the RTP eligibility information of an account to be used with Transfer. This endpoint works on all Transfer-capable Items, including those created by `/transfer/migrate_account`. To simulate RTP eligibility in Sandbox, log in using the username `user_good` and password `pass_good` and use the first two checking and savings accounts in the \"First Platypus Bank\" institution (ending in 0000 or 1111), which will return `true`. Any other account will return `false`.
         * @summary Get RTP eligibility information of a transfer
         * @param {TransferCapabilitiesGetRequest} transferCapabilitiesGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCapabilitiesGet(transferCapabilitiesGetRequest, options) {
            return localVarFp.transferCapabilitiesGet(transferCapabilitiesGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/configuration/get` endpoint to view your transfer product configurations.
         * @summary Get transfer product configuration
         * @param {TransferConfigurationGetRequest} transferConfigurationGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferConfigurationGet(transferConfigurationGetRequest, options) {
            return localVarFp.transferConfigurationGet(transferConfigurationGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/create` endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided `transfer_id` has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use [Transfer events](https://plaid.com/docs/transfer/reconciling-transfers/).
         * @summary Create a transfer
         * @param {TransferCreateRequest} transferCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferCreate(transferCreateRequest, options) {
            return localVarFp.transferCreate(transferCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. You must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header.
         * @summary Upload transfer diligence document on behalf of the originator
         * @param {TransferDiligenceDocumentUploadRequest} transferDiligenceDocumentUploadRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options) {
            return localVarFp.transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).
         * @summary Submit transfer diligence on behalf of the originator
         * @param {TransferDiligenceSubmitRequest} transferDiligenceSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferDiligenceSubmit(transferDiligenceSubmitRequest, options) {
            return localVarFp.transferDiligenceSubmit(transferDiligenceSubmitRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
         * @summary List transfer events
         * @param {TransferEventListRequest} transferEventListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventList(transferEventListRequest, options) {
            return localVarFp.transferEventList(transferEventListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.
         * @summary Sync transfer events
         * @param {TransferEventSyncRequest} transferEventSyncRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferEventSync(transferEventSyncRequest, options) {
            return localVarFp.transferEventSync(transferEventSyncRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/get` endpoint fetches information about the transfer corresponding to the given `transfer_id` or `authorization_id`. One of `transfer_id` or `authorization_id` must be populated but not both.
         * @summary Retrieve a transfer
         * @param {TransferGetRequest} transferGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGet(transferGetRequest, options) {
            return localVarFp.transferGet(transferGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.
         * @summary Create a transfer intent object to invoke the Transfer UI
         * @param {TransferIntentCreateRequest} transferIntentCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentCreate(transferIntentCreateRequest, options) {
            return localVarFp.transferIntentCreate(transferIntentCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.
         * @summary Retrieve more information about a transfer intent
         * @param {TransferIntentGetRequest} transferIntentGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferIntentGet(transferIntentGetRequest, options) {
            return localVarFp.transferIntentGet(transferIntentGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger.
         * @summary Deposit funds into a Plaid Ledger balance
         * @param {TransferLedgerDepositRequest} transferLedgerDepositRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDeposit(transferLedgerDepositRequest, options) {
            return localVarFp.transferLedgerDeposit(transferLedgerDepositRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/ledger/distribute` endpoint to move available balance between the ledgers of the platform and one of its originators.
         * @summary Move available balance between the ledgers of the platform and one of its originators
         * @param {TransferLedgerDistributeRequest} transferLedgerDistributeRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerDistribute(transferLedgerDistributeRequest, options) {
            return localVarFp.transferLedgerDistribute(transferLedgerDistributeRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid.
         * @summary Retrieve Plaid Ledger balance
         * @param {TransferLedgerGetRequest} transferLedgerGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerGet(transferLedgerGetRequest, options) {
            return localVarFp.transferLedgerGet(transferLedgerGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance.
         * @summary Withdraw funds from a Plaid Ledger balance
         * @param {TransferLedgerWithdrawRequest} transferLedgerWithdrawRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferLedgerWithdraw(transferLedgerWithdrawRequest, options) {
            return localVarFp.transferLedgerWithdraw(transferLedgerWithdrawRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
         * @summary List transfers
         * @param {TransferListRequest} transferListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferList(transferListRequest, options) {
            return localVarFp.transferList(transferListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics.
         * @summary Get transfer product usage metrics
         * @param {TransferMetricsGetRequest} transferMetricsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMetricsGet(transferMetricsGetRequest, options) {
            return localVarFp.transferMetricsGet(transferMetricsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
         * @summary Migrate account into Transfers
         * @param {TransferMigrateAccountRequest} transferMigrateAccountRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMigrateAccount(transferMigrateAccountRequest, options) {
            return localVarFp.transferMigrateAccount(transferMigrateAccountRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`.
         * @summary Create a new originator
         * @param {TransferOriginatorCreateRequest} transferOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorCreate(transferOriginatorCreateRequest, options) {
            return localVarFp.transferOriginatorCreate(transferOriginatorCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator.
         * @summary Update the funding account associated with the originator
         * @param {TransferOriginatorFundingAccountUpdateRequest} transferOriginatorFundingAccountUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options) {
            return localVarFp.transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/originator/get` endpoint gets status updates for an originator\'s onboarding process. This information is also available via the Transfer page on the Plaid dashboard.
         * @summary Get status of an originator\'s onboarding
         * @param {TransferOriginatorGetRequest} transferOriginatorGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorGet(transferOriginatorGetRequest, options) {
            return localVarFp.transferOriginatorGet(transferOriginatorGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/originator/list` endpoint gets status updates for all of your originators\' onboarding. This information is also available via the Plaid dashboard.
         * @summary Get status of all originators\' onboarding
         * @param {TransferOriginatorListRequest} transferOriginatorListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferOriginatorList(transferOriginatorListRequest, options) {
            return localVarFp.transferOriginatorList(transferOriginatorListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/platform/originator/create` endpoint allows gathering information about the originator specific to the Scaled Platform Transfer offering, including the originator\'s agreement to legal terms required before accepting any further information related to the originator.
         * @summary Create an originator for scaled platform customers
         * @param {TransferPlatformOriginatorCreateRequest} transferPlatformOriginatorCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options) {
            return localVarFp.transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/platform/person/create` endpoint to create a person record associated with an originator and optionally submit person-specific requirements.
         * @summary Create a person associated with an originator
         * @param {TransferPlatformPersonCreateRequest} transferPlatformPersonCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options) {
            return localVarFp.transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/platform/requirement/submit` endpoint allows platforms to submit onboarding requirements for an originator as part of the Scaled Platform Transfer offering.
         * @summary Submit onboarding requirements for Scaled Platform originators
         * @param {TransferPlatformRequirementSubmitRequest} transferPlatformRequirementSubmitRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options) {
            return localVarFp.transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement.
         * @summary Generate a Plaid-hosted onboarding UI URL.
         * @param {TransferQuestionnaireCreateRequest} transferQuestionnaireCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options) {
            return localVarFp.transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer.  Scheduled transfer that hasn\'t been submitted to bank will be cancelled.
         * @summary Cancel a recurring transfer.
         * @param {TransferRecurringCancelRequest} transferRecurringCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCancel(transferRecurringCancelRequest, options) {
            return localVarFp.transferRecurringCancel(transferRecurringCancelRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/recurring/create` endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Platform Payments (beta) customers.
         * @summary Create a recurring transfer
         * @param {TransferRecurringCreateRequest} transferRecurringCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringCreate(transferRecurringCreateRequest, options) {
            return localVarFp.transferRecurringCreate(transferRecurringCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`.
         * @summary Retrieve a recurring transfer
         * @param {TransferRecurringGetRequest} transferRecurringGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringGet(transferRecurringGetRequest, options) {
            return localVarFp.transferRecurringGet(transferRecurringGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/recurring/list` endpoint to see a list of all your recurring transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired recurring transfers.
         * @summary List recurring transfers
         * @param {TransferRecurringListRequest} transferRecurringListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRecurringList(transferRecurringListRequest, options) {
            return localVarFp.transferRecurringList(transferRecurringListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/refund/cancel` endpoint to cancel a refund.  A refund is eligible for cancellation if it has not yet been submitted to the payment network.
         * @summary Cancel a refund
         * @param {TransferRefundCancelRequest} transferRefundCancelRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCancel(transferRefundCancelRequest, options) {
            return localVarFp.transferRefundCancel(transferRefundCancelRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Use the `/transfer/refund/create` endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days.  Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds.
         * @summary Create a refund
         * @param {TransferRefundCreateRequest} transferRefundCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundCreate(transferRefundCreateRequest, options) {
            return localVarFp.transferRefundCreate(transferRefundCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`.
         * @summary Retrieve a refund
         * @param {TransferRefundGetRequest} transferRefundGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRefundGet(transferRefundGetRequest, options) {
            return localVarFp.transferRefundGet(transferRefundGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/repayment/list` endpoint fetches repayments matching the given filters. Repayments are returned in reverse-chronological order (most recent first) starting at the given `start_time`.
         * @summary Lists historical repayments
         * @param {TransferRepaymentListRequest} transferRepaymentListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentList(transferRepaymentListRequest, options) {
            return localVarFp.transferRepaymentList(transferRepaymentListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/repayment/return/list` endpoint retrieves the set of returns that were batched together into the specified repayment. The sum of amounts of returns retrieved by this request equals the amount of the repayment.
         * @summary List the returns included in a repayment
         * @param {TransferRepaymentReturnListRequest} transferRepaymentReturnListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferRepaymentReturnList(transferRepaymentReturnListRequest, options) {
            return localVarFp.transferRepaymentReturnList(transferRepaymentReturnListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.
         * @summary Retrieve a sweep
         * @param {TransferSweepGetRequest} transferSweepGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepGet(transferSweepGetRequest, options) {
            return localVarFp.transferSweepGet(transferSweepGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.
         * @summary List sweeps
         * @param {TransferSweepListRequest} transferSweepListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferSweepList(transferSweepListRequest, options) {
            return localVarFp.transferSweepList(transferSweepListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns user permissioned account data including identity and Item access tokens.
         * @summary Retrieve User Account
         * @param {UserAccountSessionGetRequest} userAccountSessionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userAccountSessionGet(userAccountSessionGetRequest, options) {
            return localVarFp.userAccountSessionGet(userAccountSessionGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint should be called for each of your end users before they begin a Plaid Check or Income flow, or a Multi-Item Link flow. This provides you a single token to access all data associated with the user. You should only create one per end user.  The `consumer_report_user_identity` object must be present in order to create a Plaid Check Consumer Report for a user. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.  If you call the endpoint multiple times with the same `client_user_id`, the first creation call will succeed and the rest will fail with an error message indicating that the user has been created for the given `client_user_id`.  Ensure that you store the `user_token` along with your user\'s identifier in your database, as it is not possible to retrieve a previously created `user_token`.
         * @summary Create user
         * @param {UserCreateRequest} userCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userCreate(userCreateRequest, options) {
            return localVarFp.userCreate(userCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns Items associated with a User along with their corresponding statuses.
         * @summary Get Items associated with a User
         * @param {UserItemsGetRequest} userItemsGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userItemsGet(userItemsGetRequest, options) {
            return localVarFp.userItemsGet(userItemsGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * `/user/remove` deletes a user token and and associated information, including any Items associated with the token.  Any subsequent calls to retrieve information using the same user token will result in an error stating the user does not exist.
         * @summary Remove user
         * @param {UserRemoveRequest} userRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userRemove(userRemoveRequest, options) {
            return localVarFp.userRemove(userRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint is used to create a third-party user token. This token can be shared with and used by a specified third-party client to access data associated with the user through supported endpoints.  Ensure you store the `third_party_user_token` along with the `user_token` and `third_party_client_id`, as it is not possible to retrieve a previously created `third_party_user_token`.
         * @summary Create a third-party user token
         * @param {UserThirdPartyTokenCreateRequest} userThirdPartyTokenCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options) {
            return localVarFp.userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user.   Any subsequent calls to retrieve information using the same third-party user token will result in an error stating the third-party user token does not exist.
         * @summary Remove a third-party user token
         * @param {UserThirdPartyTokenRemoveRequest} userThirdPartyTokenRemoveRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options) {
            return localVarFp.userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint is used to update user information associated with an existing `user_token`. It can also be used to enable an existing `user_token` for use with Consumer Reports by Plaid Check, by adding a `consumer_report_user_identity` object to the user. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.
         * @summary Update user information
         * @param {UserUpdateRequest} userUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        userUpdate(userUpdateRequest, options) {
            return localVarFp.userUpdate(userUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create an e-wallet. The response is the newly created e-wallet object.
         * @summary Create an e-wallet
         * @param {WalletCreateRequest} walletCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletCreate(walletCreateRequest, options) {
            return localVarFp.walletCreate(walletCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Fetch an e-wallet. The response includes the current balance.
         * @summary Fetch an e-wallet
         * @param {WalletGetRequest} walletGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletGet(walletGetRequest, options) {
            return localVarFp.walletGet(walletGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint lists all e-wallets in descending order of creation.
         * @summary Fetch a list of e-wallets
         * @param {WalletListRequest} walletListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletList(walletListRequest, options) {
            return localVarFp.walletList(walletListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction. Transactions will settle in seconds to several days, depending on the underlying payment rail.
         * @summary Execute a transaction using an e-wallet
         * @param {WalletTransactionExecuteRequest} walletTransactionExecuteRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionExecute(walletTransactionExecuteRequest, options) {
            return localVarFp.walletTransactionExecute(walletTransactionExecuteRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Fetch a specific e-wallet transaction
         * @summary Fetch an e-wallet transaction
         * @param {WalletTransactionGetRequest} walletTransactionGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionGet(walletTransactionGetRequest, options) {
            return localVarFp.walletTransactionGet(walletTransactionGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.
         * @summary List e-wallet transactions
         * @param {WalletTransactionListRequest} walletTransactionListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        walletTransactionList(walletTransactionListRequest, options) {
            return localVarFp.walletTransactionList(walletTransactionListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a new entity watchlist screening to check your customer against watchlists defined in the associated entity watchlist program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for an entity
         * @param {WatchlistScreeningEntityCreateRequest} watchlistScreeningEntityCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options) {
            return localVarFp.watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve an entity watchlist screening.
         * @summary Get an entity screening
         * @param {WatchlistScreeningEntityGetRequest} watchlistScreeningEntityGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options) {
            return localVarFp.watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all changes to the entity watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for entity watchlist screenings
         * @param {WatchlistScreeningEntityHistoryListRequest} watchlistScreeningEntityHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options) {
            return localVarFp.watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all hits for the entity watchlist screening.
         * @summary List hits for entity watchlist screenings
         * @param {WatchlistScreeningEntityHitListRequest} watchlistScreeningEntityHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options) {
            return localVarFp.watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all entity screenings.
         * @summary List entity watchlist screenings
         * @param {WatchlistScreeningEntityListRequest} watchlistScreeningEntityListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options) {
            return localVarFp.watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Get an entity watchlist screening program
         * @summary Get entity watchlist screening program
         * @param {WatchlistScreeningEntityProgramGetRequest} watchlistScreeningEntityProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options) {
            return localVarFp.watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all entity watchlist screening programs
         * @summary List entity watchlist screening programs
         * @param {WatchlistScreeningEntityProgramListRequest} watchlistScreeningEntityProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options) {
            return localVarFp.watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a review for an entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an entity watchlist screening
         * @param {WatchlistScreeningEntityReviewCreateRequest} watchlistScreeningEntityReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options) {
            return localVarFp.watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all reviews for a particular entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary List reviews for entity watchlist screenings
         * @param {WatchlistScreeningEntityReviewListRequest} watchlistScreeningEntityReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options) {
            return localVarFp.watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Update an entity watchlist screening.
         * @summary Update an entity screening
         * @param {WatchlistScreeningEntityUpdateRequest} watchlistScreeningEntityUpdateRequest The entity screening was successfully updated.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options) {
            return localVarFp.watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a new Watchlist Screening to check your customer against watchlists defined in the associated Watchlist Program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
         * @summary Create a watchlist screening for a person
         * @param {WatchlistScreeningIndividualCreateRequest} watchlistScreeningIndividualCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options) {
            return localVarFp.watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a previously created individual watchlist screening
         * @summary Retrieve an individual watchlist screening
         * @param {WatchlistScreeningIndividualGetRequest} watchlistScreeningIndividualGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options) {
            return localVarFp.watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all changes to the individual watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
         * @summary List history for individual watchlist screenings
         * @param {WatchlistScreeningIndividualHistoryListRequest} watchlistScreeningIndividualHistoryListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options) {
            return localVarFp.watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all hits found by Plaid for a particular individual watchlist screening.
         * @summary List hits for individual watchlist screening
         * @param {WatchlistScreeningIndividualHitListRequest} watchlistScreeningIndividualHitListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options) {
            return localVarFp.watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List previously created watchlist screenings for individuals
         * @summary List Individual Watchlist Screenings
         * @param {WatchlistScreeningIndividualListRequest} watchlistScreeningIndividualListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options) {
            return localVarFp.watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Get an individual watchlist screening program
         * @summary Get individual watchlist screening program
         * @param {WatchlistScreeningIndividualProgramGetRequest} watchlistScreeningIndividualProgramGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options) {
            return localVarFp.watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all individual watchlist screening programs
         * @summary List individual watchlist screening programs
         * @param {WatchlistScreeningIndividualProgramListRequest} watchlistScreeningIndividualProgramListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options) {
            return localVarFp.watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a review for the individual watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
         * @summary Create a review for an individual watchlist screening
         * @param {WatchlistScreeningIndividualReviewCreateRequest} watchlistScreeningIndividualReviewCreateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options) {
            return localVarFp.watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * List all reviews for the individual watchlist screening.
         * @summary List reviews for individual watchlist screenings
         * @param {WatchlistScreeningIndividualReviewListRequest} watchlistScreeningIndividualReviewListRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options) {
            return localVarFp.watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a specific individual watchlist screening. This endpoint can be used to add additional customer information, correct outdated information, add a reference id, assign the individual to a reviewer, and update which program it is associated with. Please note that you may not update `search_terms` and `status` at the same time since editing `search_terms` may trigger an automatic `status` change.
         * @summary Update individual watchlist screening
         * @param {WatchlistScreeningIndividualUpdateRequest} watchlistScreeningIndividualUpdateRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options) {
            return localVarFp.watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.  The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
         * @summary Get webhook verification key
         * @param {WebhookVerificationKeyGetRequest} webhookVerificationKeyGetRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options) {
            return localVarFp.webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options).then((request) => request(axios, basePath));
        },
    };
};
exports.PlaidApiFactory = PlaidApiFactory;
/**
 * PlaidApi - object-oriented interface
 * @export
 * @class PlaidApi
 * @extends {BaseAPI}
 */
class PlaidApi extends base_1.BaseAPI {
    /**
     * The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints, such as `/accounts/get`, return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.
     * @summary Retrieve real-time balance data
     * @param {AccountsBalanceGetRequest} accountsBalanceGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    accountsBalanceGet(accountsBalanceGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).accountsBalanceGet(accountsBalanceGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link\'s [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you.  `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older.  For realtime balance information, use the paid endpoint `/accounts/balance/get` instead.
     * @summary Retrieve accounts
     * @param {AccountsGetRequest} accountsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    accountsGet(accountsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).accountsGet(accountsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
     * @summary Retrieve information about a Plaid application
     * @param {ApplicationGetRequest} applicationGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    applicationGet(applicationGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).applicationGet(applicationGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.  To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
     * @summary Create Asset Report Audit Copy
     * @param {AssetReportAuditCopyCreateRequest} assetReportAuditCopyCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportAuditCopyCreate(assetReportAuditCopyCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint.  The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor.  This token can then be used to call `/asset_report/audit_copy/create`.
     * @summary Retrieve an Asset Report Audit Copy
     * @param {AssetReportAuditCopyGetRequest} assetReportAuditCopyGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportAuditCopyGet(assetReportAuditCopyGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
     * @summary Remove Asset Report Audit Copy
     * @param {AssetReportAuditCopyRemoveRequest} assetReportAuditCopyRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportAuditCopyRemove(assetReportAuditCopyRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.  The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. The exact amount of time to create the report will vary depending on how many days of history are requested and will typically range from a few seconds to about one minute. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/products/assets/#webhooks).  The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
     * @summary Create an Asset Report
     * @param {AssetReportCreateRequest} assetReportCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportCreate(assetReportCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportCreate(assetReportCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.  To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report\'s data.  Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.  Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed.
     * @summary Filter Asset Report
     * @param {AssetReportFilterRequest} assetReportFilterRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportFilter(assetReportFilterRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportFilter(assetReportFilterRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`.  For latency-sensitive applications, you can optionally call `/asset_report/create` with `options.add_ons` set to `[\"fast_assets\"]`. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report.
     * @summary Retrieve an Asset Report
     * @param {AssetReportGetRequest} assetReportGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportGet(assetReportGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportGet(assetReportGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
     * @summary Retrieve a PDF Asset Report
     * @param {AssetReportPDFGetRequest} assetReportPDFGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportPdfGet(assetReportPDFGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportPdfGet(assetReportPDFGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * An Asset Report is an immutable snapshot of a user\'s assets. In order to \"refresh\" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.  The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string (\"\") for any previously-populated fields you would like set as empty.
     * @summary Refresh an Asset Report
     * @param {AssetReportRefreshRequest} assetReportRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportRefresh(assetReportRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportRefresh(assetReportRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.  The `/asset_report/remove` endpoint allows you to remove access to an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
     * @summary Delete an Asset Report
     * @param {AssetReportRemoveRequest} assetReportRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    assetReportRemove(assetReportRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).assetReportRemove(assetReportRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item\'s checking, savings, and cash management accounts, along with high-level account data and balances when available.  Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22).
     * @summary Retrieve auth data
     * @param {AuthGetRequest} authGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    authGet(authGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).authGet(authGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.  The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.  Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
     * @summary Get balance of your Bank Transfer account
     * @param {BankTransferBalanceGetRequest} bankTransferBalanceGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferBalanceGet(bankTransferBalanceGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferBalanceGet(bankTransferBalanceGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
     * @summary Cancel a bank transfer
     * @param {BankTransferCancelRequest} bankTransferCancelRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferCancel(bankTransferCancelRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferCancel(bankTransferCancelRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
     * @summary Create a bank transfer
     * @param {BankTransferCreateRequest} bankTransferCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferCreate(bankTransferCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferCreate(bankTransferCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/bank_transfer/event/list` endpoint to get a list of Plaid-initiated ACH or bank transfer events based on specified filter criteria. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/).
     * @summary List bank transfer events
     * @param {BankTransferEventListRequest} bankTransferEventListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferEventList(bankTransferEventListRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferEventList(bankTransferEventListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/bank_transfer/event/sync` allows you to request up to the next 25 Plaid-initiated bank transfer events that happened after a specific `event_id`. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://www.plaid.com/docs/auth/coverage/microdeposit-events/).
     * @summary Sync bank transfer events
     * @param {BankTransferEventSyncRequest} bankTransferEventSyncRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferEventSync(bankTransferEventSyncRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferEventSync(bankTransferEventSyncRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
     * @summary Retrieve a bank transfer
     * @param {BankTransferGetRequest} bankTransferGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferGet(bankTransferGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferGet(bankTransferGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
     * @summary List bank transfers
     * @param {BankTransferListRequest} bankTransferListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferList(bankTransferListRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferList(bankTransferListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items.  Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
     * @summary Migrate account into Bank Transfers
     * @param {BankTransferMigrateAccountRequest} bankTransferMigrateAccountRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferMigrateAccount(bankTransferMigrateAccountRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
     * @summary Retrieve a sweep
     * @param {BankTransferSweepGetRequest} bankTransferSweepGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferSweepGet(bankTransferSweepGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferSweepGet(bankTransferSweepGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.
     * @summary List sweeps
     * @param {BankTransferSweepListRequest} bankTransferSweepListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    bankTransferSweepList(bankTransferSweepListRequest, options) {
        return exports.PlaidApiFp(this.configuration).bankTransferSweepList(bankTransferSweepListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account.
     * @summary Evaluate risk of a bank account
     * @param {BeaconAccountRiskEvaluateRequest} beaconAccountRiskEvaluateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconAccountRiskEvaluate(beaconAccountRiskEvaluateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a Beacon Duplicate for a given Beacon Duplicate id.  A Beacon Duplicate represents a pair of similar Beacon Users within your organization.  Two Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields.  The `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`.
     * @summary Get a Beacon Duplicate
     * @param {BeaconDuplicateGetRequest} beaconDuplicateGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconDuplicateGet(beaconDuplicateGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconDuplicateGet(beaconDuplicateGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a fraud report for a given Beacon User.
     * @summary Create a Beacon Report
     * @param {BeaconReportCreateRequest} beaconReportCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconReportCreate(beaconReportCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconReportCreate(beaconReportCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a Beacon report for a given Beacon report id.
     * @summary Get a Beacon Report
     * @param {BeaconReportGetRequest} beaconReportGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconReportGet(beaconReportGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconReportGet(beaconReportGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/beacon/report/list` endpoint to view all Beacon Reports you created for a specific Beacon User. The reports returned by this endpoint are exclusively reports you created for a specific user. A Beacon User can only have one active report at a time, but a new report can be created if a previous report has been deleted. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
     * @summary List Beacon Reports for a Beacon User
     * @param {BeaconReportListRequest} beaconReportListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconReportList(beaconReportListRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconReportList(beaconReportListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a Beacon Report Syndication for a given Beacon Report Syndication id.
     * @summary Get a Beacon Report Syndication
     * @param {BeaconReportSyndicationGetRequest} beaconReportSyndicationGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconReportSyndicationGet(beaconReportSyndicationGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/beacon/report_syndication/list` endpoint to view all Beacon Reports that have been syndicated to a specific Beacon User. This endpoint returns Beacon Report Syndications which are references to Beacon Reports created either by you, or another Beacon customer, that matched the specified Beacon User. A Beacon User can have multiple active Beacon Report Syndications at once. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request.
     * @summary List Beacon Report Syndications for a Beacon User
     * @param {BeaconReportSyndicationListRequest} beaconReportSyndicationListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconReportSyndicationList(beaconReportSyndicationListRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconReportSyndicationList(beaconReportSyndicationListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Get Account Insights for all Accounts linked to this Beacon User. The insights for each account are computed based on the information that was last retrieved from the financial institution.
     * @summary Get Account Insights for a Beacon User
     * @param {BeaconUserAccountInsightsGetRequest} beaconUserAccountInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserAccountInsightsGet(beaconUserAccountInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create and scan a Beacon User against your Beacon Program, according to your program\'s settings.  When you submit a new user to `/beacon/user/create`, several checks are performed immediately:    - The user\'s PII (provided within the `user` object) is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.
     * @summary Create a Beacon User
     * @param {BeaconUserCreateRequest} beaconUserCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserCreate(beaconUserCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserCreate(beaconUserCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Fetch a Beacon User.  The Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks.
     * @summary Get a Beacon User
     * @param {BeaconUserGetRequest} beaconUserGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserGet(beaconUserGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserGet(beaconUserGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all changes to the Beacon User in reverse-chronological order.
     * @summary List a Beacon User\'s history
     * @param {BeaconUserHistoryListRequest} beaconUserHistoryListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserHistoryList(beaconUserHistoryListRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserHistoryList(beaconUserHistoryListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Update the status of a Beacon User.  When updating a Beacon User\'s status via this endpoint, Plaid validates that the status change is consistent with the related state for this Beacon User. Specifically, we will check:  1. Whether there are any associated Beacon Reports connected to the Beacon User, and 2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User.  When updating a Beacon User\'s status to \"rejected\", we enforce that either a Beacon Report has been created for the Beacon User or a Beacon Report Syndication has been confirmed. When updating a Beacon User\'s status to \"cleared\", we enforce that there are no active Beacon Reports or confirmed Beacon Report Syndications associated with the user. If you previously created a Beacon Report for this user, you must delete it before updating the Beacon User\'s status to \"cleared\". There are no restrictions on updating a Beacon User\'s status to \"pending_review\".  If these conditions are not met, the request will be rejected with an error explaining the issue.
     * @summary Review a Beacon User
     * @param {BeaconUserReviewRequest} beaconUserReviewRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserReview(beaconUserReviewRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserReview(beaconUserReviewRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User.  Similar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`:    - The user\'s updated PII is searched against all other users within the Beacon Program you specified. If a match is found that violates your program\'s \"Duplicate Information Filtering\" settings, the user will be returned with a status of `pending_review`.    - The user\'s updated PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user\'s data matches a fraud report that your team created, the user will be returned with a status of `rejected`.    - Finally, the user\'s PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.  Plaid maintains a version history for each Beacon User, so the Beacon User\'s identity data before and after the update is retained as separate versions.
     * @summary Update the identity data of a Beacon User
     * @param {BeaconUserUpdateRequest} beaconUserUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    beaconUserUpdate(beaconUserUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).beaconUserUpdate(beaconUserUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Send a request to the `/categories/get` endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.  All implementations are recommended to use the newer `personal_finance_category` taxonomy instead of the older `category` taxonomy supported by this endpoint. The [`personal_finance_category taxonomy` CSV file](https://plaid.com/documents/transactions-personal-finance-category-taxonomy.csv) is available for download and is not accessible via API.
     * @summary Get categories
     * @param {object} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    categoriesGet(body, options) {
        return exports.PlaidApiFp(this.configuration).categoriesGet(body, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List a historical log of Item consent events. Consent logs are only available for events occurring on or after November 7, 2024. Up to three years of consent logs will be available via the endpoint.
     * @summary List a historical log of item consent events
     * @param {ConsentEventsGetRequest} consentEventsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    consentEventsGet(consentEventsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).consentEventsGet(consentEventsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format.  Response is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.
     * @summary Retrieve a PDF Reports
     * @param {ConsumerReportPDFGetRequest} consumerReportPDFGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    consumerReportPdfGet(consumerReportPDFGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).consumerReportPdfGet(consumerReportPDFGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/bank_income/create` creates a CRA report for income verification
     * @summary Create a CRA report for income verification
     * @param {CraBankIncomeCreateRequest} craBankIncomeCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craBankIncomeCreate(craBankIncomeCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).craBankIncomeCreate(craBankIncomeCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/bank_income/get` returns the bank income report(s) for a specified user.
     * @summary Retrieve information from the bank accounts used for income verification
     * @param {CraBankIncomeGetRequest} craBankIncomeGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craBankIncomeGet(craBankIncomeGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craBankIncomeGet(craBankIncomeGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Base Report for your user, allowing you to receive comprehensive bank account and cash flow data. You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn\'t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
     * @summary Retrieve a Base Report
     * @param {CraCheckReportBaseReportGetRequest} craCheckReportBaseReportGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportBaseReportGet(craCheckReportBaseReportGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
     * @summary Retrieve cash flow insights from your user\'s banking data
     * @param {CraCheckReportCashflowInsightsGetRequest} craCheckReportCashflowInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportCashflowInsightsGet(craCheckReportCashflowInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/check_report/create` creates a Consumer Report powered by Plaid Check. You can call this endpoint to create a new report if `consumer_report_permissible_purpose` was omitted during Link token creation. If you did provide a `consumer_report_permissible_purpose` during Link token creation, then Plaid Check will automatically begin creating a Consumer Report once the user completes the Link process, and it is not necessary to call `/cra/check_report/create` before retrieving the report.   `/cra/check_report/create` can also be used to refresh data in an existing report. A Consumer Report will last for 24 hours before expiring; you should call any `/get` endpoints on the report before it expires. If a report expires, you can call `/cra/check_report/create` again to re-generate it. Note that refreshing or regenerating a report is a billable event.
     * @summary Create a Consumer Report
     * @param {CraCheckReportCreateRequest} craCheckReportCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportCreate(craCheckReportCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportCreate(craCheckReportCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Income Insights report for your user.  You should call this endpoint after you\'ve received a `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.
     * @summary Retrieve cash flow information from your user\'s banks
     * @param {CraCheckReportIncomeInsightsGetRequest} craCheckReportIncomeInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportIncomeInsightsGet(craCheckReportIncomeInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `cra_network_attributes` product or have generated a report using `/cra/check_report/create`, we will generate the attributes when you call this endpoint.
     * @summary Retrieve network attributes for the user
     * @param {CraCheckReportNetworkInsightsGetRequest} craCheckReportNetworkInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportNetworkInsightsGet(craCheckReportNetworkInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you\'ve received the `CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.  If you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.
     * @summary Retrieve cash flow insights from partners
     * @param {CraCheckReportPartnerInsightsGetRequest} craCheckReportPartnerInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportPartnerInsightsGet(craCheckReportPartnerInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/check_report/pdf/get` retrieves the most recent Consumer Report in PDF format. By default, the most recent Base Report (if it exists) for the user will be returned. To request that the most recent Income Insights report be included in the PDF as well, use the `add-ons` field.
     * @summary Retrieve Consumer Reports as a PDF
     * @param {CraCheckReportPDFGetRequest} craCheckReportPDFGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craCheckReportPdfGet(craCheckReportPDFGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craCheckReportPdfGet(craCheckReportPDFGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/loans/applications/register` registers loan applications and decisions.
     * @summary Register loan applications and decisions.
     * @param {CraLoansApplicationsRegisterRequest} craLoansApplicationsRegisterRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options) {
        return exports.PlaidApiFp(this.configuration).craLoansApplicationsRegister(craLoansApplicationsRegisterRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/loans/register` registers a list of loans to their applicants.
     * @summary Register a list of loans to their applicants.
     * @param {CRALoansRegisterRequest} cRALoansRegisterRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craLoansRegister(cRALoansRegisterRequest, options) {
        return exports.PlaidApiFp(this.configuration).craLoansRegister(cRALoansRegisterRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.
     * @summary Unregister a list of loans.
     * @param {CraLoansUnregisterRequest} craLoansUnregisterRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craLoansUnregister(craLoansUnregisterRequest, options) {
        return exports.PlaidApiFp(this.configuration).craLoansUnregister(craLoansUnregisterRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/loans/update` updates loan information such as the status and payment history.
     * @summary Updates loan data.
     * @param {CraLoansUpdateRequest} craLoansUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craLoansUpdate(craLoansUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).craLoansUpdate(craLoansUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve a Monitoring Insights report by passing in the `user_token` referred to in the webhook you received.
     * @summary Retrieve a Monitoring Insights Report
     * @param {CraMonitoringInsightsGetRequest} craMonitoringInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craMonitoringInsightsGet(craMonitoringInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to subscribe to insights for a user\'s linked CRA items, which are updated every day (best-effort).
     * @summary Subscribe to Monitoring Insights
     * @param {CraMonitoringInsightsSubscribeRequest} craMonitoringInsightsSubscribeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options) {
        return exports.PlaidApiFp(this.configuration).craMonitoringInsightsSubscribe(craMonitoringInsightsSubscribeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights.
     * @summary Unsubscribe from Monitoring Insights
     * @param {CraMonitoringInsightsUnsubscribeRequest} craMonitoringInsightsUnsubscribeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options) {
        return exports.PlaidApiFp(this.configuration).craMonitoringInsightsUnsubscribe(craMonitoringInsightsUnsubscribeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/cra/partner_insights/get` returns cash flow insights for a specified user.
     * @summary Retrieve cash flow insights from the bank accounts used for income verification
     * @param {CraPartnerInsightsGetRequest} craPartnerInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    craPartnerInsightsGet(craPartnerInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).craPartnerInsightsGet(craPartnerInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.  The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
     * @summary Create payment token
     * @param {PaymentInitiationPaymentTokenCreateRequest} paymentInitiationPaymentTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).createPaymentToken(paymentInitiationPaymentTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac\'s JSON format.
     * @summary Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.
     * @param {{ [key: string]: object; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditAssetReportFreddieMacGet(requestBody, options) {
        return exports.PlaidApiFp(this.configuration).creditAssetReportFreddieMacGet(requestBody, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Plaid can create an Audit Copy token of an Asset Report and/or Income Report to share with participating Government Sponsored Entity (GSE). If you participate in the Day 1 Certainty™ program, Plaid can supply an Audit Copy token directly to Fannie Mae on your behalf. An Audit Copy token contains the same underlying data as the Asset Report and/or Income Report (result of /credit/payroll_income/get).  Use the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access.
     * @summary Create Asset or Income Report Audit Copy Token
     * @param {CreditAuditCopyTokenCreateRequest} creditAuditCopyTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditAuditCopyTokenCreate(creditAuditCopyTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/credit/audit_copy_token/update` endpoint updates an existing  Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field.
     * @summary Update an Audit Copy Token
     * @param {CreditAuditCopyTokenUpdateRequest} creditAuditCopyTokenUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditAuditCopyTokenUpdate(creditAuditCopyTokenUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.
     * @summary Retrieve information from the bank accounts used for employment verification
     * @param {CreditBankEmploymentGetRequest} creditBankEmploymentGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankEmploymentGet(creditBankEmploymentGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankEmploymentGet(creditBankEmploymentGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_income/get` returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link). To return older reports, use the `options.count` field.
     * @summary Retrieve information from the bank accounts used for income verification
     * @param {CreditBankIncomeGetRequest} creditBankIncomeGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankIncomeGet(creditBankIncomeGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankIncomeGet(creditBankIncomeGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_income/pdf/get` returns the most recent bank income report for a specified user in PDF format.  A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link).
     * @summary Retrieve information from the bank accounts used for income verification in PDF format
     * @param {CreditBankIncomePDFGetRequest} creditBankIncomePDFGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankIncomePdfGet(creditBankIncomePDFGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_income/refresh` refreshes the most recent bank income report data for a specific user. If the most recent bank income report is no longer valid (i.e. deleted), the endpoint will refresh the most recent valid report instead.
     * @summary Refresh a user\'s bank income information
     * @param {CreditBankIncomeRefreshRequest} creditBankIncomeRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankIncomeRefresh(creditBankIncomeRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_income/webhook/update` allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed.  If a user is subscribed, on significant changes to the user\'s income profile, you will receive a `BANK_INCOME_REFRESH_UPDATE` webhook, prompting you to refresh bank income data for the user.
     * @summary Subscribe and unsubscribe to proactive notifications for a user\'s income profile
     * @param {CreditBankIncomeWebhookUpdateRequest} creditBankIncomeWebhookUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankIncomeWebhookUpdate(creditBankIncomeWebhookUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.
     * @summary Retrieve data for a user\'s uploaded bank statements
     * @param {CreditBankStatementsUploadsGetRequest} creditBankStatementsUploadsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditBankStatementsUploadsGet(creditBankStatementsUploadsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/employment/get` returns a list of items with employment information from a user\'s payroll provider that was verified by an end user.
     * @summary Retrieve a summary of an individual\'s employment information
     * @param {CreditEmploymentGetRequest} creditEmploymentGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditEmploymentGet(creditEmploymentGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditEmploymentGet(creditEmploymentGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `credit/asset_report/freddie_mac/get` endpoint retrieves the Verification of Assets and Verification of Employment reports.
     * @summary Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint.
     * @param {CreditFreddieMacReportsGetRequest} creditFreddieMacReportsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditFreddieMacReportsGet(creditFreddieMacReportsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document.
     * @summary Retrieve a user\'s payroll information
     * @param {CreditPayrollIncomeGetRequest} creditPayrollIncomeGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditPayrollIncomeGet(creditPayrollIncomeGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.
     * @summary Update the parsing configuration for a document income verification
     * @param {{ [key: string]: object; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditPayrollIncomeParsingConfigUpdate(requestBody, options) {
        return exports.PlaidApiFp(this.configuration).creditPayrollIncomeParsingConfigUpdate(requestBody, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/payroll_income/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification. If the user is eligible for digital verification, that information will be associated with the user token, and in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing `employer` data will increase the chance of receiving a useful result.  When testing in Sandbox, you can control the results by providing special test values in the `employer` and `access_tokens` fields. `employer_good` and `employer_bad` will result in `HIGH` and `LOW` confidence values, respectively. `employer_multi` will result in a `HIGH` confidence with multiple payroll options. Likewise, `access_good` and `access_bad` will result in `HIGH` and `LOW` confidence values, respectively. Any other value for `employer` and `access_tokens` in Sandbox will result in `UNKNOWN` confidence.
     * @summary Check income verification eligibility and optimize conversion
     * @param {CreditPayrollIncomePrecheckRequest} creditPayrollIncomePrecheckRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditPayrollIncomePrecheck(creditPayrollIncomePrecheckRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/payroll_income/refresh` refreshes a given digital payroll income verification.
     * @summary Refresh a digital payroll income verification
     * @param {CreditPayrollIncomeRefreshRequest} creditPayrollIncomeRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditPayrollIncomeRefresh(creditPayrollIncomeRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/payroll_income/risk_signals/get` can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score.  To trigger risk signal generation for an Item, call `/link/token/create` with `parsing_config` set to include `risk_signals`, or call `/credit/payroll_income/parsing_config/update`. Once risk signal generation has been triggered, `/credit/payroll_income/risk_signals/get` can be called at any time after the `INCOME_VERIFICATION_RISK_SIGNALS` webhook has been fired.  `/credit/payroll_income/risk_signals/get` is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager.
     * @summary Retrieve fraud insights for a user\'s manually uploaded document(s).
     * @param {CreditPayrollIncomeRiskSignalsGetRequest} creditPayrollIncomeRiskSignalsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditPayrollIncomeRiskSignalsGet(creditPayrollIncomeRiskSignalsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Plaid can share an Asset Report directly with a participating third party on your behalf. The shared Asset Report is the exact same Asset Report originally created in `/asset_report/create`.  To grant a third party access to an Asset Report, use the `/credit/relay/create` endpoint to create a `relay_token` and then pass that token to your third party. Each third party has its own `secondary_client_id`; for example, `ce5bd328dcd34123456`. You\'ll need to create a separate `relay_token` for each third party that needs access to the report on your behalf.
     * @summary Create a relay token to share an Asset Report with a partner client
     * @param {CreditRelayCreateRequest} creditRelayCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditRelayCreate(creditRelayCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditRelayCreate(creditRelayCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/relay/get` allows third parties to receive a report that was shared with them, using a `relay_token` that was created by the report owner.
     * @summary Retrieve the reports associated with a relay token that was shared with you
     * @param {CreditRelayGetRequest} creditRelayGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditRelayGet(creditRelayGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditRelayGet(creditRelayGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/credit/relay/pdf/get` allows third parties to receive a pdf report that was shared with them, using a `relay_token` that was created by the report owner.  The `/credit/relay/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/credit/relay/pdf/get`, you must first create the Asset Report using `/credit/relay/create` and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved.  The response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.  [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
     * @summary Retrieve the pdf reports associated with a relay token that was shared with you (beta)
     * @param {CreditRelayPDFGetRequest} creditRelayPDFGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditRelayPdfGet(creditRelayPDFGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditRelayPdfGet(creditRelayPDFGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/credit/relay/refresh` endpoint allows third parties to refresh a report that was relayed to them, using a `relay_token` that was created by the report owner. A new report will be created with the original report parameters, but with the most recent data available based on the `days_requested` value of the original report.
     * @summary Refresh a report of a relay token
     * @param {CreditRelayRefreshRequest} creditRelayRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditRelayRefresh(creditRelayRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditRelayRefresh(creditRelayRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/credit/relay/remove` endpoint allows you to invalidate a `relay_token`. The third party holding the token will no longer be able to access or refresh the reports which the `relay_token` gives access to. The original report, associated Items, and other relay tokens that provide access to the same report are not affected and will remain accessible after removing the given `relay_token`.
     * @summary Remove relay token
     * @param {CreditRelayRemoveRequest} creditRelayRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditRelayRemove(creditRelayRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditRelayRemove(creditRelayRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/credit/audit_copy_token/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Report data and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
     * @summary Remove an Audit Copy token
     * @param {CreditAuditCopyTokenRemoveRequest} creditAuditCopyTokenRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditReportAuditCopyRemove(creditAuditCopyTokenRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow.  These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step).
     * @summary Retrieve Link sessions for your user
     * @param {CreditSessionsGetRequest} creditSessionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    creditSessionsGet(creditSessionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).creditSessionsGet(creditSessionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/dashboard_user/get` endpoint provides details (such as email address) about a specific Dashboard user based on the `dashboard_user_id` field, which is returned in the `audit_trail` object of certain Monitor and Beacon endpoints. This can be used to identify the specific reviewer who performed a Dashboard action.
     * @summary Retrieve a dashboard user
     * @param {DashboardUserGetRequest} dashboardUserGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    dashboardUserGet(dashboardUserGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).dashboardUserGet(dashboardUserGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/dashboard_user/list` endpoint provides details (such as email address) all Dashboard users associated with your account. This can use used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products.
     * @summary List dashboard users
     * @param {DashboardUserListRequest} dashboardUserListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    dashboardUserList(dashboardUserListRequest, options) {
        return exports.PlaidApiFp(this.configuration).dashboardUserList(dashboardUserListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
     * @summary (Deprecated) Create a deposit switch without using Plaid Exchange
     * @param {DepositSwitchAltCreateRequest} depositSwitchAltCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    depositSwitchAltCreate(depositSwitchAltCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).depositSwitchAltCreate(depositSwitchAltCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
     * @summary (Deprecated) Create a deposit switch
     * @param {DepositSwitchCreateRequest} depositSwitchCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    depositSwitchCreate(depositSwitchCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).depositSwitchCreate(depositSwitchCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user\'s direct deposit allocation preferences.
     * @summary (Deprecated) Retrieve a deposit switch
     * @param {DepositSwitchGetRequest} depositSwitchGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    depositSwitchGet(depositSwitchGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).depositSwitchGet(depositSwitchGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
     * @summary (Deprecated) Create a deposit switch token
     * @param {DepositSwitchTokenCreateRequest} depositSwitchTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).depositSwitchTokenCreate(depositSwitchTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user\'s employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.  The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
     * @summary Search employer database
     * @param {EmployersSearchRequest} employersSearchRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    employersSearch(employersSearchRequest, options) {
        return exports.PlaidApiFp(this.configuration).employersSearch(employersSearchRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user.  This endpoint has been deprecated; new integrations should use `/credit/employment/get` instead.
     * @summary (Deprecated) Retrieve a summary of an individual\'s employment information
     * @param {EmploymentVerificationGetRequest} employmentVerificationGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    employmentVerificationGet(employmentVerificationGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).employmentVerificationGet(employmentVerificationGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * A generic webhook receiver endpoint for FDX Event Notifications
     * @summary Webhook receiver for fdx notifications
     * @param {FDXNotification} fDXNotification
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    fdxNotifications(fDXNotification, options) {
        return exports.PlaidApiFp(this.configuration).fdxNotifications(fDXNotification, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Get a specific recipient
     * @summary Get Recipient
     * @param {string} recipientId Recipient Identifier. Uniquely identifies the recipient
     * @param {string} [oAUTHSTATEID] The value that is passed into the OAuth URI \&#39;state\&#39; query parameter.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    getRecipient(recipientId, oAUTHSTATEID, options) {
        return exports.PlaidApiFp(this.configuration).getRecipient(recipientId, oAUTHSTATEID, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a list of Recipients
     * @summary Get Recipients
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    getRecipients(options) {
        return exports.PlaidApiFp(this.configuration).getRecipients(options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/).
     * @summary Returns uploaded document identity
     * @param {IdentityDocumentsUploadsGetRequest} identityDocumentsUploadsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityDocumentsUploadsGet(identityDocumentsUploadsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.  Note: In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29).
     * @summary Retrieve identity data
     * @param {IdentityGetRequest} identityGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityGet(identityGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityGet(identityGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
     * @summary Retrieve identity match score
     * @param {IdentityMatchRequest} identityMatchRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityMatch(identityMatchRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityMatch(identityMatchRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/identity/refresh` is an optional endpoint for users of the Identity product. It initiates an on-demand extraction to fetch the most up to date Identity information from the Financial Institution. This on-demand extraction takes place in addition to the periodic extractions that automatically occur for any Identity-enabled Item. If changes to Identity are discovered after calling `/identity/refresh`, Plaid will fire a webhook [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/identity/#default_update).  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/identity/refresh` is offered as an add-on to Identity and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
     * @summary Refresh identity data
     * @param {IdentityRefreshRequest} identityRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityRefresh(identityRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityRefresh(identityRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Try to autofill an Identity Verification based of the provided phone number, date of birth and country of residence.
     * @summary Create autofill for an Identity Verification
     * @param {IdentityVerificationAutofillCreateRequest} identityVerificationAutofillCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityVerificationAutofillCreate(identityVerificationAutofillCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a new Identity Verification for the user specified by the `client_user_id` field. The requirements and behavior of the verification are determined by the `template_id` provided. If you don\'t know whether the associated user already has an active Identity Verification, you can specify `\"is_idempotent\": true` in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated `client_user_id` and `template_id`. If an Identity Verification is found, it will be returned unmodified with an `200 OK` HTTP status code.  You can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow.
     * @summary Create a new Identity Verification
     * @param {IdentityVerificationCreateRequest} identityVerificationCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityVerificationCreate(identityVerificationCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityVerificationCreate(identityVerificationCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Retrieve a previously created Identity Verification.
     * @summary Retrieve Identity Verification
     * @param {IdentityVerificationGetRequest} identityVerificationGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityVerificationGet(identityVerificationGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityVerificationGet(identityVerificationGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Filter and list Identity Verifications created by your account
     * @summary List Identity Verifications
     * @param {IdentityVerificationListRequest} identityVerificationListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityVerificationList(identityVerificationListRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityVerificationList(identityVerificationListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Allow a customer to retry their Identity Verification
     * @summary Retry an Identity Verification
     * @param {IdentityVerificationRetryRequest} identityVerificationRetryRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    identityVerificationRetry(identityVerificationRetryRequest, options) {
        return exports.PlaidApiFp(this.configuration).identityVerificationRetry(identityVerificationRetryRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing.
     * @summary (Deprecated) Create an income verification instance
     * @param {IncomeVerificationCreateRequest} incomeVerificationCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    incomeVerificationCreate(incomeVerificationCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).incomeVerificationCreate(incomeVerificationCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/income/verification/documents/download` provides the ability to download the source documents associated with the verification.  If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint.  The response to `/income/verification/documents/download` is a ZIP file in binary data. If a `document_id` is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification.  The `request_id` is returned in the `Plaid-Request-ID` header.
     * @summary (Deprecated) Download the original documents used for income verification
     * @param {IncomeVerificationDocumentsDownloadRequest} incomeVerificationDocumentsDownloadRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options) {
        return exports.PlaidApiFp(this.configuration).incomeVerificationDocumentsDownload(incomeVerificationDocumentsDownloadRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
     * @summary (Deprecated) Retrieve information from the paystubs used for income verification
     * @param {IncomeVerificationPaystubsGetRequest} incomeVerificationPaystubsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).incomeVerificationPaystubsGet(incomeVerificationPaystubsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/income/verification/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification and returns a `precheck_id` that can be provided to `/link/token/create`. If the user is eligible for digital verification, providing the `precheck_id` in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the `precheck_id` can still be provided to `/link/token/create` and the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income.  While all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead.
     * @summary (Deprecated) Check digital income verification eligibility and optimize conversion
     * @param {IncomeVerificationPrecheckRequest} incomeVerificationPrecheckRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options) {
        return exports.PlaidApiFp(this.configuration).incomeVerificationPrecheck(incomeVerificationPrecheckRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/income/verification/taxforms/get` returns the information collected from forms that were used to verify an end user\'\'s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.  This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.
     * @summary (Deprecated) Retrieve information from the tax documents used for income verification
     * @param {IncomeVerificationTaxformsGetRequest} incomeVerificationTaxformsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).incomeVerificationTaxformsGet(incomeVerificationTaxformsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.  If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
     * @summary Get details of all supported institutions
     * @param {InstitutionsGetRequest} institutionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    institutionsGet(institutionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).institutionsGet(institutionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a JSON response containing details on a specified financial institution currently supported by Plaid.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
     * @summary Get details of an institution
     * @param {InstitutionsGetByIdRequest} institutionsGetByIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    institutionsGetById(institutionsGetByIdRequest, options) {
        return exports.PlaidApiFp(this.configuration).institutionsGetById(institutionsGetByIdRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.  Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
     * @summary Search institutions
     * @param {InstitutionsSearchRequest} institutionsSearchRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    institutionsSearch(institutionsSearchRequest, options) {
        return exports.PlaidApiFp(this.configuration).institutionsSearch(institutionsSearchRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings
     * @summary Get data needed to authorize an investments transfer
     * @param {InvestmentsAuthGetRequest} investmentsAuthGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    investmentsAuthGet(investmentsAuthGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).investmentsAuthGet(investmentsAuthGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
     * @summary Get Investment holdings
     * @param {InvestmentsHoldingsGetRequest} investmentsHoldingsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    investmentsHoldingsGet(investmentsHoldingsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).investmentsHoldingsGet(investmentsHoldingsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/investments/refresh` is an optional endpoint for users of the Investments product. It initiates an on-demand extraction to fetch the newest investment holdings and transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Investments-enabled Item. If changes to investments are discovered after calling `/investments/refresh`, Plaid will fire webhooks: [`HOLDINGS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#holdings-default_update) if any new holdings are detected, and [`INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#investments_transactions-default_update) if any new investment transactions are detected. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic investment transactions and holdings data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. Updated holdings and investment transactions can be fetched by calling `/investments/holdings/get` and `/investments/transactions/get`. Note that the `/investments/refresh` endpoint is not supported by all institutions. If called on an Item from an institution that does not support this functionality, it will return a `PRODUCT_NOT_SUPPORTED` error.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/investments/refresh` is offered as an add-on to Investments and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
     * @summary Refresh investment data
     * @param {InvestmentsRefreshRequest} investmentsRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    investmentsRefresh(investmentsRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).investmentsRefresh(investmentsRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
     * @summary Get investment transactions
     * @param {InvestmentsTransactionsGetRequest} investmentsTransactionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    investmentsTransactionsGet(investmentsTransactionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).investmentsTransactionsGet(investmentsTransactionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object.
     * @summary Get an Issue
     * @param {IssuesGetRequest} issuesGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    issuesGet(issuesGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).issuesGet(issuesGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Search for an issue associated with one of the following identifiers:  `item_id`, `link_session_id` or Link session `request_id`.  This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the provided identifier. At least one of the identifiers must be provided to perform the search.
     * @summary Search for an Issue
     * @param {IssuesSearchRequest} issuesSearchRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    issuesSearch(issuesSearchRequest, options) {
        return exports.PlaidApiFp(this.configuration).issuesSearch(issuesSearchRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Allows a user to subscribe to updates on a specific `Issue` using a POST method. Subscribers will receive webhook notifications when the issue status changes, particularly when resolved.
     * @summary Subscribe to an Issue
     * @param {IssuesSubscribeRequest} issuesSubscribeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    issuesSubscribe(issuesSubscribeRequest, options) {
        return exports.PlaidApiFp(this.configuration).issuesSubscribe(issuesSubscribeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.  You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
     * @summary Invalidate access_token
     * @param {ItemAccessTokenInvalidateRequest} itemAccessTokenInvalidateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemAccessTokenInvalidate(itemAccessTokenInvalidateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List a historical log of user consent events
     * @summary List a historical log of user consent events
     * @param {ItemActivityListRequest} itemActivityListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemActivityList(itemActivityListRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemActivityList(itemActivityListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List a user’s connected applications
     * @summary List a user’s connected applications
     * @param {ItemApplicationListRequest} itemApplicationListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemApplicationList(itemApplicationListRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemApplicationList(itemApplicationListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Enable consumers to update product access on selected accounts for an application.
     * @summary Update the scopes of access for a particular application
     * @param {ItemApplicationScopesUpdateRequest} itemApplicationScopesUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemApplicationScopesUpdate(itemApplicationScopesUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Unlink a user’s connected application. On an unlink request, Plaid will immediately revoke the Application’s access to the User’s data.  The User will have to redo the OAuth authentication process in order to restore functionality.  This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default).  This endpoint should be called in real time as the User is unlinking an Application, and should not be batched in order to ensure that the change is reflected as soon as possible.
     * @summary Unlink a user’s connected application
     * @param {ItemApplicationUnlinkRequest} itemApplicationUnlinkRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemApplicationUnlink(itemApplicationUnlinkRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemApplicationUnlink(itemApplicationUnlinkRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).  If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.  A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.  The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
     * @summary Create public token
     * @param {ItemPublicTokenCreateRequest} itemPublicTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemCreatePublicToken(itemPublicTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemCreatePublicToken(itemPublicTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns information about the status of an Item.
     * @summary Retrieve an Item
     * @param {ItemGetRequest} itemGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemGet(itemGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemGet(itemGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.  Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated.
     * @summary Import Item
     * @param {ItemImportRequest} itemImportRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemImport(itemImportRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemImport(itemImportRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes. An `access_token` does not expire, but can be revoked by calling `/item/remove`.  The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
     * @summary Exchange public token for an access token
     * @param {ItemPublicTokenExchangeRequest} itemPublicTokenExchangeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemPublicTokenExchange(itemPublicTokenExchangeRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemPublicTokenExchange(itemPublicTokenExchangeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token`, as well as any processor tokens or bank account tokens associated with the Item, is no longer valid and cannot be used to access any data that was associated with the Item.   Calling `/item/remove` is a recommended best practice when offboarding users or if a user chooses to disconnect an account linked via Plaid. For subscription products, such as Transactions, Liabilities, and Investments, calling `/item/remove` is required to end subscription billing for the Item. For money movement products such as Auth and Transfer, if the Item is at an institution that uses Tokenized Account Numbers (TANs), such as Chase or PNC, calling `/item/remove` will invalidate the TAN, and subsequent ACH transfer attempts using that TAN will be returned.  In Limited Production, calling `/item/remove` does not impact the number of remaining Limited Production Items you have available.  Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove access to them specifically using the `/asset_report/remove` endpoint.  Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution\'s OAuth permission manager.  API versions 2019-05-29 and earlier return a `removed` boolean as part of the response.
     * @summary Remove an Item
     * @param {ItemRemoveRequest} itemRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemRemove(itemRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemRemove(itemRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/items/#webhook_update_acknowledged) webhook to the newly specified webhook URL.
     * @summary Update Webhook URL
     * @param {ItemWebhookUpdateRequest} itemWebhookUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    itemWebhookUpdate(itemWebhookUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).itemWebhookUpdate(itemWebhookUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/link/#linktokencreate).  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.
     * @summary Retrieve Liabilities data
     * @param {LiabilitiesGetRequest} liabilitiesGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    liabilitiesGet(liabilitiesGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).liabilitiesGet(liabilitiesGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/link_delivery/create` endpoint to create a Hosted Link session.
     * @summary Create Hosted Link session
     * @param {LinkDeliveryCreateRequest} linkDeliveryCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    linkDeliveryCreate(linkDeliveryCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).linkDeliveryCreate(linkDeliveryCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session.
     * @summary Get Hosted Link session
     * @param {LinkDeliveryGetRequest} linkDeliveryGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    linkDeliveryGet(linkDeliveryGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).linkDeliveryGet(linkDeliveryGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Exchange an OAuth `link_correlation_id` for the corresponding `link_token`. The `link_correlation_id` is only available for \'payment_initiation\' products and is provided to the client via the OAuth `redirect_uri` as a query parameter. The `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the \'link_token\'.
     * @summary Exchange the Link Correlation Id for a Link Token
     * @param {LinkOAuthCorrelationIdExchangeRequest} linkOAuthCorrelationIdExchangeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options) {
        return exports.PlaidApiFp(this.configuration).linkOauthCorrelationIdExchange(linkOAuthCorrelationIdExchangeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`. For most Plaid products, the `public_token` is saved and exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).  A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the [update mode](https://plaid.com/docs/link/update-mode) flow for tokens with expired credentials, or the Identity Verification flow.
     * @summary Create Link Token
     * @param {LinkTokenCreateRequest} linkTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    linkTokenCreate(linkTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).linkTokenCreate(linkTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/link/token/get` endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don\'t provide a public token via frontend callbacks, such as the [Hosted Link flow](https://plaid.com/docs/link/hosted-link/) and the [Multi-Item Link flow](https://plaid.com/docs/link/multi-item-link/). It also can be useful for debugging purposes.
     * @summary Get Link Token
     * @param {LinkTokenGetRequest} linkTokenGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    linkTokenGet(linkTokenGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).linkTokenGet(linkTokenGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you to retrieve the Network Insights from a list of `access_tokens`.
     * @summary Retrieve network insights for the provided `access_tokens`
     * @param {NetworkInsightsReportGetRequest} networkInsightsReportGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    networkInsightsReportGet(networkInsightsReportGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).networkInsightsReportGet(networkInsightsReportGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. This is useful for determining if a user is eligible for a streamlined experience, such as Layer.  Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview).
     * @summary Check a user\'s Plaid Network status
     * @param {NetworkStatusGetRequest} networkStatusGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    networkStatusGet(networkStatusGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).networkStatusGet(networkStatusGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/partner/customer/create` endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid.
     * @summary Creates a new end customer for a Plaid reseller.
     * @param {PartnerCustomerCreateRequest} partnerCustomerCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    partnerCustomerCreate(partnerCustomerCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).partnerCustomerCreate(partnerCustomerCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.
     * @summary Enables a Plaid reseller\'s end customer in the Production environment.
     * @param {PartnerCustomerEnableRequest} partnerCustomerEnableRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    partnerCustomerEnable(partnerCustomerEnableRequest, options) {
        return exports.PlaidApiFp(this.configuration).partnerCustomerEnable(partnerCustomerEnableRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer.
     * @summary Returns a Plaid reseller\'s end customer.
     * @param {PartnerCustomerGetRequest} partnerCustomerGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    partnerCustomerGet(partnerCustomerGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).partnerCustomerGet(partnerCustomerGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/partner/customer/oauth_institutions/get` endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the [reseller documentation](https://plaid.com/docs/account/resellers/#enabling-end-customers).
     * @summary Returns OAuth-institution registration information for a given end customer.
     * @param {PartnerCustomerOAuthInstitutionsGetRequest} partnerCustomerOAuthInstitutionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).partnerCustomerOauthInstitutionsGet(partnerCustomerOAuthInstitutionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/partner/customer/remove` endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production.
     * @summary Removes a Plaid reseller\'s end customer.
     * @param {PartnerCustomerRemoveRequest} partnerCustomerRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    partnerCustomerRemove(partnerCustomerRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).partnerCustomerRemove(partnerCustomerRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated.  Consents can be limited in time and scope, and have constraints that describe limitations for payments.
     * @summary Create payment consent
     * @param {PaymentInitiationConsentCreateRequest} paymentInitiationConsentCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationConsentCreate(paymentInitiationConsentCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/consent/get` endpoint can be used to check the status of a payment consent, as well as to receive basic information such as recipient and constraints.
     * @summary Get payment consent
     * @param {PaymentInitiationConsentGetRequest} paymentInitiationConsentGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationConsentGet(paymentInitiationConsentGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent.
     * @summary Execute a single payment using consent
     * @param {PaymentInitiationConsentPaymentExecuteRequest} paymentInitiationConsentPaymentExecuteRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationConsentPaymentExecute(paymentInitiationConsentPaymentExecuteRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/consent/revoke` endpoint can be used to revoke the payment consent. Once the consent is revoked, it is not possible to initiate payments using it.
     * @summary Revoke payment consent
     * @param {PaymentInitiationConsentRevokeRequest} paymentInitiationConsentRevokeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationConsentRevoke(paymentInitiationConsentRevokeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient.  Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency).  If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day.  Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.  In Limited Production, payments must be below 5 GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency), and standing orders, variable recurring payments, and Virtual Accounts are not supported.
     * @summary Create a payment
     * @param {PaymentInitiationPaymentCreateRequest} paymentInitiationPaymentCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationPaymentCreate(paymentInitiationPaymentCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
     * @summary Get payment details
     * @param {PaymentInitiationPaymentGetRequest} paymentInitiationPaymentGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationPaymentGet(paymentInitiationPaymentGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
     * @summary List payments
     * @param {PaymentInitiationPaymentListRequest} paymentInitiationPaymentListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationPaymentList(paymentInitiationPaymentListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Reverse a settled payment from a Plaid virtual account.  The original payment must be in a settled state to be refunded. To refund partially, specify the amount as part of the request. If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet.  The refund will go back to the source account that initiated the payment. The original payment must have been initiated to a Plaid virtual account so that this account can be used to initiate the refund.  Providing counterparty information such as date of birth and address increases  the likelihood of refund being successful without human intervention.
     * @summary Reverse an existing payment
     * @param {PaymentInitiationPaymentReverseRequest} paymentInitiationPaymentReverseRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationPaymentReverse(paymentInitiationPaymentReverseRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a payment recipient for payment initiation.  The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA) or a non-Eurozone country [supported](https://plaid.com/global) by Plaid. For a standing order (recurring) payment, the recipient must be in the UK.  It is recommended to use `bacs` in the UK and `iban` in EU.  The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
     * @summary Create payment recipient
     * @param {PaymentInitiationRecipientCreateRequest} paymentInitiationRecipientCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationRecipientCreate(paymentInitiationRecipientCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Get details about a payment recipient you have previously created.
     * @summary Get payment recipient
     * @param {PaymentInitiationRecipientGetRequest} paymentInitiationRecipientGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationRecipientGet(paymentInitiationRecipientGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
     * @summary List payment recipients
     * @param {PaymentInitiationRecipientListRequest} paymentInitiationRecipientListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentInitiationRecipientList(paymentInitiationRecipientListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/payment_profile/create` endpoint to create a new payment profile. To initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field. You can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`.
     * @summary Create payment profile
     * @param {PaymentProfileCreateRequest} paymentProfileCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentProfileCreate(paymentProfileCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentProfileCreate(paymentProfileCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/payment_profile/get` endpoint to get the status of a given Payment Profile.
     * @summary Get payment profile
     * @param {PaymentProfileGetRequest} paymentProfileGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentProfileGet(paymentProfileGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentProfileGet(paymentProfileGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it’s removed, it can no longer be used to create transfers.
     * @summary Remove payment profile
     * @param {PaymentProfileRemoveRequest} paymentProfileRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    paymentProfileRemove(paymentProfileRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).paymentProfileRemove(paymentProfileRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint returns the account associated with a given processor token.  This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, the account balance returned may not be up-to-date; for realtime balance information, use `/processor/balance/get` instead. Note that some information is nullable.
     * @summary Retrieve the account associated with a processor token
     * @param {ProcessorAccountGetRequest} processorAccountGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorAccountGet(processorAccountGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorAccountGet(processorAccountGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
     * @summary Create Apex bank account token
     * @param {ProcessorApexProcessorTokenCreateRequest} processorApexProcessorTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorApexProcessorTokenCreate(processorApexProcessorTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking, savings, or cash management account that\'\'s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available.  Versioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14).
     * @summary Retrieve Auth data
     * @param {ProcessorAuthGetRequest} processorAuthGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorAuthGet(processorAuthGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorAuthGet(processorAuthGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/balance/get` endpoint returns the real-time balance for each of an Item\'s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached.
     * @summary Retrieve Balance data
     * @param {ProcessorBalanceGetRequest} processorBalanceGetRequest The &#x60;/processor/balance/get&#x60; endpoint returns the real-time balance for the account associated with a given &#x60;processor_token&#x60;.  The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.  Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of &#x60;null&#x60;.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorBalanceGet(processorBalanceGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorBalanceGet(processorBalanceGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
     * @summary Create a bank transfer as a processor
     * @param {ProcessorBankTransferCreateRequest} processorBankTransferCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorBankTransferCreate(processorBankTransferCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorBankTransferCreate(processorBankTransferCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
     * @summary Retrieve Identity data
     * @param {ProcessorIdentityGetRequest} processorIdentityGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorIdentityGet(processorIdentityGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorIdentityGet(processorIdentityGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder\'s financial institution.  Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.
     * @summary Retrieve identity match score
     * @param {ProcessorIdentityMatchRequest} processorIdentityMatchRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorIdentityMatch(processorIdentityMatchRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorIdentityMatch(processorIdentityMatchRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint returns the stock position data of the account associated with a given processor token.
     * @summary Retrieve Investment Holdings
     * @param {ProcessorInvestmentsHoldingsGetRequest} processorInvestmentsHoldingsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorInvestmentsHoldingsGet(processorInvestmentsHoldingsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for the investment account associated with the processor token.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Due to the potentially large number of investment transactions associated with the account, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.  Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/processor/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/processor/investments/transactions/get` immediately after Link may take up to one to two minutes to return.  Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/processor/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/processor/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Investments Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
     * @summary Get investment transactions data
     * @param {ProcessorInvestmentsTransactionsGetRequest} processorInvestmentsTransactionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorInvestmentsTransactionsGet(processorInvestmentsTransactionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/liabilities/get` endpoint returns various details about a loan or credit account. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`.  The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/processor/liabilities/get`.  Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the processor token. This is because Plaid must communicate directly with the institution to retrieve the additional data.
     * @summary Retrieve Liabilities data
     * @param {ProcessorLiabilitiesGetRequest} processorLiabilitiesGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorLiabilitiesGet(processorLiabilitiesGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorLiabilitiesGet(processorLiabilitiesGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * After calling `/processor/signal/evaluate`, call `/processor/signal/decision/report` to report whether the transaction was initiated.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was initiated.
     * @summary Report whether you initiated an ACH transaction
     * @param {ProcessorSignalDecisionReportRequest} processorSignalDecisionReportRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorSignalDecisionReport(processorSignalDecisionReportRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorSignalDecisionReport(processorSignalDecisionReportRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/processor/signal/evaluate` to evaluate a planned ACH transaction as a processor to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/processor/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to our error documentation on [item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time. To reduce this latency, you can call `/signal/prepare` on the Item before you need to request Signal data.
     * @summary Evaluate a planned ACH transaction
     * @param {ProcessorSignalEvaluateRequest} processorSignalEvaluateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorSignalEvaluate(processorSignalEvaluateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorSignalEvaluate(processorSignalEvaluateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * When a processor token is not initialized with Signal, call `/processor/signal/prepare` to opt-in that processor token to the Signal data collection process, which will improve the accuracy of the Signal score.  If this endpoint is called with a processor token that is already initialized with Signal, it will return a 200 response and will not modify the processor token.
     * @summary Opt-in a processor token to Signal
     * @param {ProcessorSignalPrepareRequest} processorSignalPrepareRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorSignalPrepare(processorSignalPrepareRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorSignalPrepare(processorSignalPrepareRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Call the `/processor/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/processor/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.  If you are using the [Plaid Transfer product](https://www.plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was returned.
     * @summary Report a return for an ACH transaction
     * @param {ProcessorSignalReturnReportRequest} processorSignalReturnReportRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorSignalReturnReport(processorSignalReturnReportRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorSignalReturnReport(processorSignalReturnReportRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     *  Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).  Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user\'s bank account information changes or they revoke Plaid\'s permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new `access_token`.  To revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`.
     * @summary Create Stripe bank account token
     * @param {ProcessorStripeBankAccountTokenCreateRequest} processorStripeBankAccountTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorStripeBankAccountTokenCreate(processorStripeBankAccountTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Used to create a token suitable for sending to one of Plaid\'s partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item cannot be modified or updated. To revoke the processor\'s access, the entire Item must be deleted by calling `/item/remove`.
     * @summary Create processor token
     * @param {ProcessorTokenCreateRequest} processorTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTokenCreate(processorTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTokenCreate(processorTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Used to get a processor token\'s product permissions. The `products` field will be an empty list if the processor can access all available products.
     * @summary Get a processor token\'s product permissions
     * @param {ProcessorTokenPermissionsGetRequest} processorTokenPermissionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTokenPermissionsGet(processorTokenPermissionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Used to control a processor\'s access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor\'s needs change.
     * @summary Control a processor\'s access to products
     * @param {ProcessorTokenPermissionsSetRequest} processorTokenPermissionsSetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTokenPermissionsSet(processorTokenPermissionsSetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint allows you, the processor, to update the webhook URL associated with a processor token. This request triggers a `WEBHOOK_UPDATE_ACKNOWLEDGED` webhook to the newly specified webhook URL.
     * @summary Update a processor token\'s webhook URL
     * @param {ProcessorTokenWebhookUpdateRequest} processorTokenWebhookUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTokenWebhookUpdate(processorTokenWebhookUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/processor/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with a processor token, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/processor/transactions/get` will be the data available for the processor token as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint.  Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn\'t. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
     * @summary Get transaction data
     * @param {ProcessorTransactionsGetRequest} processorTransactionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTransactionsGet(processorTransactionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTransactionsGet(processorTransactionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on a processor token that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/processor/transactions/get` or `/processor/transactions/sync`). Once all historical transactions have been fetched, call `/processor/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/processor/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/processor/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
     * @summary Fetch recurring transaction streams
     * @param {ProcessorTransactionsRecurringGetRequest} processorTransactionsRecurringGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTransactionsRecurringGet(processorTransactionsRecurringGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/processor/transactions/refresh` is offered as an add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
     * @summary Refresh transaction data
     * @param {ProcessorTransactionsRefreshRequest} processorTransactionsRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTransactionsRefresh(processorTransactionsRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTransactionsRefresh(processorTransactionsRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     *  The `/processor/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/processor/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/processor/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.  When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/processor/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.  To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.
     * @summary Get incremental transaction updates on a processor token
     * @param {ProcessorTransactionsSyncRequest} processorTransactionsSyncRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    processorTransactionsSync(processorTransactionsSyncRequest, options) {
        return exports.PlaidApiFp(this.configuration).processorTransactionsSync(processorTransactionsSyncRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user.
     * @summary Check a user\'s Plaid Network status
     * @param {ProfileNetworkStatusGetRequest} profileNetworkStatusGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    profileNetworkStatusGet(profileNetworkStatusGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).profileNetworkStatusGet(profileNetworkStatusGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment.
     * @summary Manually fire a bank income webhook in sandbox
     * @param {SandboxBankIncomeFireWebhookRequest} sandboxBankIncomeFireWebhookRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxBankIncomeFireWebhook(sandboxBankIncomeFireWebhookRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
     * @summary Manually fire a Bank Transfer webhook
     * @param {SandboxBankTransferFireWebhookRequest} sandboxBankTransferFireWebhookRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxBankTransferFireWebhook(sandboxBankTransferFireWebhookRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
     * @summary Simulate a bank transfer event in Sandbox
     * @param {SandboxBankTransferSimulateRequest} sandboxBankTransferSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxBankTransferSimulate(sandboxBankTransferSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for cashflow updates (Monitoring) in the Sandbox environment.
     * @summary Trigger an update for Cashflow Updates
     * @param {SandboxCraCashflowUpdatesUpdateRequest} sandboxCraCashflowUpdatesUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxCraCashflowUpdatesUpdate(sandboxCraCashflowUpdatesUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.
     * @summary Manually fire an Income webhook
     * @param {SandboxIncomeFireWebhookRequest} sandboxIncomeFireWebhookRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxIncomeFireWebhook(sandboxIncomeFireWebhookRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:  `DEFAULT_UPDATE`: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the `webhook_type` in the request body. Valid Sandbox `DEFAULT_UPDATE` webhook types include: `AUTH`, `IDENTITY`, `TRANSACTIONS`, `INVESTMENTS_TRANSACTIONS`, `LIABILITIES`, `HOLDINGS`. If the Item does not support the product, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it.  `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given same day micro-deposit item is verified via SMS verification.  `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app.  `PENDING_DISCONNECT`: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working.   `RECURRING_TRANSACTIONS_UPDATE`: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `SYNC_UPDATES_AVAILABLE`: Transactions webhook to be fired for a given Sandbox Item.  If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `PRODUCT_READY`: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.  `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions’ consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider\'s portal. This webhook is currently sent only for Chase and PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item.  Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type `TRANSFER`).
     * @summary Fire a test webhook
     * @param {SandboxItemFireWebhookRequest} sandboxItemFireWebhookRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxItemFireWebhook(sandboxItemFireWebhookRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
     * @summary Force a Sandbox Item into an error state
     * @param {SandboxItemResetLoginRequest} sandboxItemResetLoginRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxItemResetLogin(sandboxItemResetLoginRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxItemResetLogin(sandboxItemResetLoginRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.  For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
     * @summary Set verification status for Sandbox account
     * @param {SandboxItemSetVerificationStatusRequest} sandboxItemSetVerificationStatusRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxItemSetVerificationStatus(sandboxItemSetVerificationStatusRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Save the selected accounts when connecting to the Platypus Oauth institution
     * @summary Save the selected accounts when connecting to the Platypus Oauth institution
     * @param {SandboxOauthSelectAccountsRequest} sandboxOauthSelectAccountsRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxOauthSelectAccounts(sandboxOauthSelectAccountsRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/sandbox/payment_profile/reset_login/` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment.   After calling `/sandbox/payment_profile/reset_login`, calls to the `/transfer/authorization/create` with the Payment Profile will result in a `decision_rationale` `PAYMENT_PROFILE_LOGIN_REQUIRED`. You can then use update mode for Payment Profile to restore it into a good state.   In order to invoke this endpoint, you must first [create a Payment Profile](https://plaid.com/docs/transfer/add-to-app/#create-a-payment-profile-optional) and [go through the Link flow](https://plaid.com/docs/transfer/add-to-app/#create-a-link-token).
     * @summary Reset the login of a Payment Profile
     * @param {SandboxPaymentProfileResetLoginRequest} sandboxPaymentProfileResetLoginRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxPaymentProfileResetLogin(sandboxPaymentProfileResetLoginRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/payment/simulate` endpoint to simulate various payment events in the Sandbox environment. This endpoint will trigger the corresponding payment status webhook.
     * @summary Simulate a payment event in Sandbox
     * @param {SandboxPaymentSimulateRequest} sandboxPaymentSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxPaymentSimulate(sandboxPaymentSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
     * @summary Create a test Item and processor token
     * @param {SandboxProcessorTokenCreateRequest} sandboxProcessorTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxProcessorTokenCreate(sandboxProcessorTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/public_token/create` endpoint to create a valid `public_token`  for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data, or with Plaid\'s [pre-populated Sandbox test accounts](https://plaid.com/docs/sandbox/test-credentials/).
     * @summary Create a test Item
     * @param {SandboxPublicTokenCreateRequest} sandboxPublicTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxPublicTokenCreate(sandboxPublicTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment.
     * @summary Manually fire a Transfer webhook
     * @param {SandboxTransferFireWebhookRequest} sandboxTransferFireWebhookRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferFireWebhook(sandboxTransferFireWebhookRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment.
     * @summary Simulate a ledger deposit event in Sandbox
     * @param {SandboxTransferLedgerDepositSimulateRequest} sandboxTransferLedgerDepositSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferLedgerDepositSimulate(sandboxTransferLedgerDepositSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.
     * @summary Simulate converting pending balance to available balance
     * @param {SandboxTransferLedgerSimulateAvailableRequest} sandboxTransferLedgerSimulateAvailableRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferLedgerSimulateAvailable(sandboxTransferLedgerSimulateAvailableRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment.
     * @summary Simulate a ledger withdraw event in Sandbox
     * @param {SandboxTransferLedgerWithdrawSimulateRequest} sandboxTransferLedgerWithdrawSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferLedgerWithdrawSimulate(sandboxTransferLedgerWithdrawSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/refund/simulate` endpoint to simulate a refund event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
     * @summary Simulate a refund event in Sandbox
     * @param {SandboxTransferRefundSimulateRequest} sandboxTransferRefundSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferRefundSimulate(sandboxTransferRefundSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned.
     * @summary Trigger the creation of a repayment
     * @param {SandboxTransferRepaymentSimulateRequest} sandboxTransferRepaymentSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferRepaymentSimulate(sandboxTransferRepaymentSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
     * @summary Simulate a transfer event in Sandbox
     * @param {SandboxTransferSimulateRequest} sandboxTransferSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferSimulate(sandboxTransferSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferSimulate(sandboxTransferSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of `swept` will become `swept_settled`, all `posted` or `pending` transfers with a sweep status of `unswept` will become `swept`, and all `returned` transfers with a sweep status of `swept` will become `return_swept`.
     * @summary Simulate creating a sweep
     * @param {SandboxTransferSweepSimulateRequest} sandboxTransferSweepSimulateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferSweepSimulate(sandboxTransferSweepSimulateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing `virtual_time`, but may never go back to a lower `virtual_time`.  If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.  For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting `virtual_time` = t + 15 days, 2 new originations should be created, along with the webhook events.  The advancement of the test clock from its current `virtual_time` should be limited such that there are no more than 20 originations resulting from the advance operation on each `recurring_transfer` associated with the `test_clock`.  For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the `virtual_time` up to 80 weeks on each API call.
     * @summary Advance a test clock
     * @param {SandboxTransferTestClockAdvanceRequest} sandboxTransferTestClockAdvanceRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferTestClockAdvance(sandboxTransferTestClockAdvanceRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment.  A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox.  A test clock can be associated with up to 5 recurring transfers.
     * @summary Create a test clock
     * @param {SandboxTransferTestClockCreateRequest} sandboxTransferTestClockCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferTestClockCreate(sandboxTransferTestClockCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment.
     * @summary Get a test clock
     * @param {SandboxTransferTestClockGetRequest} sandboxTransferTestClockGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferTestClockGet(sandboxTransferTestClockGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/sandbox/transfer/test_clock/list` endpoint to see a list of all your test clocks in the Sandbox environment, by ascending `virtual_time`. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired test clocks.
     * @summary List test clocks
     * @param {SandboxTransferTestClockListRequest} sandboxTransferTestClockListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxTransferTestClockList(sandboxTransferTestClockListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link\'s [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/user/reset_login`, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.   In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
     * @summary Force item(s) for a Sandbox User into an error state
     * @param {SandboxUserResetLoginRequest} sandboxUserResetLoginRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    sandboxUserResetLogin(sandboxUserResetLoginRequest, options) {
        return exports.PlaidApiFp(this.configuration).sandboxUserResetLogin(sandboxUserResetLoginRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated.
     * @summary Report whether you initiated an ACH transaction
     * @param {SignalDecisionReportRequest} signalDecisionReportRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    signalDecisionReport(signalDecisionReportRequest, options) {
        return exports.PlaidApiFp(this.configuration).signalDecisionReport(signalDecisionReportRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.  In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to the error documentation on [Item errors](/docs/errors/item/) and [Link in Update Mode](/docs/link/update-mode/).  Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time.
     * @summary Evaluate a planned ACH transaction
     * @param {SignalEvaluateRequest} signalEvaluateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    signalEvaluate(signalEvaluateRequest, options) {
        return exports.PlaidApiFp(this.configuration).signalEvaluate(signalEvaluateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * When an Item is not initialized with Signal, call `/signal/prepare` to opt-in that Item to the Signal data collection process, developing a Signal score. This should be done on Items where Signal was added in the `additional_consented_products` array but not in the `products`, `optional_products`, or `required_if_supported_products` array. If `/signal/prepare` is skipped on an Item that is not initialized with Signal, the initial call to `/signal/evaluate` on that Item will be less accurate, because Signal will have access to less data for computing the Signal score.  If run on an Item that is already initialized with Signal, this endpoint will return a 200 response and will not modify the Item.
     * @summary Opt-in an Item to Signal
     * @param {SignalPrepareRequest} signalPrepareRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    signalPrepare(signalPrepareRequest, options) {
        return exports.PlaidApiFp(this.configuration).signalPrepare(signalPrepareRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
     * @summary Report a return for an ACH transaction
     * @param {SignalReturnReportRequest} signalReturnReportRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    signalReturnReport(signalReturnReportRequest, options) {
        return exports.PlaidApiFp(this.configuration).signalReturnReport(signalReturnReportRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use `/signal/schedule` to schedule a planned ACH transaction.
     * @summary Schedule a planned ACH transaction
     * @param {SignalScheduleRequest} signalScheduleRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    signalSchedule(signalScheduleRequest, options) {
        return exports.PlaidApiFp(this.configuration).signalSchedule(signalScheduleRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/statements/download` endpoint retrieves a single statement PDF in binary format.  The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system.
     * @summary Retrieve a single statement.
     * @param {StatementsDownloadRequest} statementsDownloadRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    statementsDownload(statementsDownloadRequest, options) {
        return exports.PlaidApiFp(this.configuration).statementsDownload(statementsDownloadRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/statements/list` endpoint retrieves a list of all statements associated with an item.
     * @summary Retrieve a list of all statements associated with an item.
     * @param {StatementsListRequest} statementsListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    statementsList(statementsListRequest, options) {
        return exports.PlaidApiFp(this.configuration).statementsList(statementsListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.
     * @summary Refresh statements data.
     * @param {StatementsRefreshRequest} statementsRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    statementsRefresh(statementsRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).statementsRefresh(statementsRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.  The product is currently in beta.
     * @summary enhance locally-held transaction data
     * @param {TransactionsEnhanceGetRequest} transactionsEnhanceGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsEnhance(transactionsEnhanceGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsEnhance(transactionsEnhanceGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.
     * @summary Enrich locally-held transaction data
     * @param {TransactionsEnrichRequest} transactionsEnrichRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsEnrich(transactionsEnrichRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsEnrich(transactionsEnrichRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates.  The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.  Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).  Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.  Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.  Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn\'t. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
     * @summary Get transaction data
     * @param {TransactionsGetRequest} transactionsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsGet(transactionsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsGet(transactionsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.  This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.  This endpoint can only be called on an Item that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/transactions/get` or `/transactions/sync`).   When using Recurring Transactions, for best results, make sure to use the [`days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) parameter to request at least 180 days of history when initializing Items with Transactions. Once all historical transactions have been fetched, call `/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook.  After the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.
     * @summary Fetch recurring transaction streams
     * @param {TransactionsRecurringGetRequest} transactionsRecurringGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsRecurringGet(transactionsRecurringGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsRecurringGet(transactionsRecurringGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item. The on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled Item. The Item must already have Transactions added as a product in order to call `/transactions/refresh`.  If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/transactions/sync` and `/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get` or `/transactions/sync`.  Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.  As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests.  `/transactions/refresh` is offered as an optional add-on to Transactions and has a separate [fee model](/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager.
     * @summary Refresh transaction data
     * @param {TransactionsRefreshRequest} transactionsRefreshRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsRefresh(transactionsRefreshRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsRefresh(transactionsRefreshRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/rules/v1/create` endpoint creates transaction categorization rules.  Rules will be applied on the Item\'s transactions returned in `/transactions/get` response.  The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
     * @summary Create transaction category rule
     * @param {TransactionsRulesCreateRequest} transactionsRulesCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsRulesCreate(transactionsRulesCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsRulesCreate(transactionsRulesCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token.
     * @summary Return a list of rules created for the Item associated with the access token.
     * @param {TransactionsRulesListRequest} transactionsRulesListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsRulesList(transactionsRulesListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsRulesList(transactionsRulesListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/rules/v1/remove` endpoint is used to remove a transaction rule.
     * @summary Remove transaction rule
     * @param {TransactionsRulesRemoveRequest} transactionsRulesRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsRulesRemove(transactionsRulesRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsRulesRemove(transactionsRulesRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen.  For important instructions on integrating with `/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/).  This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.   When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.  If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays.   Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the `/transactions/refresh` endpoint.  To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.
     * @summary Get incremental transaction updates on an Item
     * @param {TransactionsSyncRequest} transactionsSyncRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsSync(transactionsSyncRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsSync(transactionsSyncRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`.  The product is currently in beta.
     * @summary Obtain user insights based on transactions sent through /transactions/enrich
     * @param {TransactionsUserInsightsGetRequest} transactionsUserInsightsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transactionsUserInsightsGet(transactionsUserInsightsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/authorization/cancel` endpoint to cancel a transfer authorization. A transfer authorization is eligible for cancellation if it has not yet been used to create a transfer.
     * @summary Cancel a transfer authorization
     * @param {TransferAuthorizationCancelRequest} transferAuthorizationCancelRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferAuthorizationCancel(transferAuthorizationCancelRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferAuthorizationCancel(transferAuthorizationCancelRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/authorization/create` endpoint to authorize a transfer. This endpoint must be called prior to calling `/transfer/create`. The transfer authorization will expire if not used after one hour. (You can contact your account manager to change the default authorization lifetime.)   There are four possible outcomes to calling this endpoint:     - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer.     - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization.    - If the `authorization.decision` is `approved`, and the `authorization.rationale_code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`.      - If the `authorization.decision` is `approved` and the `authorization.rationale_code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema.  In Plaid\'s Sandbox environment the decisions will be returned as follows:    - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account.    - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).    - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).    - To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.    - To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
     * @summary Create a transfer authorization
     * @param {TransferAuthorizationCreateRequest} transferAuthorizationCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferAuthorizationCreate(transferAuthorizationCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferAuthorizationCreate(transferAuthorizationCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * (Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid.
     * @summary (Deprecated) Retrieve a balance held with Plaid
     * @param {TransferBalanceGetRequest} transferBalanceGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferBalanceGet(transferBalanceGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferBalanceGet(transferBalanceGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/cancel` endpoint to cancel a transfer.  A transfer is eligible for cancellation if the `cancellable` property returned by `/transfer/get` is `true`.
     * @summary Cancel a transfer
     * @param {TransferCancelRequest} transferCancelRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferCancel(transferCancelRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferCancel(transferCancelRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/capabilities/get` endpoint to determine the RTP eligibility information of an account to be used with Transfer. This endpoint works on all Transfer-capable Items, including those created by `/transfer/migrate_account`. To simulate RTP eligibility in Sandbox, log in using the username `user_good` and password `pass_good` and use the first two checking and savings accounts in the \"First Platypus Bank\" institution (ending in 0000 or 1111), which will return `true`. Any other account will return `false`.
     * @summary Get RTP eligibility information of a transfer
     * @param {TransferCapabilitiesGetRequest} transferCapabilitiesGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferCapabilitiesGet(transferCapabilitiesGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferCapabilitiesGet(transferCapabilitiesGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/configuration/get` endpoint to view your transfer product configurations.
     * @summary Get transfer product configuration
     * @param {TransferConfigurationGetRequest} transferConfigurationGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferConfigurationGet(transferConfigurationGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferConfigurationGet(transferConfigurationGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/create` endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided `transfer_id` has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use [Transfer events](https://plaid.com/docs/transfer/reconciling-transfers/).
     * @summary Create a transfer
     * @param {TransferCreateRequest} transferCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferCreate(transferCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferCreate(transferCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. You must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header.
     * @summary Upload transfer diligence document on behalf of the originator
     * @param {TransferDiligenceDocumentUploadRequest} transferDiligenceDocumentUploadRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferDiligenceDocumentUpload(transferDiligenceDocumentUploadRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).
     * @summary Submit transfer diligence on behalf of the originator
     * @param {TransferDiligenceSubmitRequest} transferDiligenceSubmitRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferDiligenceSubmit(transferDiligenceSubmitRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferDiligenceSubmit(transferDiligenceSubmitRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
     * @summary List transfer events
     * @param {TransferEventListRequest} transferEventListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferEventList(transferEventListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferEventList(transferEventListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.
     * @summary Sync transfer events
     * @param {TransferEventSyncRequest} transferEventSyncRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferEventSync(transferEventSyncRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferEventSync(transferEventSyncRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/get` endpoint fetches information about the transfer corresponding to the given `transfer_id` or `authorization_id`. One of `transfer_id` or `authorization_id` must be populated but not both.
     * @summary Retrieve a transfer
     * @param {TransferGetRequest} transferGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferGet(transferGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferGet(transferGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.
     * @summary Create a transfer intent object to invoke the Transfer UI
     * @param {TransferIntentCreateRequest} transferIntentCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferIntentCreate(transferIntentCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferIntentCreate(transferIntentCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.
     * @summary Retrieve more information about a transfer intent
     * @param {TransferIntentGetRequest} transferIntentGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferIntentGet(transferIntentGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferIntentGet(transferIntentGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger.
     * @summary Deposit funds into a Plaid Ledger balance
     * @param {TransferLedgerDepositRequest} transferLedgerDepositRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferLedgerDeposit(transferLedgerDepositRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferLedgerDeposit(transferLedgerDepositRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/ledger/distribute` endpoint to move available balance between the ledgers of the platform and one of its originators.
     * @summary Move available balance between the ledgers of the platform and one of its originators
     * @param {TransferLedgerDistributeRequest} transferLedgerDistributeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferLedgerDistribute(transferLedgerDistributeRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferLedgerDistribute(transferLedgerDistributeRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid.
     * @summary Retrieve Plaid Ledger balance
     * @param {TransferLedgerGetRequest} transferLedgerGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferLedgerGet(transferLedgerGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferLedgerGet(transferLedgerGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance.
     * @summary Withdraw funds from a Plaid Ledger balance
     * @param {TransferLedgerWithdrawRequest} transferLedgerWithdrawRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferLedgerWithdraw(transferLedgerWithdrawRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferLedgerWithdraw(transferLedgerWithdrawRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
     * @summary List transfers
     * @param {TransferListRequest} transferListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferList(transferListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferList(transferListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics.
     * @summary Get transfer product usage metrics
     * @param {TransferMetricsGetRequest} transferMetricsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferMetricsGet(transferMetricsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferMetricsGet(transferMetricsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
     * @summary Migrate account into Transfers
     * @param {TransferMigrateAccountRequest} transferMigrateAccountRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferMigrateAccount(transferMigrateAccountRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferMigrateAccount(transferMigrateAccountRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`.
     * @summary Create a new originator
     * @param {TransferOriginatorCreateRequest} transferOriginatorCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferOriginatorCreate(transferOriginatorCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferOriginatorCreate(transferOriginatorCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator.
     * @summary Update the funding account associated with the originator
     * @param {TransferOriginatorFundingAccountUpdateRequest} transferOriginatorFundingAccountUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferOriginatorFundingAccountUpdate(transferOriginatorFundingAccountUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/originator/get` endpoint gets status updates for an originator\'s onboarding process. This information is also available via the Transfer page on the Plaid dashboard.
     * @summary Get status of an originator\'s onboarding
     * @param {TransferOriginatorGetRequest} transferOriginatorGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferOriginatorGet(transferOriginatorGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferOriginatorGet(transferOriginatorGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/originator/list` endpoint gets status updates for all of your originators\' onboarding. This information is also available via the Plaid dashboard.
     * @summary Get status of all originators\' onboarding
     * @param {TransferOriginatorListRequest} transferOriginatorListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferOriginatorList(transferOriginatorListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferOriginatorList(transferOriginatorListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/platform/originator/create` endpoint allows gathering information about the originator specific to the Scaled Platform Transfer offering, including the originator\'s agreement to legal terms required before accepting any further information related to the originator.
     * @summary Create an originator for scaled platform customers
     * @param {TransferPlatformOriginatorCreateRequest} transferPlatformOriginatorCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferPlatformOriginatorCreate(transferPlatformOriginatorCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/platform/person/create` endpoint to create a person record associated with an originator and optionally submit person-specific requirements.
     * @summary Create a person associated with an originator
     * @param {TransferPlatformPersonCreateRequest} transferPlatformPersonCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferPlatformPersonCreate(transferPlatformPersonCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/platform/requirement/submit` endpoint allows platforms to submit onboarding requirements for an originator as part of the Scaled Platform Transfer offering.
     * @summary Submit onboarding requirements for Scaled Platform originators
     * @param {TransferPlatformRequirementSubmitRequest} transferPlatformRequirementSubmitRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferPlatformRequirementSubmit(transferPlatformRequirementSubmitRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement.
     * @summary Generate a Plaid-hosted onboarding UI URL.
     * @param {TransferQuestionnaireCreateRequest} transferQuestionnaireCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferQuestionnaireCreate(transferQuestionnaireCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer.  Scheduled transfer that hasn\'t been submitted to bank will be cancelled.
     * @summary Cancel a recurring transfer.
     * @param {TransferRecurringCancelRequest} transferRecurringCancelRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRecurringCancel(transferRecurringCancelRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRecurringCancel(transferRecurringCancelRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/recurring/create` endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Platform Payments (beta) customers.
     * @summary Create a recurring transfer
     * @param {TransferRecurringCreateRequest} transferRecurringCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRecurringCreate(transferRecurringCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRecurringCreate(transferRecurringCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`.
     * @summary Retrieve a recurring transfer
     * @param {TransferRecurringGetRequest} transferRecurringGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRecurringGet(transferRecurringGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRecurringGet(transferRecurringGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/recurring/list` endpoint to see a list of all your recurring transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired recurring transfers.
     * @summary List recurring transfers
     * @param {TransferRecurringListRequest} transferRecurringListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRecurringList(transferRecurringListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRecurringList(transferRecurringListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/refund/cancel` endpoint to cancel a refund.  A refund is eligible for cancellation if it has not yet been submitted to the payment network.
     * @summary Cancel a refund
     * @param {TransferRefundCancelRequest} transferRefundCancelRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRefundCancel(transferRefundCancelRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRefundCancel(transferRefundCancelRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Use the `/transfer/refund/create` endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days.  Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds.
     * @summary Create a refund
     * @param {TransferRefundCreateRequest} transferRefundCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRefundCreate(transferRefundCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRefundCreate(transferRefundCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`.
     * @summary Retrieve a refund
     * @param {TransferRefundGetRequest} transferRefundGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRefundGet(transferRefundGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRefundGet(transferRefundGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/repayment/list` endpoint fetches repayments matching the given filters. Repayments are returned in reverse-chronological order (most recent first) starting at the given `start_time`.
     * @summary Lists historical repayments
     * @param {TransferRepaymentListRequest} transferRepaymentListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRepaymentList(transferRepaymentListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRepaymentList(transferRepaymentListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/repayment/return/list` endpoint retrieves the set of returns that were batched together into the specified repayment. The sum of amounts of returns retrieved by this request equals the amount of the repayment.
     * @summary List the returns included in a repayment
     * @param {TransferRepaymentReturnListRequest} transferRepaymentReturnListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferRepaymentReturnList(transferRepaymentReturnListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferRepaymentReturnList(transferRepaymentReturnListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.
     * @summary Retrieve a sweep
     * @param {TransferSweepGetRequest} transferSweepGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferSweepGet(transferSweepGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferSweepGet(transferSweepGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.
     * @summary List sweeps
     * @param {TransferSweepListRequest} transferSweepListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    transferSweepList(transferSweepListRequest, options) {
        return exports.PlaidApiFp(this.configuration).transferSweepList(transferSweepListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns user permissioned account data including identity and Item access tokens.
     * @summary Retrieve User Account
     * @param {UserAccountSessionGetRequest} userAccountSessionGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userAccountSessionGet(userAccountSessionGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).userAccountSessionGet(userAccountSessionGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint should be called for each of your end users before they begin a Plaid Check or Income flow, or a Multi-Item Link flow. This provides you a single token to access all data associated with the user. You should only create one per end user.  The `consumer_report_user_identity` object must be present in order to create a Plaid Check Consumer Report for a user. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.  If you call the endpoint multiple times with the same `client_user_id`, the first creation call will succeed and the rest will fail with an error message indicating that the user has been created for the given `client_user_id`.  Ensure that you store the `user_token` along with your user\'s identifier in your database, as it is not possible to retrieve a previously created `user_token`.
     * @summary Create user
     * @param {UserCreateRequest} userCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userCreate(userCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).userCreate(userCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Returns Items associated with a User along with their corresponding statuses.
     * @summary Get Items associated with a User
     * @param {UserItemsGetRequest} userItemsGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userItemsGet(userItemsGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).userItemsGet(userItemsGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * `/user/remove` deletes a user token and and associated information, including any Items associated with the token.  Any subsequent calls to retrieve information using the same user token will result in an error stating the user does not exist.
     * @summary Remove user
     * @param {UserRemoveRequest} userRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userRemove(userRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).userRemove(userRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint is used to create a third-party user token. This token can be shared with and used by a specified third-party client to access data associated with the user through supported endpoints.  Ensure you store the `third_party_user_token` along with the `user_token` and `third_party_client_id`, as it is not possible to retrieve a previously created `third_party_user_token`.
     * @summary Create a third-party user token
     * @param {UserThirdPartyTokenCreateRequest} userThirdPartyTokenCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).userThirdPartyTokenCreate(userThirdPartyTokenCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user.   Any subsequent calls to retrieve information using the same third-party user token will result in an error stating the third-party user token does not exist.
     * @summary Remove a third-party user token
     * @param {UserThirdPartyTokenRemoveRequest} userThirdPartyTokenRemoveRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options) {
        return exports.PlaidApiFp(this.configuration).userThirdPartyTokenRemove(userThirdPartyTokenRemoveRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint is used to update user information associated with an existing `user_token`. It can also be used to enable an existing `user_token` for use with Consumer Reports by Plaid Check, by adding a `consumer_report_user_identity` object to the user. Plaid Check Consumer Reports can only be created for US-based users; the user\'s address country must be `US`.
     * @summary Update user information
     * @param {UserUpdateRequest} userUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    userUpdate(userUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).userUpdate(userUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create an e-wallet. The response is the newly created e-wallet object.
     * @summary Create an e-wallet
     * @param {WalletCreateRequest} walletCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletCreate(walletCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletCreate(walletCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Fetch an e-wallet. The response includes the current balance.
     * @summary Fetch an e-wallet
     * @param {WalletGetRequest} walletGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletGet(walletGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletGet(walletGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint lists all e-wallets in descending order of creation.
     * @summary Fetch a list of e-wallets
     * @param {WalletListRequest} walletListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletList(walletListRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletList(walletListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction. Transactions will settle in seconds to several days, depending on the underlying payment rail.
     * @summary Execute a transaction using an e-wallet
     * @param {WalletTransactionExecuteRequest} walletTransactionExecuteRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletTransactionExecute(walletTransactionExecuteRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletTransactionExecute(walletTransactionExecuteRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Fetch a specific e-wallet transaction
     * @summary Fetch an e-wallet transaction
     * @param {WalletTransactionGetRequest} walletTransactionGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletTransactionGet(walletTransactionGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletTransactionGet(walletTransactionGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.
     * @summary List e-wallet transactions
     * @param {WalletTransactionListRequest} walletTransactionListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    walletTransactionList(walletTransactionListRequest, options) {
        return exports.PlaidApiFp(this.configuration).walletTransactionList(walletTransactionListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a new entity watchlist screening to check your customer against watchlists defined in the associated entity watchlist program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
     * @summary Create a watchlist screening for an entity
     * @param {WatchlistScreeningEntityCreateRequest} watchlistScreeningEntityCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityCreate(watchlistScreeningEntityCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Retrieve an entity watchlist screening.
     * @summary Get an entity screening
     * @param {WatchlistScreeningEntityGetRequest} watchlistScreeningEntityGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityGet(watchlistScreeningEntityGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all changes to the entity watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
     * @summary List history for entity watchlist screenings
     * @param {WatchlistScreeningEntityHistoryListRequest} watchlistScreeningEntityHistoryListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityHistoryList(watchlistScreeningEntityHistoryListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all hits for the entity watchlist screening.
     * @summary List hits for entity watchlist screenings
     * @param {WatchlistScreeningEntityHitListRequest} watchlistScreeningEntityHitListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityHitList(watchlistScreeningEntityHitListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all entity screenings.
     * @summary List entity watchlist screenings
     * @param {WatchlistScreeningEntityListRequest} watchlistScreeningEntityListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityList(watchlistScreeningEntityListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Get an entity watchlist screening program
     * @summary Get entity watchlist screening program
     * @param {WatchlistScreeningEntityProgramGetRequest} watchlistScreeningEntityProgramGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityProgramGet(watchlistScreeningEntityProgramGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all entity watchlist screening programs
     * @summary List entity watchlist screening programs
     * @param {WatchlistScreeningEntityProgramListRequest} watchlistScreeningEntityProgramListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityProgramList(watchlistScreeningEntityProgramListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a review for an entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
     * @summary Create a review for an entity watchlist screening
     * @param {WatchlistScreeningEntityReviewCreateRequest} watchlistScreeningEntityReviewCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityReviewCreate(watchlistScreeningEntityReviewCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all reviews for a particular entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
     * @summary List reviews for entity watchlist screenings
     * @param {WatchlistScreeningEntityReviewListRequest} watchlistScreeningEntityReviewListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityReviewList(watchlistScreeningEntityReviewListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Update an entity watchlist screening.
     * @summary Update an entity screening
     * @param {WatchlistScreeningEntityUpdateRequest} watchlistScreeningEntityUpdateRequest The entity screening was successfully updated.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningEntityUpdate(watchlistScreeningEntityUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a new Watchlist Screening to check your customer against watchlists defined in the associated Watchlist Program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time.
     * @summary Create a watchlist screening for a person
     * @param {WatchlistScreeningIndividualCreateRequest} watchlistScreeningIndividualCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualCreate(watchlistScreeningIndividualCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Retrieve a previously created individual watchlist screening
     * @summary Retrieve an individual watchlist screening
     * @param {WatchlistScreeningIndividualGetRequest} watchlistScreeningIndividualGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualGet(watchlistScreeningIndividualGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all changes to the individual watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned.
     * @summary List history for individual watchlist screenings
     * @param {WatchlistScreeningIndividualHistoryListRequest} watchlistScreeningIndividualHistoryListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualHistoryList(watchlistScreeningIndividualHistoryListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all hits found by Plaid for a particular individual watchlist screening.
     * @summary List hits for individual watchlist screening
     * @param {WatchlistScreeningIndividualHitListRequest} watchlistScreeningIndividualHitListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualHitList(watchlistScreeningIndividualHitListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List previously created watchlist screenings for individuals
     * @summary List Individual Watchlist Screenings
     * @param {WatchlistScreeningIndividualListRequest} watchlistScreeningIndividualListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualList(watchlistScreeningIndividualListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Get an individual watchlist screening program
     * @summary Get individual watchlist screening program
     * @param {WatchlistScreeningIndividualProgramGetRequest} watchlistScreeningIndividualProgramGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualProgramGet(watchlistScreeningIndividualProgramGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all individual watchlist screening programs
     * @summary List individual watchlist screening programs
     * @param {WatchlistScreeningIndividualProgramListRequest} watchlistScreeningIndividualProgramListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualProgramList(watchlistScreeningIndividualProgramListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Create a review for the individual watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid.
     * @summary Create a review for an individual watchlist screening
     * @param {WatchlistScreeningIndividualReviewCreateRequest} watchlistScreeningIndividualReviewCreateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualReviewCreate(watchlistScreeningIndividualReviewCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * List all reviews for the individual watchlist screening.
     * @summary List reviews for individual watchlist screenings
     * @param {WatchlistScreeningIndividualReviewListRequest} watchlistScreeningIndividualReviewListRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualReviewList(watchlistScreeningIndividualReviewListRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Update a specific individual watchlist screening. This endpoint can be used to add additional customer information, correct outdated information, add a reference id, assign the individual to a reviewer, and update which program it is associated with. Please note that you may not update `search_terms` and `status` at the same time since editing `search_terms` may trigger an automatic `status` change.
     * @summary Update individual watchlist screening
     * @param {WatchlistScreeningIndividualUpdateRequest} watchlistScreeningIndividualUpdateRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options) {
        return exports.PlaidApiFp(this.configuration).watchlistScreeningIndividualUpdate(watchlistScreeningIndividualUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
    /**
     * Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.  The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
     * @summary Get webhook verification key
     * @param {WebhookVerificationKeyGetRequest} webhookVerificationKeyGetRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlaidApi
     */
    webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options) {
        return exports.PlaidApiFp(this.configuration).webhookVerificationKeyGet(webhookVerificationKeyGetRequest, options).then((request) => request(this.axios, this.basePath));
    }
}
exports.PlaidApi = PlaidApi;
//# sourceMappingURL=data:application/json;base64,[encoded data, 5794384 characters]