mnee
Version:
Legacy package for interacting with MNEE USD stablecoin. Includes experimental features.
1 lines • 66.8 kB
JavaScript
import{Utils as e,LockingScript as r,OP as t,TransactionSignature as n,Hash as i,UnlockingScript as o,Transaction as s,PrivateKey as a,PublicKey as u,Script as c,P2PKH as f,Mnemonic as d,HD as h}from"@bsv/sdk";import*as l from"bip39";function v(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function m(e,r){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,r){if(e){if("string"==typeof e)return v(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?v(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[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.")}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},p.apply(null,arguments)}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function P(e,r){return P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e},P(e,r)}function w(e){var r="function"==typeof Map?new Map:void 0;return w=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(r){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return function(e,r,t){if(y())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var i=new(e.bind.apply(e,n));return t&&P(i,t.prototype),i}(e,arguments,g(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),P(t,e)},w(e)}function b(e){var r=new Error(e);return r.stack=void 0,r}var A=/*#__PURE__*/function(){function s(){}var a=s.prototype;return a.lock=function(n,i){var o=[];if("string"==typeof n){var s=e.fromBase58Check(n);if(0!==s.prefix[0]&&111!==s.prefix[0])throw b("only P2PKH is supported");o=s.data}else o=n;var a=new r;return a.writeOpCode(t.OP_DUP).writeOpCode(t.OP_HASH160).writeBin(o).writeOpCode(t.OP_EQUALVERIFY).writeOpCode(t.OP_CHECKSIGVERIFY).writeBin(i.encode(!0)).writeOpCode(t.OP_CHECKSIG),a},a.userUnlock=function(e,r,t,s,a){return void 0===r&&(r="all"),void 0===t&&(t=!1),{sign:function(u,c){try{var f,d,h,l=n.SIGHASH_FORKID;"all"===r&&(l|=n.SIGHASH_ALL),"none"===r&&(l|=n.SIGHASH_NONE),"single"===r&&(l|=n.SIGHASH_SINGLE),t&&(l|=n.SIGHASH_ANYONECANPAY);var v=u.inputs[c],m=u.inputs.filter(function(e,r){return r!==c}),p=v.sourceTXID?v.sourceTXID:null==(f=v.sourceTransaction)?void 0:f.id("hex");if(!p)throw b("The input sourceTXID or sourceTransaction is required for transaction signing.");if(s||(s=null==(d=v.sourceTransaction)?void 0:d.outputs[v.sourceOutputIndex].satoshis),!s)throw b("The sourceSatoshis or input sourceTransaction is required for transaction signing.");if(a||(a=null==(h=v.sourceTransaction)?void 0:h.outputs[v.sourceOutputIndex].lockingScript),!a)throw b("The lockingScript or input sourceTransaction is required for transaction signing.");var g=n.format({sourceTXID:p,sourceOutputIndex:v.sourceOutputIndex,sourceSatoshis:s,transactionVersion:u.version,otherInputs:m,inputIndex:c,outputs:u.outputs,inputSequence:v.sequence||4294967295,subscript:a,lockTime:u.lockTime,scope:l}),y=e.sign(i.sha256(g)),P=new n(y.r,y.s,l),w=new o;return w.writeBin(P.toChecksigFormat()),w.writeBin(e.toPublicKey().encode(!0)),Promise.resolve(w)}catch(e){return Promise.reject(e)}},estimateLength:function(){return Promise.resolve(182)}}},a.unlock=function(e,r,t,s,a,u){return void 0===t&&(t="all"),void 0===s&&(s=!1),{sign:function(c,f){try{var d,h,l,v=n.SIGHASH_FORKID;"all"===t&&(v|=n.SIGHASH_ALL),"none"===t&&(v|=n.SIGHASH_NONE),"single"===t&&(v|=n.SIGHASH_SINGLE),s&&(v|=n.SIGHASH_ANYONECANPAY);var m=c.inputs[f],p=c.inputs.filter(function(e,r){return r!==f}),g=m.sourceTXID?m.sourceTXID:null==(d=m.sourceTransaction)?void 0:d.id("hex");if(!g)throw b("The input sourceTXID or sourceTransaction is required for transaction signing.");if(a||(a=null==(h=m.sourceTransaction)?void 0:h.outputs[m.sourceOutputIndex].satoshis),!a)throw b("The sourceSatoshis or input sourceTransaction is required for transaction signing.");if(u||(u=null==(l=m.sourceTransaction)?void 0:l.outputs[m.sourceOutputIndex].lockingScript),!u)throw b("The lockingScript or input sourceTransaction is required for transaction signing.");var y=n.format({sourceTXID:g,sourceOutputIndex:m.sourceOutputIndex,sourceSatoshis:a,transactionVersion:c.version,otherInputs:p,inputIndex:f,outputs:c.outputs,inputSequence:m.sequence||4294967295,subscript:u,lockTime:c.lockTime,scope:v}),P=e.sign(i.sha256(y)),w=new n(P.r,P.s,v),A=new o;return A.writeBin(w.toChecksigFormat()),A.writeScript(r),Promise.resolve(A)}catch(e){return Promise.reject(e)}},estimateLength:function(){return Promise.resolve(182)}}},s}(),I=function(e){return Buffer.from(e).toString("hex")},x=function(e,t,n,i){void 0===i&&(i=!1);var o="";if(void 0!==(null==t?void 0:t.dataB64)&&void 0!==(null==t?void 0:t.contentType)){var s=I("ord"),a=Buffer.from(t.dataB64,"base64").toString("hex").trim();if(!a)throw b("Invalid file data");var u=I(t.contentType);if(!u)throw b("Invalid media type");o="OP_0 OP_IF "+s+" OP_1 "+u+" OP_0 "+a+" OP_ENDIF"}var c=(o?o+" "+(i?"OP_CODESEPARATOR ":""):"")+e.toASM();if(n&&(!n.app||!n.type))throw b("MAP.app and MAP.type are required fields");if(null!=n&&n.app&&null!=n&&n.type){c=(c?c+" ":"")+"OP_RETURN "+I("1PuQa7K62MiKCtssSLKy1kh56WWU7MtUR5")+" "+I("SET");for(var f=0,d=Object.entries(n);f<d.length;f++){var h=d[f],l=h[0],v=h[1];"cmd"!==l&&(c=c+" "+I(l)+" "+I(v))}}return r.fromASM(c)},S=1e-5,T="ae59f3b898ec61acbdb6cc7a245fabeded0c094bf046f35206a3aec60ef88127_0",k="1inHbiwj2jrEcZPiSYnfgJ8FmS1Bmk4Dh",O="833a7720966a2a435db28d967385e8aa7284b6150ebb39482cc5228b73e1703f_0",E="1AZNdbFYBDFTAEgzZMfPzANxyNrpGJZAUY",C=function(r){for(var n,o,s,a=0;a<r.chunks.length;a++){var u,c=r.chunks[a];a>=2&&3===(null==(u=c.data)?void 0:u.length)&&"ord"==e.toUTF8(c.data)&&r.chunks[a-1].op==t.OP_IF&&r.chunks[a-2].op==t.OP_FALSE&&(s=a+1)}if(void 0!==s){for(var f={file:{hash:"",size:0,type:""},fields:{}},d=s;d<r.chunks.length;d+=2){var h,l,v=r.chunks[d];if(v.op==t.OP_ENDIF)break;if(v.op>t.OP_16)return;var m=r.chunks[d+1];if(m.op>t.OP_PUSHDATA4)return;if(null==(h=v.data)||!h.length){var p=0;switch(v.op>t.OP_PUSHDATA4&&v.op<=t.OP_16?p=v.op-80:null!=(l=v.data)&&l.length&&(p=v.data[0]),p){case 0:if(f.file.size=(null==(n=m.data)?void 0:n.length)||0,null==(o=m.data)||!o.length)break;f.file.hash=e.toBase64(i.sha256(m.data)),f.file.content=m.data;break;case 1:f.file.type=Buffer.from(m.data||[]).toString()}}}return f}},N=function(r){return r.map(function(r){for(var n=r.chunks,i=0;i<=n.length-4;i++){var o,s,a;if(n.length>i+6&&n[0+i].op===t.OP_DUP&&n[1+i].op===t.OP_HASH160&&20===(null==(o=n[2+i].data)?void 0:o.length)&&n[3+i].op===t.OP_EQUALVERIFY&&n[4+i].op===t.OP_CHECKSIGVERIFY&&33===(null==(s=n[5+i].data)?void 0:s.length)&&n[6+i].op===t.OP_CHECKSIG)return{cosigner:e.toHex(n[5+i].data||[]),address:e.toBase58Check(n[2+i].data||[],[0])};if(n[0+i].op===t.OP_DUP&&n[1+i].op===t.OP_HASH160&&20===(null==(a=n[2+i].data)?void 0:a.length)&&n[3+i].op===t.OP_EQUALVERIFY&&n[4+i].op===t.OP_CHECKSIG)return{cosigner:"",address:e.toBase58Check(n[2+i].data||[],[0])}}}).filter(function(e){return void 0!==e})},j=function(r,t,n){var i=r.senders.includes(t)?"send":"receive",o=r.height>0?"confirmed":"unconfirmed";if(!r.rawtx)return null;var a=e.toArray(r.rawtx,"base64"),u=e.toHex(a),c=s.fromHex(u).outputs.map(function(e){return e.lockingScript}),f=N(c),d=c.map(C),h=f.map(function(e){return e.address}),l=h.indexOf(n.feeAddress),v=r.senders[0],m=0,p=new Map;d.forEach(function(r,i){var o,s=null==r||null==(o=r.file)?void 0:o.content;if(s){var a=e.toUTF8(s);if(a){var u;try{u=JSON.parse(a)}catch(e){return void console.error("Failed to parse inscription JSON:",e)}if("bsv-20"===u.p&&u.id===n.tokenId){var c=parseInt(u.amt,10);if(!Number.isNaN(c))if(l!==i||v!==t){var f=h[i],d=p.get(f)||0;p.set(f,d+c)}else m+=c}}}});var g=p.get(t)||0;if("send"===i){var y=p.get(v)||0;p.set(v,y-g)}var P=[],w=(P="receive"===i?[{address:v,amount:g}]:Array.from(p.entries()).map(function(e){return{address:e[0],amount:e[1]}}).filter(function(e){return e.address!==t&&e.address!==n.feeAddress&&e.amount>0})).reduce(function(e,r){return e+r.amount},0);return{txid:r.txid,height:r.height,type:i,status:o,amount:w,fee:m,score:r.score,counterparties:P}},H=function(r){try{var t=e.fromBase58Check(r),n=t.prefix[0];if("number"!=typeof n||![0].includes(n))throw b("Invalid address prefix: "+n);if(20!==t.data.length)throw b("Invalid address payload length: "+t.data.length);return!0}catch(e){return!1}},M=function(e){try{return{isValid:!0,privateKey:a.fromWif(e)}}catch(e){if(e instanceof Error){var r=e.message.toLowerCase();if(r.includes("invalid base58 character"))return{isValid:!1,error:"Invalid WIF key: contains invalid characters"};if(r.includes("invalid checksum"))return{isValid:!1,error:"Invalid WIF key: checksum verification failed"};if(r.includes("expected base58 string"))return{isValid:!1,error:"Invalid WIF key: must be a valid base58 encoded string"}}return{isValid:!1,error:"Invalid WIF key provided"}}},_=/*#__PURE__*/function(e){function r(r){var t;return(t=e.call(this,r.message)||this).code=void 0,t.hostname=void 0,t.originalError=void 0,t.name="NetworkError",t.code=r.code,t.hostname=r.hostname,t.originalError=r.originalError,t}var t,n;return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,P(t,n),r}(/*#__PURE__*/w(Error));function F(e){var r,t,n;if(!e)return!1;var i=["ENOTFOUND","ECONNREFUSED","ETIMEDOUT","ECONNRESET","ENETUNREACH","EHOSTUNREACH","EPIPE","ECONNABORTED"];return!!i.includes(e.code)||!(!e.cause||!i.includes(null==(r=e.cause)?void 0:r.code))||!!(null!=(t=e.message)&&t.includes("fetch failed")||null!=(n=e.message)&&n.includes("getaddrinfo"))}function D(e,r){if(F(e)){var t=function(e){if(e.cause&&e.cause.code){var r=e.cause,t="Network connection failed";switch(r.code){case"ENOTFOUND":t="Unable to connect to MNEE network. Please check your internet connection.";break;case"ECONNREFUSED":t="Connection refused by MNEE server. The service may be temporarily unavailable.";break;case"ETIMEDOUT":t="Request timed out. Please check your internet connection and try again.";break;case"ECONNRESET":t="Connection was reset. Please try again.";break;case"ENETUNREACH":case"EHOSTUNREACH":t="Network unreachable. Please check your internet connection.";break;default:t="Network error: "+r.code+". Please check your connection and try again."}return new _({code:r.code,message:t,hostname:r.hostname,originalError:e})}if(e.code){var n="Network error occurred";switch(e.code){case"ENOTFOUND":n="Unable to connect to MNEE network. Please check your internet connection.";break;case"ECONNREFUSED":n="Connection refused by MNEE server. The service may be temporarily unavailable.";break;case"ETIMEDOUT":n="Request timed out. Please check your internet connection and try again.";break;default:n="Network error: "+e.code+". Please check your connection and try again."}return new _({code:e.code,message:n,hostname:e.hostname,originalError:e})}return new _({code:"NETWORK_ERROR",message:"Network error occurred. Please check your internet connection and try again.",originalError:e})}(e);return console.error("Network error during "+r+": "+t.message),t.message}console.error("Failed to "+r+":",e)}var R=["parseOptions"];function U(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}const K="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function B(e,r,t){if(!e.s){if(t instanceof q){if(!t.s)return void(t.o=B.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(B.bind(null,e,r),B.bind(null,e,2));e.s=r,e.v=t;var n=e.o;n&&n(e)}}var q=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(r,t){var n=new e,i=this.s;if(i){var o=1&i?r:t;if(o){try{B(n,1,o(this.v))}catch(e){B(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?B(n,1,r?r(i):i):t?B(n,1,t(i)):B(n,2,i)}catch(e){B(n,2,e)}},n},e}();function V(e){return e instanceof q&&1&e.s}var G=/*#__PURE__*/function(){function e(e){this.service=void 0,this.service=e}var r=e.prototype;return r.getUtxos=function(e,r){void 0===r&&(r={});try{var t=this;if(!Array.isArray(e))throw b("Input must be an array of addresses");var n=[];return Promise.resolve(t.processBatch(e,function(e){try{for(var i,o=[],s=[],a=m(e);!(i=a()).done;){var u=i.value;u&&"string"==typeof u&&""!==u.trim()?/^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-z0-9]{39,59}$/.test(u)?o.push(u):(s.push(u),n.push({items:[u],error:{message:"Invalid address format: "+u},retryCount:0})):(s.push(u),n.push({items:[u],error:{message:"Invalid address: empty or not a string"},retryCount:0}))}if(!r.continueOnError&&s.length>0)throw new Error(n[0].error.message);return 0===o.length?Promise.resolve([]):Promise.resolve(t.service.getUtxos(o)).then(function(r){return e.map(function(e){return{address:e,utxos:o.includes(e)?r.filter(function(r){return r.owners.includes(e)}):[]}})})}catch(e){return Promise.reject(e)}},r)).then(function(e){return p({},e,{errors:[].concat(e.errors,n),totalErrors:e.errors.length+n.length})})}catch(e){return Promise.reject(e)}},r.getBalances=function(e,r){void 0===r&&(r={});try{var t=this;if(!Array.isArray(e))throw b("Input must be an array of addresses");return Promise.resolve(t.processBatch(e,function(e){try{return Promise.resolve(t.service.getBalances(e))}catch(e){return Promise.reject(e)}},r))}catch(e){return Promise.reject(e)}},r.getTxHistories=function(e,r){void 0===r&&(r={});try{var t=this;if(!Array.isArray(e))throw b("Input must be an array of address history parameters");return Promise.resolve(t.processBatch(e,function(e){try{return Promise.resolve(t.service.getRecentTxHistories(e))}catch(e){return Promise.reject(e)}},r,function(e){return e.address}))}catch(e){return Promise.reject(e)}},r.parseTx=function(e,r){void 0===r&&(r={});try{var t=this;if(!Array.isArray(e))throw b("Input must be an array of transaction IDs");var n=r.parseOptions,i=function(e,r){if(null==e)return{};var t={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==r.indexOf(n))continue;t[n]=e[n]}return t}(r,R),o=[];return Promise.resolve(t.processBatch(e,function(e){try{return Promise.resolve(Promise.allSettled(e.map(function(e){try{if(!e||"string"!=typeof e||""===e.trim())throw new Error("Invalid transaction ID: empty or not a string");if(!/^[a-fA-F0-9]{64}$/.test(e))throw new Error("Invalid transaction ID format: "+e);return Promise.resolve(t.service.parseTx(e,n)).then(function(r){return{txid:e,parsed:r}})}catch(e){return Promise.reject(e)}}))).then(function(r){var t=[];if(r.forEach(function(r,n){var s=e[n];if("fulfilled"===r.status)t.push(r.value);else{var a=r.reason instanceof Error?r.reason.message:String(r.reason);o.push({items:[s],error:{message:a},retryCount:i.maxRetries||3})}}),!i.continueOnError&&o.length>0)throw new Error(o[0].error.message);return t})}catch(e){return Promise.reject(e)}},i)).then(function(e){return p({},e,{errors:[].concat(e.errors,o),totalErrors:e.errors.length+o.length})})}catch(e){return Promise.reject(e)}},r.processBatch=function(e,r,t,n){try{var i=this,o=t.chunkSize,s=void 0===o?20:o,a=t.continueOnError,u=void 0!==a&&a,c=t.onProgress,f=t.maxRetries,d=void 0===f?3:f,h=t.retryDelay,l=void 0===h?1e3:h,v=t.requestsPerSecond,m=void 0===v?3:v,p=s>0?s:20,g=m>0?m:3,y=Math.ceil(1e3/g),P=Math.max(1,Math.floor(g)),w=new z(P,y);if(0===e.length)return Promise.resolve({results:[],errors:[],totalProcessed:0,totalErrors:0});var b=[],A=[],I=0,x=i.chunkArray(e,p),S=x.length,T=x.map(function(e){try{return Promise.resolve(U(function(){return Promise.resolve(i.processWithRetry(function(){return r(e)},d,l,w)).then(function(e){return b.push.apply(b,e),I++,c&&c(I,S,A.length),e})},function(t){function o(){if(b.push.apply(b,s),a.length>0){var e=a.map(function(e){var r=e.item;return n?n(r):r}),r=a[0].error;A.push({items:e,error:{message:r.message,code:r.code},retryCount:d})}return I++,c&&c(I,S,A.length),s}if(!u)throw t;var s=[],a=[],f=function(e,r){if("function"==typeof e[K]){var t,n,i,o=function(e){try{for(;!(t=s.next()).done;)if((e=r(t.value))&&e.then){if(!V(e))return void e.then(o,i||(i=B.bind(null,n=new q,2)));e=e.v}n?B(n,1,e):n=e}catch(e){B(n||(n=new q),2,e)}},s=e[K]();if(o(),s.return){var a=function(e){try{t.done||s.return()}catch(e){}return e};if(n&&n.then)return n.then(a,function(e){throw a(e)});a()}return n}if(!("length"in e))throw new TypeError("Object is not iterable");for(var u=[],c=0;c<e.length;c++)u.push(e[c]);return function(e,r){var t,n,i=-1;return function o(s){try{for(;++i<e.length;)if((s=r(i))&&s.then){if(!V(s))return void s.then(o,n||(n=B.bind(null,t=new q,2)));s=s.v}t?B(t,1,s):t=s}catch(e){B(t||(t=new q),2,e)}}(),t}(u,function(e){return r(u[e])})}(e,function(e){var t=U(function(){return Promise.resolve(i.processWithRetry(function(){return r([e])},d,l,w)).then(function(e){e.length>0&&s.push.apply(s,e)})},function(r){var t=r instanceof Error?r:new Error(String(r));a.push({item:e,error:t})});if(t&&t.then)return t.then(function(){})});return f&&f.then?f.then(o):o()}))}catch(e){return Promise.reject(e)}});return Promise.resolve(Promise.all(T)).then(function(){return{results:b,errors:A,totalProcessed:I,totalErrors:A.length}})}catch(e){return Promise.reject(e)}},r.processWithRetry=function(e,r,t,n){try{var i,o,s=function(e){if(i)return e;throw o||new Error("Max retries exceeded")},a=this,u=0,c=function(e,r,t){for(var n;;){var i=e();if(V(i)&&(i=i.v),!i)return o;if(i.then){n=0;break}var o=t();if(o&&o.then){if(!V(o)){n=1;break}o=o.s}if(r){var s=r();if(s&&s.then&&!V(s)){n=2;break}}}var a=new q,u=B.bind(null,a,2);return(0===n?i.then(f):1===n?o.then(c):s.then(d)).then(void 0,u),a;function c(n){o=n;do{if(r&&(s=r())&&s.then&&!V(s))return void s.then(d).then(void 0,u);if(!(i=e())||V(i)&&!i.v)return void B(a,1,o);if(i.then)return void i.then(f).then(void 0,u);V(o=t())&&(o=o.v)}while(!o||!o.then);o.then(c).then(void 0,u)}function f(e){e?(o=t())&&o.then?o.then(c).then(void 0,u):c(o):B(a,1,o)}function d(){(i=e())?i.then?i.then(f).then(void 0,u):f(i):B(a,1,o)}}(function(){return!i&&u<r},function(){return u++},function(){return U(function(){return Promise.resolve(n.execute(e)).then(function(e){return i=1,e})},function(e){o=e;var n=function(){if(u<r-1)return Promise.resolve(a.delay(t*(u+1))).then(function(){})}();return n&&n.then?n.then(function(){}):void 0})});return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},r.chunkArray=function(e,r){for(var t=[],n=Math.max(1,r),i=0;i<e.length;i+=n)t.push(e.slice(i,i+n));return t},r.delay=function(e){return new Promise(function(r){return setTimeout(r,e)})},e}(),z=/*#__PURE__*/function(){function e(e,r){this.maxConcurrent=void 0,this.minDelay=void 0,this.queue=[],this.running=0,this.maxConcurrent=e,this.minDelay=r}var r=e.prototype;return r.execute=function(e){try{var r=this;return Promise.resolve(r.waitForSlot()).then(function(){return function(t,n){try{var i=function(){r.running++;var t=Date.now();return Promise.resolve(e()).then(function(e){var n=Date.now()-t,i=function(){if(n<r.minDelay)return Promise.resolve(r.delay(r.minDelay-n)).then(function(){})}();return i&&i.then?i.then(function(){return e}):e})}()}catch(e){return n(!0,e)}return i&&i.then?i.then(n.bind(null,!1),n.bind(null,!0)):n(!1,i)}(0,function(e,t){if(r.running--,r.processQueue(),e)throw t;return t})})}catch(e){return Promise.reject(e)}},r.waitForSlot=function(){var e=this;return this.running<this.maxConcurrent?Promise.resolve():new Promise(function(r){e.queue.push(r)})},r.processQueue=function(){if(this.queue.length>0&&this.running<this.maxConcurrent){var e=this.queue.shift();e&&e()}},r.delay=function(e){return new Promise(function(r){return setTimeout(r,e)})},e}();function L(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}function X(e,r,t){if(!e.s){if(t instanceof W){if(!t.s)return void(t.o=X.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(X.bind(null,e,r),X.bind(null,e,2));e.s=r,e.v=t;var n=e.o;n&&n(e)}}var W=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(r,t){var n=new e,i=this.s;if(i){var o=1&i?r:t;if(o){try{X(n,1,o(this.v))}catch(e){X(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?X(n,1,r?r(i):i):t?X(n,1,t(i)):X(n,2,i)}catch(e){X(n,2,e)}},n},e}();function Y(e){return e instanceof W&&1&e.s}function J(e,r,t){for(var n;;){var i=e();if(Y(i)&&(i=i.v),!i)return o;if(i.then){n=0;break}var o=t();if(o&&o.then){if(!Y(o)){n=1;break}o=o.s}if(r){var s=r();if(s&&s.then&&!Y(s)){n=2;break}}}var a=new W,u=X.bind(null,a,2);return(0===n?i.then(f):1===n?o.then(c):s.then(d)).then(void 0,u),a;function c(n){o=n;do{if(r&&(s=r())&&s.then&&!Y(s))return void s.then(d).then(void 0,u);if(!(i=e())||Y(i)&&!i.v)return void X(a,1,o);if(i.then)return void i.then(f).then(void 0,u);Y(o=t())&&(o=o.v)}while(!o||!o.then);o.then(c).then(void 0,u)}function f(e){e?(o=t())&&o.then?o.then(c).then(void 0,u):c(o):X(a,1,o)}function d(){(i=e())?i.then?i.then(f).then(void 0,u):f(i):X(a,1,o)}}var Q="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function Z(e,r,t){var n,i,o=-1;return function s(a){try{for(;++o<e.length&&(!t||!t());)if((a=r(o))&&a.then){if(!Y(a))return void a.then(s,i||(i=X.bind(null,n=new W,2)));a=a.v}n?X(n,1,a):n=a}catch(e){X(n||(n=new W),2,e)}}(),n}function $(e,r,t){if("function"==typeof e[Q]){var n,i,o,s=function(e){try{for(;!((n=a.next()).done||t&&t());)if((e=r(n.value))&&e.then){if(!Y(e))return void e.then(s,o||(o=X.bind(null,i=new W,2)));e=e.v}i?X(i,1,e):i=e}catch(e){X(i||(i=new W),2,e)}},a=e[Q]();if(s(),a.return){var u=function(e){try{n.done||a.return()}catch(e){}return e};if(i&&i.then)return i.then(u,function(e){throw u(e)});u()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var c=[],f=0;f<e.length;f++)c.push(e[f]);return Z(c,function(e){return r(c[e])},t)}var ee=/*#__PURE__*/function(){function r(e){if(this.mneeApiKey=void 0,this.mneeConfig=void 0,this.mneeApi=void 0,"production"!==e.environment&&"sandbox"!==e.environment)throw b('Invalid environment. Must be either "production" or "sandbox"');var r="production"===e.environment;if(""===(null==e?void 0:e.apiKey))throw b("MNEE API key cannot be an empty string");this.mneeApiKey=null!=e&&e.apiKey?e.apiKey:r?"92982ec1c0975f31979da515d46bae9f":"54f1fd1688ba66a58a67675b82feb93e",this.mneeApi=r?"https://proxy-api.mnee.net":"https://sandbox-proxy-api.mnee.net",this.getCosignerConfig().catch(function(){})}var t=r.prototype;return t.getCosignerConfig=function(){try{var e=this;return Promise.resolve(L(function(){return Promise.resolve(fetch(e.mneeApi+"/v1/config?auth_token="+e.mneeApiKey,{method:"GET"})).then(function(r){if(401===r.status||403===r.status)throw b("Invalid API key");if(!r.ok)throw b("HTTP error! status: "+r.status);return Promise.resolve(r.json()).then(function(r){return e.mneeConfig=r,r})})},function(e){throw F(e)&&D(e,"fetch config"),e}))}catch(e){return Promise.reject(e)}},t.toAtomicAmount=function(e){return Math.round(e*Math.pow(10,5))},t.fromAtomicAmount=function(e){return e/Math.pow(10,5)},t.createInscriptionOutput=function(e,r,t){try{var n={p:"bsv-20",op:"transfer",id:t.tokenId,amt:r.toString()};return Promise.resolve({lockingScript:x((new A).lock(e,u.fromString(t.approver)),{dataB64:Buffer.from(JSON.stringify(n)).toString("base64"),contentType:"application/bsv-20"}),satoshis:1})}catch(e){return Promise.reject(e)}},t.getUtxos=function(e,r,t,n){try{var i,o=this;return Promise.resolve(L(function(){function s(s){var a;if(i)return s;function u(e){if(a)return e;throw b("Invalid input type for address")}var c=function(){if(Array.isArray(e)){var i=e.filter(function(e){return"string"==typeof e&&H(e)});if(0===i.length)throw b("No valid Bitcoin addresses provided");var s=e.filter(function(e){return"string"!=typeof e||!H(e)});return s.length>0&&console.warn("[33m"+s.length+" invalid bitcoin addresses will be ignored[0m"),Promise.resolve(fetch(o.mneeApi+"/v2/utxos?auth_token="+o.mneeApiKey+(void 0!==r?"&page="+r:"")+(void 0!==t?"&size="+t:"")+(n?"&order="+n:""),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).then(function(e){if(401===e.status||403===e.status)throw b("Invalid API key");if(!e.ok)throw b("HTTP error! status: "+e.status);return Promise.resolve(e.json()).then(function(e){var r=["transfer","deploy+mint"],t=e.filter(function(e){return r.includes(e.data.bsv21.op.toLowerCase())});return a=1,t})})}}();return c&&c.then?c.then(u):u(c)}if(!e)throw b("Address is required");var a=function(){if("string"==typeof e){if(!H(e))throw b("Invalid Bitcoin address: "+e);return Promise.resolve(fetch(o.mneeApi+"/v2/utxos?auth_token="+o.mneeApiKey+(void 0!==r?"&page="+r:"")+(void 0!==t?"&size="+t:"")+(n?"&order="+n:""),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([e])})).then(function(e){if(401===e.status||403===e.status)throw b("Invalid API key");if(!e.ok)throw b("HTTP error! status: "+e.status);return Promise.resolve(e.json()).then(function(e){var r=["transfer","deploy+mint"],t=e.filter(function(e){return r.includes(e.data.bsv21.op.toLowerCase())});return i=1,t})})}}();return a&&a.then?a.then(s):s(a)},function(e){throw F(e)&&D(e,"fetch UTXOs"),e}))}catch(e){return Promise.reject(e)}},t.fetchSourceTransaction=function(e,r){void 0===r&&(r=3);try{var t,n=this,i=0,o=J(function(){return!t&&i<=r},function(){return i++},function(){return L(function(){return Promise.resolve(fetch(n.mneeApi+"/v1/tx/"+e+"?auth_token="+n.mneeApiKey)).then(function(n){function o(){if(200!==n.status)throw b(n.status+" - Failed to fetch rawtx for txid: "+e);return Promise.resolve(n.json()).then(function(e){var r=s.fromHex(Buffer.from(e.rawtx,"base64").toString("hex"));return t=1,r})}if(404===n.status)throw b("Transaction not found");if(401===n.status||403===n.status)throw b("Invalid API key");var a=function(){if(429===n.status&&i<r){var e=Math.min(500*Math.pow(2,i),2e3);return Promise.resolve(new Promise(function(r){return setTimeout(r,e)})).then(function(){})}}();return a&&a.then?a.then(o):o()})},function(e){return i===r?(F(e)&&D(e,"fetch transaction"),void(t=1)):Promise.resolve(new Promise(function(e){return setTimeout(e,200)})).then(function(){})})});return Promise.resolve(o&&o.then?o.then(function(e){return t?e:void 0}):t?o:void 0)}catch(e){return Promise.reject(e)}},t.generateSignatures=function(r,t){try{try{var o;switch(r.format){case"beef":o=s.fromHexBEEF(r.rawtx);break;case"ef":o=s.fromHexEF(r.rawtx);break;default:o=s.fromHex(r.rawtx)}var a=r.sigRequests.flatMap(function(r){return[t].map(function(t){var s=n.format({sourceTXID:r.prevTxid,sourceOutputIndex:r.outputIndex,sourceSatoshis:r.satoshis,transactionVersion:o.version,otherInputs:o.inputs.filter(function(e,t){return t!==r.inputIndex}),inputIndex:r.inputIndex,outputs:o.outputs,inputSequence:o.inputs[r.inputIndex].sequence||0,subscript:r.script?c.fromHex(r.script):(new f).lock(t.toPublicKey().toAddress()),lockTime:o.lockTime,scope:r.sigHashType||65}),a=t.sign(i.sha256(s)),u=new n(a.r,a.s,r.sigHashType||65);return{sig:e.toHex(u.toChecksigFormat()),pubKey:t.toPublicKey().toString(),inputIndex:r.inputIndex,sigHashType:r.sigHashType||65,csIdx:r.csIdx}})});return Promise.resolve({sigResponses:a})}catch(e){var u;return F(e)&&D(e,"get signatures"),Promise.resolve({error:{message:null!=(u=e.message)?u:"unknown",cause:e.cause}})}}catch(e){return Promise.reject(e)}},t.getEnoughUtxos=function(e,r){try{var t=function(t){if(!t)throw b("Config not fetched");var i=t.fees.find(function(e){return r>=e.min&&r<=e.max});if(!i)throw b("Fee not found");var o=i.fee,s=r+o;return Promise.resolve(n.getBalance(e)).then(function(r){var t;function i(e){u.sort(function(e,r){return r.data.bsv21.amt-e.data.bsv21.amt});for(var r,t=[],n=0,i=m(u);!(r=i()).done;){var o=r.value;if(t.push(o),(n+=o.data.bsv21.amt)>=s)break}return t}if(r.amount<s)throw b("Insufficient MNEE balance. Max transfer amount: "+n.fromAtomicAmount(r.amount-o));var a=1,u=[],c=0,f=J(function(){return!t&&c<s},void 0,function(){return Promise.resolve(n.getUtxos(e,a,25)).then(function(e){if(0===e.length)throw b("Insufficient MNEE balance. Max transfer amount: "+n.fromAtomicAmount(c-o));u.push.apply(u,e),(c=u.reduce(function(e,r){return e+r.data.bsv21.amt},0))>=s?t=1:a++})});return f&&f.then?f.then(i):i()})},n=this,i=n.mneeConfig;return Promise.resolve(i?t(i):Promise.resolve(n.getCosignerConfig()).then(t))}catch(e){return Promise.reject(e)}},t.getAllUtxos=function(e){try{var r,t=this,n=1,i=[],o=J(function(){return!r},void 0,function(){return Promise.resolve(t.getUtxos(e,n,100)).then(function(e){0!==e.length?(i.push.apply(i,e),n++):r=1})});return Promise.resolve(o&&o.then?o.then(function(){return i}):i)}catch(e){return Promise.reject(e)}},t.transfer=function(e,r,t){try{var n=this;return Promise.resolve(L(function(){function i(i){if(!i)throw b("Config not fetched");var a=function(e,r){var t=M(r),n=t.privateKey;if(0===e.length)return{isValid:!1,error:"Empty transfer options provided. Please provide at least one recipient."};if(!t.isValid)return{isValid:!1,error:t.error||"Invalid WIF key provided"};if(!n)return{isValid:!1,error:"Private key not found"};for(var i,o=0,s=m(e);!(i=s()).done;){var a=i.value;if(!H(a.address))return{isValid:!1,error:"Invalid recipient address: "+a.address};if("number"!=typeof a.amount||isNaN(a.amount)||!isFinite(a.amount))return{isValid:!1,error:"Invalid amount for "+a.address+": amount must be a valid number"};if(a.amount<S)return{isValid:!1,error:"Invalid amount for "+a.address+": minimum transfer amount is "+S+" MNEE"};o+=a.amount}return o<=0?{isValid:!1,error:"Invalid amount: total must be greater than 0"}:{isValid:!0,totalAmount:o,privateKey:n}}(e,r),u=a.totalAmount,c=a.privateKey;if(!a.isValid)throw b(a.error||"Invalid transfer options");if(!c)throw b("Private key not found");if(!u)throw b("Invalid amount");var f=n.toAtomicAmount(u),d=c.toAddress();return Promise.resolve(n.getEnoughUtxos(d,f)).then(function(r){var a;function u(r){function o(){function e(){function e(){for(var e=new Map,r=0;r<l.inputs.length;r++)e.set(r,c);return Promise.resolve(n.signAllInputs(l,e)).then(function(e){if(e.error)throw b(e.error);var r=l.toHex();return!1===(null==t?void 0:t.broadcast)?{rawtx:r}:Promise.resolve(n.submitRawTx(r,t)).then(function(e){var r=e.ticketId;if(!r)throw b("Failed to broadcast transaction");return{ticketId:r}})})}var r=v-f-h,o=function(){if(r>0){var e=l.addOutput;return Promise.resolve(n.createInscriptionOutput(m,r,i)).then(function(r){e.call(l,r)})}}();return o&&o.then?o.then(e):e()}var r=function(){if(h>0){var e=l.addOutput;return Promise.resolve(n.createInscriptionOutput(i.feeAddress,h,i)).then(function(r){e.call(l,r)})}}();return r&&r.then?r.then(e):e()}var s=$(e,function(e){var r=l.addOutput;return Promise.resolve(n.createInscriptionOutput(e.address,n.toAtomicAmount(e.amount),i)).then(function(e){r.call(l,e)})});return s&&s.then?s.then(o):o()}var h=void 0!==e.find(function(e){return e.address===i.burnAddress})?0:null==(a=i.fees.find(function(e){return f>=e.min&&f<=e.max}))?void 0:a.fee;if(void 0===h)throw b("Fee ranges inadequate");var l=new s(1,[],[],0),v=0,m="",p=J(function(){return v<f+h},void 0,function(){function e(e){return Promise.resolve(n.fetchSourceTransaction(t.txid)).then(function(e){if(!e)throw b("Failed to fetch source transaction: "+t.txid+"_"+t.vout);m=m||t.owners[0],l.addInput({sourceTXID:t.txid,sourceOutputIndex:t.vout,sourceTransaction:e,unlockingScript:new o}),v+=t.data.bsv21.amt})}var t=r.shift(),i=function(){if(!t)return Promise.resolve(n.getBalance(d)).then(function(e){throw b("Insufficient MNEE balance. Max transfer amount is "+n.fromAtomicAmount(e.amount-h))})}();return i&&i.then?i.then(e):e()});return p&&p.then?p.then(u):u()})}var a=n.mneeConfig;return a?i(a):Promise.resolve(n.getCosignerConfig()).then(i)},function(e){throw F(e)&&D(e,"transfer tokens"),e}))}catch(e){return Promise.reject(e)}},t.submitRawTx=function(r,t){void 0===t&&(t={broadcast:!0,callbackUrl:void 0});try{var n=this;return Promise.resolve(L(function(){var i,o,a,u;if(!1!==(null==(i=t)?void 0:i.broadcast)&&(t=p({},t,{broadcast:!0})),null!=(o=t)&&o.callbackUrl&&!1===(null==(a=t)?void 0:a.broadcast))throw b("Callback URL cannot be provided when broadcast is false");if(!r)throw b("Raw transaction is required");var c=s.fromHex(r);if(null==(u=t)||!u.broadcast)return{rawtx:c.toHex()};var f=e.toBase64(c.toBinary()),d=JSON.stringify(t?{rawtx:f,callback_url:t.callbackUrl}:{rawtx:f});return Promise.resolve(fetch(n.mneeApi+"/v2/transfer?auth_token="+n.mneeApiKey,{method:"POST",headers:{"Content-Type":"application/json"},body:d})).then(function(e){if(!e.ok)throw b("Failed to submit transaction: "+e.status);return Promise.resolve(e.text()).then(function(e){return{ticketId:e}})})},function(e){throw F(e)&&D(e,"submit raw transaction"),e}))}catch(e){return Promise.reject(e)}},t.getTxStatus=function(e){try{var r=this;return Promise.resolve(L(function(){if(!e)throw b("Ticket ID is required");return Promise.resolve(fetch(r.mneeApi+"/v2/ticket?ticketID="+e+"&auth_token="+r.mneeApiKey,{method:"GET",headers:{"Content-Type":"application/json"}})).then(function(e){if(!e.ok)throw b("Failed to get transaction status: "+e.status);return Promise.resolve(e.json())})},function(e){throw F(e)&&D(e,"get transaction status"),e}))}catch(e){return Promise.reject(e)}},t.getBalance=function(e){try{var r=this;if(!H(e))throw b("Invalid Bitcoin address: "+e);return Promise.resolve(L(function(){function t(t){if(!t)throw b("Config not fetched");return Promise.resolve(fetch(r.mneeApi+"/v2/balance?auth_token="+r.mneeApiKey,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([e])})).then(function(r){if(!r.ok)throw b("Failed to get transaction status: "+r.status);return Promise.resolve(r.json()).then(function(r){return r&&0!==r.length?{address:r[0].address,amount:r[0].amt,decimalAmount:r[0].precised}:{address:e,amount:0,decimalAmount:0}})})}var n=r.mneeConfig;return n?t(n):Promise.resolve(r.getCosignerConfig()).then(t)},function(e){throw F(e)&&D(e,"fetch balance"),e}))}catch(e){return Promise.reject(e)}},t.getBalances=function(e){try{var r=this;if(!Array.isArray(e))throw b("Addresses must be an array");var t=e.filter(function(e){return H(e)});if(0===t.length)throw b("You must pass at least 1 valid address");var n=e.length-t.length;return n>0&&console.warn("[33m"+n+" invalid bitcoin addresses will be ignored[0m"),Promise.resolve(L(function(){function e(e){if(!e)throw b("Config not fetched");return Promise.resolve(fetch(r.mneeApi+"/v2/balance?auth_token="+r.mneeApiKey,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).then(function(e){if(!e.ok)throw b("Failed to get transaction status: "+e.status);return Promise.resolve(e.json()).then(function(e){if(!e||0===e.length)return t.map(function(e){return{address:e,amount:0,decimalAmount:0}});var r=new Map;return e.forEach(function(e){r.set(e.address,{address:e.address,amount:e.amt,decimalAmount:e.precised})}),t.map(function(e){return r.has(e)?r.get(e):{address:e,amount:0,decimalAmount:0}})})})}var n=r.mneeConfig;return n?e(n):Promise.resolve(r.getCosignerConfig()).then(e)},function(e){throw F(e)&&D(e,"fetch balances"),e}))}catch(e){return Promise.reject(e)}},t.processMneeValidation=function(r,t,n){var i=this;try{var o=r.id("hex")===t.tokenId.split("_")[0],s=r.outputs.map(function(e){return e.lockingScript}),a=N(s),u=r.outputs.map(function(r,t){var n,i=a[t],o=C(r.lockingScript),s=null;if(null!=o&&null!=(n=o.file)&&n.content)try{var u=e.toUTF8(o.file.content);u&&(s=JSON.parse(u))}catch(e){}return{index:t,address:null==i?void 0:i.address,cosigner:null==i?void 0:i.cosigner,inscription:s}}),c=u.some(function(e){return e.cosigner===t.approver});if(u.find(function(e){return""!==e.cosigner&&e.cosigner!==t.approver}))throw b("Invalid cosigner detected");var f=u.filter(function(e){if(!e.inscription)return!1;var r=e.inscription;if("bsv-20"!==r.p)return!1;if(!o&&r.id!==t.tokenId)throw b("Invalid token ID: "+r.id);var n=parseInt(r.amt,10);if(isNaN(n)||n<=0)throw b("Invalid MNEE amount: "+r.amt);return!0});if(0===f.length)throw b("No valid MNEE inscriptions found in transaction");var d=new Set(f.map(function(e){return e.inscription.op})),h=d.has("burn"),l=f.some(function(e){var r;return"transfer"===e.inscription.op&&"redeem"===(null==(r=e.inscription.metadata)?void 0:r.action)}),v=l&&u.some(function(e){return e.address===E||e.address===k});if((d.has("transfer")&&!l||h||l&&!v)&&!c)throw b("Cosigner not found in transaction with transfer/burn/redeem operation");var p=f.filter(function(e){var r=e.inscription;return"transfer"===r.op||"burn"===r.op||"deploy+mint"===r.op});if(n)for(var g,y=[].concat(p),P=function(){var e=g.value,r=y.findIndex(function(r){return r.address===e.address&&r.inscription.amt===i.toAtomicAmount(e.amount).toString()});if(-1===r)throw b("No matching output found for "+e.address+" with amount "+e.amount);y.splice(r,1)},w=m(n);!(g=w()).done;)P();return!0}catch(e){return F(e)&&D(e,"validate Mnee transaction"),!1}},t.validateMneeTx=function(e,r){try{var t=this;return Promise.resolve(L(function(){function n(n){var i;if(!n)throw b("Config not fetched");var o=s.fromHex(e);if(!t.processMneeValidation(o,n,r))return!1;var a=o.id("hex")===n.tokenId.split("_")[0],u=function(){if(!a)return Promise.resolve(t.processTransactionInputs(o,n)).then(function(e){var r=t.processTransactionOutputs(o,n);if(e.total!==r.total)return i=1,!1})}();return u&&u.then?u.then(function(e){return!i||e}):!i||u}var i=t.mneeConfig;return i?n(i):Promise.resolve(t.getCosignerConfig()).then(n)},function(e){return F(e)&&D(e,"validate Mnee transaction"),!1}))}catch(e){return Promise.reject(e)}},t.getMneeSyncs=function(e,r,t,n){try{var i=this;return Promise.resolve(L(function(){var o=Array.isArray(e)?e:[e];return Promise.resolve(fetch(i.mneeApi+"/v1/sync?auth_token="+i.mneeApiKey+(r?"&from="+r:"")+(t?"&limit="+t:"")+(n?"&order="+n:""),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).then(function(e){if(401===e.status||403===e.status)throw b("Invalid API key");if(!e.ok)throw b("HTTP error! status: "+e.status);return Promise.resolve(e.json()).then(function(e){return o.map(function(r){var t=e.filter(function(e){return e.senders.includes(r)||e.receivers.includes(r)});return{address:r,syncs:t}})})})},function(e){throw F(e)&&D(e,"fetch syncs"),e}))}catch(e){return Promise.reject(e)}},t.getRecentTxHistory=function(e,r,t,n){try{var i=this;if(!H(e))throw b("Invalid Bitcoin address: "+e);if(void 0!==r&&("number"!=typeof r||r<0||!Number.isFinite(r)))throw b("Invalid fromScore: "+r+". Must be a positive number or 0");if(void 0!==t&&("number"!=typeof t||t<=0||!Number.isInteger(t)))throw b("Invalid limit: "+t+". Must be a positive integer");if(void 0!==n&&"asc"!==n&&"desc"!==n)throw b("Invalid order: "+n+". Must be 'asc' or 'desc'");return Promise.resolve(L(function(){function o(o){if(!o)throw b("Config not fetched");return Promise.resolve(i.getMneeSyncs(e,r,t,n)).then(function(n){var i=n[0].syncs;if(!i||0===i.length)return{address:e,history:[],nextScore:r||0};for(var s,a=[],u=m(i);!(s=u()).done;){var c=j(s.value,e,o);c&&a.push(c)}var f=a.length>0?a[a.length-1].score:r||0;return t&&a.length>t?{address:e,history:a.slice(0,t),nextScore:f}:{address:e,history:a,nextScore:f}})}var s=i.mneeConfig;return s?o(s):Promise.resolve(i.getCosignerConfig()).then(o)},function(e){throw F(e)&&D(e,"fetch transaction history"),e}))}catch(e){return Promise.reject(e)}},t.getRecentTxHistories=function(e){try{var r=this;if(!Array.isArray(e))throw b("Parameters must be an array");if(0===e.length)throw b("You must pass at least 1 address parameter");var t=e.filter(function(e){return e&&e.address&&H(e.address)});if(0===t.length)throw b("You must pass at least 1 valid address");var n=e.length-t.length;n>0&&console.warn("[33m"+n+" invalid bitcoin addresses will be ignored[0m");for(var i,o=m(t);!(i=o()).done;){var s=i.value;if(void 0!==s.fromScore&&("number"!=typeof s.fromScore||s.fromScore<0||!Number.isFinite(s.fromScore)))throw b("Invalid fromScore for address "+s.address+": "+s.fromScore+". Must be a positive number or 0");if(void 0!==s.limit&&("number"!=typeof s.limit||s.limit<=0||!Number.isInteger(s.limit)))throw b("Invalid limit for address "+s.address+": "+s.limit+". Must be a positive integer");if(void 0!==s.order&&"asc"!==s.order&&"desc"!==s.order)throw b("Invalid order for address "+s.address+": "+s.order+". Must be 'asc' or 'desc'")}return Promise.resolve(L(function(){function e(e){if(!e)throw b("Config not fetched");var n={};t.forEach(function(e){var r=(e.fromScore||0)+":"+(e.limit||100)+":"+(e.order||"default");n[r]||(n[r]=[]),n[r].push(e)});var i=Object.entries(n).map(function(t){var n=t[0],i=t[1];try{var o=n.split(":"),s=o[1],a=o[2],u=Number(o[0]),c=Number(s),f="default"===a?void 0:a,d=i.map(function(e){return e.address});return Promise.resolve(r.getMneeSyncs(d,u,c,f)).then(function(r){return r.map(function(r){var t=r.address,n=r.syncs,o=i.find(function(e){return e.address===t});if(!n||0===n.length)return{address:t,history:[],nextScore:(null==o?void 0:o.fromScore)||0};for(var s,a=[],u=new Set,c=m(n);!(s=c()).done;){var f=j(s.value,t,e);f&&!u.has(f.txid)&&(u.add(f.txid),a.push(f))}var d=a.length>0?a[a.length-1].score:(null==o?void 0:o.fromScore)||0,h=null==o?void 0:o.limit;return h&&a.length>h?{address:t,history:a.slice(0,h),nextScore:d}:{address:t,history:a,nextScore:d}})})}catch(e){return Promise.reject(e)}});return Promise.resolve(Promise.all(i)).then(function(e){return e.flat()})}var n=r.mneeConfig;return n?e(n):Promise.resolve(r.getCosignerConfig()).then(e)},function(e){throw F(e)&&D(e,"fetch transaction histories"),e}))}catch(e){return Promise.reject(e)}},t.parseInscriptionData=function(r){try{var t,n=C(r),i=null==n||null==(t=n.file)?void 0:t.content;if(!i)return null;var o=e.toUTF8(i);return o?JSON.parse(o):null}catch(e){return F(e)&&D(e,"parse inscription data"),null}},t.determineEnvironment=function(e,r,t,n){return e===T.split("_")[0]?"production":e===O.split("_")[0]?"sandbox":r===T&&"020a177d6a5e6f3a8689acd2e313bd1cf0dcf5a243d1cc67b7218602aee9e04b2f"===t?"production":r===O&&"02bed35e894cc41cc9879b4002ad03d33533b615c1b476068c8dd6822a09f93f6c"===t?"sandbox":""===t&&n===k?"production":"sandbox"},t.determineTransactionType=function(e,r,t,n,i){return"burn"===e?"burn":"deploy+mint"===e||r===n?t===i.split("_")[0]?"deploy":"mint":r===k||r===E?"mint":"transfer"},t.processTransactionInputs=function(e,r){try{var t,n,i=this,o=e.id("hex"),s=new Array(e.inputs.length),a=BigInt(0),u=new z(3,334),c=e.inputs.map(function(e,r){try{return Promise.resolve(e.sourceTXID?L(function(){return Promise.resolve(u.execute(function(){return i.fetchSourceTransaction(e.sourceTXID)})).then(function(e){return{index:r,sourceTx:e}})},function(e){return F(e)&&D(e,"fetch source transaction"),{index:r,sourceTx:null}}):{index:r,sourceTx:null})}catch(e){return Promise.reject(e)}});return Promise.resolve(Promise.all(c)).then(function(u){for(var c,f=m(u);!(c=f()).done;){var d=c.value,h=d.index,l=d.sourceTx,v=e.inputs[h];if(l&&v.sourceTXID){var p=l.outputs[v.sourceOutputIndex],g=N([p.lockingScript])[0],y=i.parseInscriptionData(p.lockingScript),P={address:null==g?void 0:g.address,amount:y?parseInt(y.amt):0,satoshis:Number(p.satoshis),inscription:y,cosigner:g};s[h]=P,y&&g&&(a+=BigInt(y.amt),t||(t=i.determineEnvironment(o,y.id,g.cosigner||"",g.address||"")),n||(n=i.determineTransactionType(y.op,g.address||"",o,r.mintAddress,r.tokenId)))}else s[h]={address:void 0,amount:0,satoshis:0,inscription:null,cosigner:void 0}}return{inputs:s,total:a,environment:t,type:n}})}catch(e){return Promise.reject(e)}},t.processTransactionOutputs=function(e,r){for(var t,n,i=e.id("hex"),o=[],s=BigInt(0),a=0;a<e.outputs.length;a++){var u=e.outputs[a],c=N([u.lockingScript])[0],f=this.parseInscriptionData(u.lockingScript),d={address:null==c?void 0:c.address,amount:f?parseInt(f.amt):0,satoshis:Number(u.satoshis),inscription:f,cosigner:c};if(o.push(d),f&&c){s+=BigInt(f.amt),t=this.determineEnvironment(i,f.id,c.cosigner||"",c.address||"");var h=this.determineTransactionType(f.op,c.address||"",i,r.mintAddress,r.tokenId);"burn"===h||"deploy"===h?n=h:n||(n=h)}}return{outputs:o,total:s,environment:t,type:n}},t.validateTransaction=function(e,r,t,n,i){return!!this.processMneeValidation(r,e)&&("deploy"===t||n===i)},t.buildParseResponse=function(e,r,t,n,i,o,s,a){var u={txid:e,environment:r,type:t,inputs:n.inputs.filter(function(e){return e.inscription&&e.address}).map(function(e){return{address:e.address,amount:e.amount}}),outputs:i.outputs.filter(function(e){return e.inscription&&e.address}).map(function(e){return{address:e.address,amount:e.amount}}),isValid:o,inputTotal:n.total.toString(),outputTotal:i.total.toString()};return null!=a&&a.includeRaw?p({},u,{raw:{txHex:s.toHex(),inputs:s.inputs.map(function(e,r){var t,i=n.inputs[r];return{txid:e.sourceTXID||"",vout:e.sourceOutputIndex,scriptSig:(null==(t=e.unlockingScript)?void 0:t.toHex())||"",sequence:e.sequence||4294967295,address:null==i?void 0:i.address,satoshis:(null==i?void 0:i.satoshis)||0,tokenData:null!=i&&i.inscription?{amount:i.amount}:void 0}}),outputs:s.outputs.map(function(e,r){var t=i.outputs[r];return{value:Number(e.satoshis),scriptPubKey:e.lockingScript.toHex(),address:null==t?void 0:t.address,tokenData:null!=t&&t.inscription?{amount:t.amount}:void 0}})}}):u},t.parseTransaction=function(e,r,t){try{var n=this,i=e.id("hex");return Promise.resolve(n.processTransactionInputs(e,r)).then(function(o){var s=n.processTransactionOutputs(e,r),a=s.environment||o.environment||"sandbox",u=s.type||o.type||"transfer";"transfer"===u&&o.inputs.some(function(e){return e.inscription&&(e.address===k||e.address===E)})&&(u="mint"),"transfer"!==u&&"mint"!==u||s.outputs.some(function(e){var r;return"redeem"===(null==(r=e.inscription)||null==(r=r.metadata)?void 0:r.action)})&&(u="redeem"),0===o.inputs.filter(function(e){return e.inscription}).length&&o.inputs.length>0&&(u="deploy");var c=n.validateTransaction(r,e,u,o.total,s.total);return n.buildParseResponse(i,a,u,o,s,c,e,t)})}catch(e){return Promise.reject(e)}},t.parseTx=function(e,r){try{var t=function(t){if(!t)throw b("Config not fetched");return Promise.resolve(n.fetchSourceTransaction(e)).then(function(e){if(!e)throw b("Failed to fetch transaction");return Promise.resolve(n.parseTransaction(e,t,r))})},n=this;if(!e||"string"!=typeof e||""===e.trim()||!/^[a-fA-F0-9]{64}$/.test(e))throw b("A valid transaction ID is required");var i=n.mneeConfig;return Promise.resolve(i?t(i):Promise.resolve(n.getCosignerConfig()).then(t))}catch(e){return Promise.reject(e)}},t.parseTxFromRawTx=function(e,r){try{var t=function(e){if(!e)throw b("Config not fetched");return Promise.resolve(n.parseTransaction(i,e,r))},n=this;if(!e||"string"!=typeof e||""===e.trim())throw b("A valid raw transaction is required");if(!function(e){try{return s.fromHex(e),!0}catch(e){return!1}}(e))throw b("Invalid raw transaction hex");var i=s.fromHex(e),o=n.mneeConfig;return Promise.resolve(o?t(o):Promise.resolve(n.getCosignerConfig()).then(t))}catch(e){return Promise.reject(e)}},t.parseInscription=function(e){return C(e)},t.parseCosignerScripts=function(e){return N(e)},t.validateUniqueInputs=function(e){for(var r,t=new Set,n=m(e);!(r=n()).done;){var i=r.value,o=i.txid+":"+i.vout;if(t.has(o))return{error:"Duplicate input detected: "+o+". Each UTXO can only be spent once."};t.add(o)}return{}},t.addInputsToTransaction=function(e,r,t){try{var n,i=function(e){return n?e:{tokensIn:u}},s=this,u=0,c=Z(r,function(i){var c=r[i];return Promise.resolve(s.fetchSourceTransaction(c.txid)).then(function(r){if(!r)return n=1,{tokensIn:0,error:"Failed to fetch source transaction: "+c.txid+"_"+c.vout};var f=r.outputs[c.vout];if(!f)return n=1,{tokensIn:0,error:"Output "+c.vout+" not found in transaction "+c.txid};var d=s.parseInscriptionData(f.lockingScript);if(!d)return n=1,{tokensIn:0,error:"No inscription found in output "+c.txid+":"+c.vout};var h=parseInt(d.amt);u+=h,t.set(i,a.fromWif(c.wif)),e.addInput({sourceTXID:c.txid,sourceOutputIndex:c.vout,sourceTransaction:r,unlockingScript:new o})})},function(){return n});return Promise.resolve(c&&c.then?c.then(i):i(c))}catch(e){return Promise.reject(e)}},t.calculateTransferMultiFee=function(e,r,t,n,i,o){for(var s,a=this,u=0,c=-1,f=function(){var s;c=u;var f=e-r-u,d=0;if(f>0)if("string"==typeof t)n.has(t)||(d=f);else if(Array.isArray(t))for(var h,l=m(t);!(h=l()).done;){var v=h.value,p=a.toAtomicAmount(v.amount);n.has(v.address)||(d+=p)}else d=0;var g=r+d,y=void 0!==o.find(function(e){return e.address===i.burnAddress})?0:null==(s=i.fees.find(function(e){return g>=e.min&&g<=e.max}))?void 0:s.fee;if(void 0===y)return{v:{fee:0,error:"Fee ranges inadequate"}};u=y};u!==c;)if(s=f())return s.v;return{fee:u}},t.addChangeOutputs=function(e,r,t,n,i,o,s,a){try{var u,c=function(e){return u?e:{}},f=this;if(r<=0)return Promise.resolve({});var d=function(){if("string"==typeof t){var c=e.addOutput;return P