@solutiofi/sdk
Version:
This SDK provides a convenient way to interact with the SolutioFi API.
2 lines (1 loc) • 3.79 kB
JavaScript
import t from"axios";import{VersionedTransaction as r}from"@solana/web3.js";function e(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function n(){return n=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)({}).hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},n.apply(null,arguments)}function o(t){for(var n,o=[],a=function(t){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}(t))){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(t);!(n=a()).done;){var i=Uint8Array.from(Buffer.from(n.value,"base64"));o.push(r.deserialize(i))}return o}var a=/*#__PURE__*/function(){function r(r){var e=this;this.client=void 0,this.apiKey=void 0,this.bearerToken=null,this.apiKey=r.apiKey,this.client=t.create({baseURL:r.baseUrl||"https://api.solutiofi.io",headers:{"Content-Type":"application/json"}}),this.client.interceptors.response.use(function(t){return t},function(t){try{var r,n=function(e){return r?e:Promise.reject(t)},o=function(){if(t.response&&(401===t.response.status||403===t.response.status))return Promise.resolve(e.authenticate()).then(function(){var n=t.config;n.headers.Authorization="Bearer "+e.bearerToken;var o=e.client.request(n);return r=1,o})}();return Promise.resolve(o&&o.then?o.then(n):n(o))}catch(t){return Promise.reject(t)}})}var e=r.prototype;return e.authenticate=function(){try{var t=this;return Promise.resolve(t.client.get("/auth/token",{headers:{"x-api-key":t.apiKey}})).then(function(r){t.bearerToken=r.data.token,t.client.defaults.headers.common.Authorization="Bearer "+t.bearerToken})}catch(t){return Promise.reject(t)}},e.close=function(t,r){try{return Promise.resolve(this.client.post("/v1/close/create",{owner:t,mints:r})).then(function(t){if(t.data.error)throw new Error("SolutfioFi API error: "+t.data.error);return o(t.data.transactions)})}catch(t){return Promise.reject(t)}},e.burn=function(t,r){try{return Promise.resolve(this.client.post("/v1/burn/create",{owner:t,mints:r})).then(function(t){if(t.data.error)throw new Error("SolutfioFi API error: "+t.data.error);return o(t.data.transactions)})}catch(t){return Promise.reject(t)}},e.merge=function(t,r,e,a){try{return Promise.resolve(this.client.post("/v1/swap/merge",{owner:t,inputAssets:r,outputMint:e,priorityFee:a})).then(function(t){return t.data.transactions&&(t.data.transactions=t.data.transactions.map(function(t){return n({},t,{transaction:o([t.transaction])[0]})})),t.data})}catch(t){return Promise.reject(t)}},e.spread=function(t,r,e,a){try{return Promise.resolve(this.client.post("/v1/swap/spread",{owner:t,inputAsset:r,targetTokens:e,priorityFee:a})).then(function(t){return t.data.transactions&&(t.data.transactions=t.data.transactions.map(function(t){return n({},t,{transaction:o([t.transaction])[0]})})),t.data})}catch(t){return Promise.reject(t)}},e.getTokenPrices=function(t){try{return Promise.resolve(this.client.post("/v1/tokens/prices",{mints:t})).then(function(t){return t.data})}catch(t){return Promise.reject(t)}},e.getUserTokens=function(t,r){try{return Promise.resolve(this.client.post("/v1/usertokens",{owner:t,type:r})).then(function(t){return t.data})}catch(t){return Promise.reject(t)}},r}();export{a as default};