/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/zonky-api-handler@2.35.46/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var _defineProperty=_interopDefault(require("@babel/runtime/helpers/defineProperty")),luxon=require("luxon"),restApiHandler=require("rest-api-handler");function decodeResponse(e){const t=e.headers.get("content-type");return t&&t.includes("json")?e.json():e.buffer()}class ZonkyApiException extends restApiHandler.DefaultApiException{}class ZonkyApiSMSException extends ZonkyApiException{}class ZonkyApiSMSLimitException extends ZonkyApiException{}var index={__proto__:null,ZonkyApiException:ZonkyApiException,ZonkyApiSMSException:ZonkyApiSMSException,ZonkyApiSMSLimitException:ZonkyApiSMSLimitException};const AUTHORIZATION_SMS_REQUIRED="AUTHORIZATION_SMS_REQUIRED",AUTHORIZATION_SMS_LIMIT_EXCEEDED="AUTHORIZATION_SMS_LIMIT_EXCEEDED";var ERROR_CODES={__proto__:null,AUTHORIZATION_SMS_REQUIRED:AUTHORIZATION_SMS_REQUIRED,AUTHORIZATION_SMS_LIMIT_EXCEEDED:AUTHORIZATION_SMS_LIMIT_EXCEEDED},responseProcessor=async(e,t)=>{const n={data:await decodeResponse(e),status:e.status,source:e,request:t};if(!e.ok){if("string"==typeof n.data||n.data instanceof Buffer)throw new ZonkyApiException(n);if(n.data.error===AUTHORIZATION_SMS_REQUIRED)throw new ZonkyApiSMSException(n);if(n.data.error===AUTHORIZATION_SMS_LIMIT_EXCEEDED)throw new ZonkyApiSMSLimitException(n);throw new ZonkyApiException(n)}return n};const FILE_DOWNLOAD="SCOPE_FILE_DOWNLOAD",APP_WEB="SCOPE_APP_WEB";var SCOPES={__proto__:null,FILE_DOWNLOAD:FILE_DOWNLOAD,APP_WEB:APP_WEB};function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}async function getPromiseInterval(e,t){return new Promise(((n,o)=>{const r=setInterval((()=>{e((e=>{clearInterval(r),n(e)}),(e=>{clearInterval(r),o(e)}))}),t)}))}class ZonkyApi extends restApiHandler.Api{constructor(){super("https://api.zonky.cz",[responseProcessor],{Authorization:"Basic d2ViOndlYg==","Content-Type":"application/json"}),_defineProperty(this,"refreshToken",void 0),_defineProperty(this,"accessToken",void 0),_defineProperty(this,"tokenExpire",void 0)}getAccessToken(){return this.accessToken}setAccessToken(e){return this.accessToken=e,this}setRefreshToken(e){return this.refreshToken=e,this}getRefreshToken(){return this.refreshToken}setTokenExpire(e){return this.tokenExpire=e,this}getTokenExpire(){return this.tokenExpire}async login(e,t,n=[APP_WEB,FILE_DOWNLOAD]){const{data:o}=await this.post("oauth/token",{username:e,password:t,scope:n.join(" "),grant_type:"password"},ZonkyApi.FORMATS.URL_ENCODED,{"Content-Type":"application/x-www-form-urlencoded"});return this.setDefaultHeader("Authorization",`Bearer ${o.access_token}`),this.setAccessToken(o.access_token),this.setRefreshToken(o.refresh_token),this.setTokenExpire(luxon.DateTime.local().plus({seconds:o.expires_in})),o}async getTransactions(e,t=0,n){const o=await this.get("users/me/wallet/transactions",_objectSpread({},e?{"transaction.transactionDate":e.toFormat("yyyy-MM-dd")}:{}),_objectSpread({"X-Page":t},n?{"X-Size":n}:{})),{headers:r}=o.source;return{transactions:o.data.map((e=>_objectSpread(_objectSpread({},e),{},{transactionDate:luxon.DateTime.fromISO(e.transactionDate)}))),paging:{page:t,total:Number(r.get("x-total"))}}}async download(e,t){return await this.post(e),getPromiseInterval((async(n,o)=>{const r=this.getDefaultHeaders();try{const{status:o}=await this.get(e);if(204===o){this.setDefaultHeaders(_objectSpread({},t?{"x-authorization-code":t}:{}));const{data:o}=await this.request(`${e}/data?access_token=${this.getAccessToken()}`,"GET");this.setDefaultHeaders(r),n(o)}}catch(e){this.setDefaultHeaders(r),o(e)}}),5e3)}async downloadTransactions(e){return this.download("users/me/wallet/transactions/export",e)}async downloadInvestments(){return this.download("users/me/investments/export")}async processTransactions(e,t,n=40,o=0){const{transactions:r,paging:s}=await this.getTransactions(t,o,n),i=r.map((t=>e(t)));return s.total>(s.page+1)*n&&i.push(...await this.processTransactions(e,t,n,o+1)),Promise.all(i)}}_defineProperty(ZonkyApi,"SCOPES",SCOPES),_defineProperty(ZonkyApi,"ERROR_CODES",ERROR_CODES);var transactionCategories={__proto__:null};const IN="IN",OUT="OUT";var transactionOrientations={__proto__:null,IN:IN,OUT:OUT};exports.EXCEPTION=index,exports.TRANSACTION_CATEGORIES=transactionCategories,exports.TRANSACTION_ORIENTATIONS=transactionOrientations,exports.ZonkyApi=ZonkyApi;
//# sourceMappingURL=/sm/47a2d9fa09cc1d2c4c2578d500401ab15dc55b8699cacc0ad89408bd4957de4a.map