UNPKG

@solutiofi/sdk

Version:

This SDK provides a convenient way to interact with the SolutioFi API.

2 lines (1 loc) 3.88 kB
var t=require("axios"),r=require("@solana/web3.js");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=/*#__PURE__*/e(t);function o(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 a(){return a=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},a.apply(null,arguments)}function i(t){for(var e,n=[],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 o(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(t,r):void 0}}(t))){r&&(t=r);var e=0;return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}}}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);!(e=a()).done;){var i=Uint8Array.from(Buffer.from(e.value,"base64"));n.push(r.VersionedTransaction.deserialize(i))}return n}module.exports=/*#__PURE__*/function(){function t(t){var r=this;this.client=void 0,this.apiKey=void 0,this.bearerToken=null,this.apiKey=t.apiKey,this.client=n.default.create({baseURL:t.baseUrl||"https://api.solutiofi.io",headers:{"Content-Type":"application/json"}}),this.client.interceptors.response.use(function(t){return t},function(t){try{var e,n=function(r){return e?r:Promise.reject(t)},o=function(){if(t.response&&(401===t.response.status||403===t.response.status))return Promise.resolve(r.authenticate()).then(function(){var n=t.config;n.headers.Authorization="Bearer "+r.bearerToken;var o=r.client.request(n);return e=1,o})}();return Promise.resolve(o&&o.then?o.then(n):n(o))}catch(t){return Promise.reject(t)}})}var r=t.prototype;return r.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)}},r.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 i(t.data.transactions)})}catch(t){return Promise.reject(t)}},r.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 i(t.data.transactions)})}catch(t){return Promise.reject(t)}},r.merge=function(t,r,e,n){try{return Promise.resolve(this.client.post("/v1/swap/merge",{owner:t,inputAssets:r,outputMint:e,priorityFee:n})).then(function(t){return t.data.transactions&&(t.data.transactions=t.data.transactions.map(function(t){return a({},t,{transaction:i([t.transaction])[0]})})),t.data})}catch(t){return Promise.reject(t)}},r.spread=function(t,r,e,n){try{return Promise.resolve(this.client.post("/v1/swap/spread",{owner:t,inputAsset:r,targetTokens:e,priorityFee:n})).then(function(t){return t.data.transactions&&(t.data.transactions=t.data.transactions.map(function(t){return a({},t,{transaction:i([t.transaction])[0]})})),t.data})}catch(t){return Promise.reject(t)}},r.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)}},r.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)}},t}();