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