@nibgate/sdk 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,68 +1,68 @@
1
- var Nibgate=(()=>{var Te=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var kt=Object.prototype.hasOwnProperty;var M=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ae=(t,e)=>{for(var n in e)Te(t,n,{get:e[n],enumerable:!0})},vt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of xt(e))!kt.call(t,a)&&a!==n&&Te(t,a,{get:()=>e[a],enumerable:!(r=wt(e,a))||r.enumerable});return t};var St=t=>vt(Te({},"__esModule",{value:!0}),t);function j(t,e="gateway"){let n=String(t||"").trim().toLowerCase().replace(/[-\s]+/g,"_");return n==="circle_gateway"||n==="x402"?"gateway":n==="direct_transfer"||n==="wallet_transfer"?"transfer":ee.includes(n)?n:e}var ee,le=M(()=>{ee=["gateway","transfer"]});function O(t){let e=String(t||"").trim().toLowerCase();return F.includes(e)?e:Et[e]||"article"}function _e(t,e="paid"){let n=String(t||"").trim().toLowerCase();return Y.includes(n)?n:e}function $(t={}){if(typeof t=="string"){let e=_e(t);return{humans:e,agents:e}}return{humans:_e(t.humans||t.human||t.default,"paid"),agents:_e(t.agents||t.agent||t.default,"paid")}}function J(t={}){let e=typeof t=="string"?{mode:t}:t||{},n=String(e.mode||e.type||"one_time").trim().toLowerCase().replace(/[-\s]+/g,"_");return{...e,mode:te.includes(n)?n:"one_time"}}function Pe(){return typeof window<"u"?window:null}function z(t){let e=Pe();if(!e)return"";let n=`meta[name="${t}"], meta[property="${t}"]`,r=e.document.querySelector(n);return r&&r.getAttribute("content")||""}function Ct(t){let e=Pe();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function Tt(){return z("og:image")||void 0}function At(){return z("og:description")||z("description")||void 0}function _t(){let t=Pe();return z("og:title")||z("twitter:title")||(t?t.document.title:"")||void 0}function Rt(){let t=z("og:type").toLowerCase();return t.includes("music")||t.includes("audio")||t.includes("song")?"music":t.includes("video")||t.includes("movie")?"video":t.includes("image")||t.includes("photo")?"image":"article"}function Pt(){let t=z("keywords");if(t)return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).slice(0,8)}function It(t,e){return e&&typeof e=="object"&&Object.keys(e).length>0?$(e):t!=null&&t!==""&&Number.parseFloat(t)>0?{humans:"paid",agents:"paid"}:{humans:"free",agents:"free"}}function S(t={}){let e=typeof t=="string"?{id:t}:t||{},{publisher:n,publisherId:r,publisherWallet:a,publisherHandle:o,publisherName:c,publisherProfileUrl:u,publisherOrigin:i,publisherVerification:l,authorHandle:s,...y}=e,d=e.path||e.route||void 0,f=e.url||Ct(d)||void 0,h=e.access,x=e.price??e.amount??"";return{...y,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||_t()||"Untitled").trim(),type:O(e.type||e.contentType||Rt()),price:x,currency:e.currency||"USDC",paymentRail:j(e.paymentRail||e.paymentMode||e.rail),recipient:e.recipient||e.receiver||e.receiverAddress||e.payTo||e.creatorWallet||void 0,payTo:e.payTo||e.recipient||e.receiver||e.receiverAddress||e.creatorWallet||void 0,path:d,url:f,imageUrl:e.imageUrl||e.image||Tt()||void 0,description:e.description||e.summary||At()||void 0,tags:e.tags||Pt()||void 0,access:It(x,h),unlock:J(e.unlock),ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0,reputation:{...typeof e.reputation=="object"&&e.reputation?e.reputation:{},ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0}}}function Re(t){return Array.isArray(t)?t.length>0:t!=null&&String(t).trim()!==""}function Nt(t={}){let e=$(t.access);return e.humans==="paid"||e.agents==="paid"||Number.parseFloat(t.price||t.amount||"0")>0}function de(t={},e={}){let n=S(t),r=[],a=[],o=e.required||["id","type"],c=e.recommended||["title","url","description","imageUrl","tags"];for(let i of o)Re(n[i])||a.push(`Missing required content metadata: ${i}`);for(let i of c)Re(n[i])||r.push(`Missing recommended discovery metadata: ${i}`);F.includes(n.type)||a.push("Content type must be one of music, video, article, or image."),n.url&&!/^https?:\/\//i.test(String(n.url))&&r.push("Use an absolute canonical url for stronger discovery identity."),n.imageUrl&&!/^https?:\/\//i.test(String(n.imageUrl))&&r.push("Use an absolute imageUrl for thumbnails in Explore and agent discovery."),Nt(n)&&(Re(n.price)||a.push("Paid content requires price."));let u=Math.max(0,100-a.length*20-r.length*8);return{ok:a.length===0,score:u,errors:a,warnings:r,resource:n}}var F,Et,Y,te,I=M(()=>{le();F=["music","video","article","image"],Et={audio:"music",song:"music",track:"music",album:"music",playlist:"music",photo:"image",picture:"image",illustration:"image",art:"image",movie:"video",clip:"video"},Y=["free","paid","blocked"],te=["one_time","metered_stream","metered_read","time_pass","agent_quota"]});function v(){return typeof window>"u"?null:window}var W=M(()=>{});function Mt(t,e){let n=v();return n?(n.__nibgateClientQueue=n.__nibgateClientQueue||[],n.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function fe(){let t=v();if(!t?.nibgateHub?.track||!Array.isArray(t.__nibgateClientQueue))return!1;let e=t.__nibgateClientQueue.splice(0);return e.forEach(n=>{t.nibgateHub.track(n.eventName,n.payload)}),e.length>0}function Ut(){let t=v();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,n=t.setInterval(()=>{e+=1,fe(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(n),t.__nibgateClientFlushStarted=!1)},250)}function U(t,e={}){let n=v();return n?n.nibgateHub?.track?(n.nibgateHub.track(t,e),fe(),!0):(Mt(t,e),Ut(),!1):!1}function B(t,e={}){return{...e,resource:S(t)}}var Q=M(()=>{W();I()});function Ie(t){return`nibgate:unlock:${t.id||t.path||t.url||"content"}`}function Ne(t){return`nibgate:payment-proof:${t.id||t.path||t.url||"content"}`}function me(t,e={}){let n=v();if(!n)return!1;try{return n.localStorage.setItem(Ie(t),JSON.stringify({unlockedAt:new Date().toISOString(),payment:e})),!0}catch{return!1}}function Me(t,e){let n=v();if(!n||!e)return!1;try{let r=typeof e=="string"?e:JSON.stringify(e);return n.localStorage.setItem(Ne(t),r),!0}catch{return!1}}function Ue(t){let e=v();if(!e)return"";try{return e.localStorage.getItem(Ne(t))||""}catch{return""}}function Ve(t){let e=S(t),n=v();if(!n)return!1;try{return n.localStorage.removeItem(Ne(e)),n.localStorage.removeItem(Ie(e)),!0}catch{return!1}}function je(t){let e=v();if(!e)return!1;try{return!!e.localStorage.getItem(Ie(t))}catch{return!1}}var pe=M(()=>{W();I()});function Ye(t){Fe=t}function P(t,e={}){let n=S(t),r=e.client||Fe;return{resource:n,content(a={}){return r.content(n,a)},view(a={}){return r.view(n,a)},track(a,o={}){return r.track(a,B(n,o))},unlockStarted(a={}){return r.unlockStarted(n,a)},unlockCompleted(a={}){return me(n,a),r.unlockCompleted(n,a)},paymentCompleted(a={}){return r.paymentCompleted(n,a)},isUnlocked(){return je(n)},markUnlocked(a={}){return me(n,a),r.unlockCompleted(n,a),r.paymentCompleted(n,a),!0},async unlock(a={}){r.unlockStarted(n);let o=typeof a=="function"?await a(n):a;return me(n,o||{}),r.unlockCompleted(n,o||{}),r.paymentCompleted(n,o||{}),{unlocked:!0,resource:n,payment:o||{}}},rate(a={},o={}){return r.rateResource(n,a,o)}}}var Fe,D=M(()=>{I();Q();pe();Fe=null});function Bt(t,e){return typeof e=="bigint"?e.toString():e}function K(t){return JSON.stringify(t,Bt)}var ge=M(()=>{});function ae(t={}){let e=typeof t=="number"?t:t.rating??t.stars??t.ratingValue??t.score,n=Number.parseFloat(e),r=Number.isFinite(n)?Math.max(1,Math.min(50,n<=5?Math.round(n*10):Math.round(n))):null;return{...t,rating:r?r/10:void 0,ratingValue:r||void 0}}function be(t,e={},n={}){let r=S(t),o=ae(e).ratingValue||0;return["Nibgate content rating",`site:${n.siteDomain||n.domain||r.siteDomain||r.domain||""}`,`content:${r.externalId||r.id}`,`url:${r.url||n.url||""}`,`rating:${o}`,"I confirm this rating is tied to my unlock/payment proof."].join(`
2
- `)}var we=M(()=>{I()});function Qe(t){let e=t.extra;return e?e.name===xe&&e.version==="1":!1}function Dt(t){if(Qe(t))return t.extra?.verifyingContract}function zt(){let t=new Uint8Array(32);return crypto.getRandomValues(t),"0x"+Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function oe(t){return t&&typeof t=="string"&&t.startsWith("0x")?t.toLowerCase():t}var xe,Lt,ke,Ke=M(()=>{xe="GatewayWalletBatched",Lt={TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]};ke=class{constructor(e){this.signer=e,this.scheme=xe,this._beforeHooks=[],this._afterHooks=[],this._failureHooks=[]}onBeforePaymentCreation(e){return this._beforeHooks.push(e),this}onAfterPaymentCreation(e){return this._afterHooks.push(e),this}onPaymentCreationFailure(e){return this._failureHooks.push(e),this}async createPaymentPayload(e,n){let r={paymentRequired:{x402Version:e,accepts:[n]},selectedRequirements:n};for(let a of this._beforeHooks){let o=await a(r);if(o&&o.abort)throw new Error("Payment creation aborted: "+o.reason)}try{if(!Qe(n))throw new Error('BatchEvmScheme can only handle Circle batching options. Expected extra.name="'+xe+'" and extra.version="1"');let a=Dt(n);if(!a)throw new Error("Circle batching option missing extra.verifyingContract (GatewayWallet address)");let o=zt(),c=Math.floor(Date.now()/1e3),u=Math.max(n.maxTimeoutSeconds||0,604900),i={from:oe(this.signer.address),to:oe(n.payTo),value:n.amount,validAfter:String(c-600),validBefore:String(c+u),nonce:o},l=await this.signAuthorization(i,n,a),y={x402Version:e,payload:{authorization:i,signature:l}},d={...r,paymentPayload:y};for(let f of this._afterHooks)try{await f(d)}catch{}return y}catch(a){let o={...r,error:a};for(let c of this._failureHooks){let u=await c(o);if(u&&u.recovered)return{x402Version:u.payload.x402Version,payload:u.payload.payload}}throw a}}async signAuthorization(e,n,r){if(!n.network.startsWith("eip155:"))throw new Error('BatchEvmScheme: unsupported network format "'+n.network+'". Expected "eip155:<chainId>"');let a=parseInt(n.network.split(":")[1],10),o={name:xe,version:"1",chainId:a,verifyingContract:oe(r)},c={from:oe(e.from),to:oe(e.to),value:BigInt(e.value),validAfter:BigInt(e.validAfter),validBefore:BigInt(e.validBefore),nonce:e.nonce},u={domain:o,types:Lt,primaryType:"TransferWithAuthorization",message:c};return this.signer.signTypedData(u)}}});var Xe={};Ae(Xe,{createCircleGatewayBrowserAdapter:()=>Wt});function Ot(t){let e=typeof t=="string"?t:K(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function $t(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function Wt(t={}){let e=t.signer||await t.getSigner?.();if(!e?.address||typeof e.signTypedData!="function")throw new Error("Circle Gateway browser adapter requires an EVM signer with address and signTypedData.");let n=t.clientModule?.BatchEvmScheme?new t.clientModule.BatchEvmScheme(e):new ke(e),r=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function a(c){if(c&&typeof c=="object")return c;if(!c||typeof c!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse($t(c))}function o(c){let u=Array.isArray(c?.accepts)?c.accepts:[],i=u.find(l=>{let s=l.extra||{};return l.network===r&&s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"})||u.find(l=>{let s=l.extra||{};return s.name==="GatewayWalletBatched"&&s.version==="1"&&typeof s.verifyingContract=="string"});if(!i){let l=u.map(y=>y.network).filter(Boolean).join(", ")||"none",s=u.some(y=>{let d=y.extra||{};return d.name==="GatewayWalletBatched"&&d.version==="1"&&typeof d.verifyingContract=="string"});throw new Error(s?`No Circle Gateway batching payment option found for ${r}. Server returned networks: ${l}.`:`The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${r}' }).`)}return i}return{signer:e,network:r,async pay({paymentRequiredHeader:c,challenge:u}){let i=a(c||u),l=o(i),s=i.x402Version??2,y=await n.createPaymentPayload(s,l),d=Ot({...y,resource:i.resource,accepted:l});return{paymentSignature:d,signature:d,metadata:{paymentProvider:"circle-gateway",network:l.network,payer:e.address,recipient:l.payTo||l.recipient,amount:l.amount,currency:l.asset}}}}}var Ze=M(()=>{Ke();ge()});function jt(t=""){return String(t||"").replace(/^0x/i,"").replace(/[^0-9a-fA-F]/g,"").toLowerCase()}function tt(t=""){let e=jt(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function Be(t=0){return Number(t||0).toString(16).padStart(64,"0")}function Ft(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function Yt(t=""){let e=Ft(t),n=e.length/2,r=Math.ceil(n/32)*64;return Be(n)+e.padEnd(r,"0")}function Jt({contentId:t,ratingValue:e,reviewHash:n,unlockRef:r}){return Vt+tt(t)+Be(e)+tt(n||He)+Be(128)+Yt(r||"")}function De(t,e={}){let n=e.contentId||e.contentHash;if(!n)throw new Error("contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.");return n}function it(t=""){if(!t)return He;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function Qt(t,e={}){if(e.contentId||e.contentHash)return{contentId:e.contentId||e.contentHash};let n=e.prepareUrl||e.indexUrl?.replace(/\/index$/,"/prepare");if(!n)throw new Error("contentId/contentHash or prepareUrl is required for onchain rating.");let r=await fetch(n,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,resource:t,url:t.url,path:t.path})}),a=await r.json().catch(()=>({}));if(!r.ok||!a.contentHash)throw new Error(a.error||"Could not prepare Nibgate onchain rating.");return a}async function ve(t,e={}){let n=S(t),r=ae(e.rating??e.stars??e);if(!r.ratingValue)throw new Error("Rating must be between 0.1 and 5 stars.");let a=e.provider||globalThis?.ethereum;if(!a?.request)throw new Error("Connect an EVM wallet to rate this content onchain.");let o=e.contractAddress||e.reputationContract||Le;if(!o)throw new Error("Nibgate reputation contract address is not configured.");let c=await a.request({method:"eth_requestAccounts"}),u=Array.isArray(c)&&c[0]||"";if(!u)throw new Error("No wallet account selected.");let i=await Qt(n,e),l=i.contentHash||i.contentId||De(n,e),s=e.reviewHash||He,y=String(e.unlockRef||e.paymentId||e.txHash||""),d=Jt({contentId:l,ratingValue:r.ratingValue,reviewHash:s,unlockRef:y}),f=await a.request({method:"eth_sendTransaction",params:[{from:u,to:o,data:d}]}),h=B(n,{rating:r.rating,ratingValue:r.ratingValue,walletAddress:u,txHash:f,contentHash:l,reviewHash:s,proofType:"onchain_pending",proof:y,paymentId:e.paymentId,actor:e.actor||"human"});return U("content_rating",h),e.indexUrl&&await fetch(e.indexUrl,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,txHash:f,resource:n,url:n.url,path:n.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:f,walletAddress:u,contentId:l,ratingValue:r.ratingValue,reviewHash:s}}var Vt,He,nt,rt,at,ot,Le,ct,ze=M(()=>{we();I();Q();Vt="0xc62fad09",He=`0x${"0".repeat(64)}`,nt="nibgate:content:v1",rt=5042002,at="Arc Testnet",ot="https://rpc.testnet.arc.io",Le="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",ct=[{type:"function",name:"rateContent",stateMutability:"nonpayable",inputs:[{name:"contentId",type:"bytes32"},{name:"rating",type:"uint8"},{name:"reviewHash",type:"bytes32"},{name:"unlockRef",type:"string"}],outputs:[]}]});var st={};Ae(st,{createOnchainRating:()=>ie,mountRatingUI:()=>se,rateResource:()=>X});function X(t,e={},n={}){let r=S(t),a=ae(e),o={...n,...a,ratingMessage:n.ratingMessage||e.message||e.ratingMessage||be(r,a,n),ratingSignature:n.ratingSignature||e.signature||e.ratingSignature||void 0,resource:r};return U("content_rating",o)}function ie(t,e={}){let n=P(t,e.gateOptions||{}),r=v(),a=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,o=typeof e.ratingTarget=="string"?r?.document.querySelector(e.ratingTarget):e.ratingTarget,c=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",i=(Array.isArray(e.buttons)?e.buttons:typeof e.buttons=="string"?Array.from(r?.document.querySelectorAll(e.buttons)||[]):e.buttons?[e.buttons]:null)||Array.from(r?.document.querySelectorAll(c)||[]),l=e.source||"nibgate-onchain-rating",s=!1,y=e.payment||null;function d(b){typeof e.onStatus=="function"&&e.onStatus(b),a&&(a.textContent=b||"")}function f(b){s=!!b,i.forEach(k=>{k&&"disabled"in k&&(k.disabled=s)})}function h(b=null){return y=b||null,y}function x(b){return o&&("hidden"in o&&(o.hidden=!b),o.setAttribute("aria-hidden",b?"false":"true")),!!b}function T(b){let k=b?.dataset?.nibgateRatingValue||b?.dataset?.rating||b?.value||b?.textContent,R=Number.parseFloat(String(k||"").replace(/[^\d.]/g,""));return Number.isFinite(R)?R:Number(e.rating||e.stars||0)}async function A(b={}){f(!0);try{let k=Number.parseFloat(b.rating??b.stars??b.value??e.rating??e.stars);if(!Number.isFinite(k))throw new Error("Choose a rating before sending.");let R=b.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():y?.paymentId),E=b.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||R||y?.txHash||y?.transactionHash||"";d(e.pendingMessage||"Send the onchain rating transaction...");let H=await ve(n.resource,{...e,...b,rating:k,paymentId:R,unlockRef:E,source:l});return d(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(H),H}catch(k){let R=k?.message||e.errorMessage||"Rating failed.";throw d(R),typeof e.onError=="function"&&e.onError(k),k}finally{f(!1)}}function m(){return i.forEach(b=>{b?.addEventListener?.("click",()=>A({rating:T(b)}).catch(()=>null))}),e.visible!==void 0&&x(!!e.visible),p}let p={resource:n.resource,rate:A,mount:m,setPayment:h,setVisible:x};return e.autoMount!==!1&&m(),p}function se(t,e={}){let n=P(t,e.gateOptions||{}),r=v();if(!r)return null;let a=typeof e.target=="string"?r.document.querySelector(e.target):e.target;if(!a)return null;let o=[1,2,3,4,5],c=0,u=r.document.createElement("div");u.className="nibgate-rating-ui",u.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let i=o.map(d=>{let f=r.document.createElement("button");return f.type="button",f.dataset.nibgateRatingValue=String(d),f.setAttribute("aria-label",`${d} star${d>1?"s":""}`),f.innerHTML="\u2606",f.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",f.addEventListener("mouseenter",()=>{i.forEach((h,x)=>h.style.color=x<d?"#f5b342":"#ccc")}),f.addEventListener("mouseleave",()=>{i.forEach((h,x)=>h.style.color=x<c?"#f5b342":"#ccc")}),f.addEventListener("click",()=>{c=d,i.forEach((h,x)=>h.style.color=x<d?"#f5b342":"#ccc"),X(n.resource,{rating:d}).catch(()=>{})}),u.appendChild(f),f}),l=r.document.createElement("span");l.style.cssText="font-size:13px;color:#888;margin-left:8px",l.textContent=e.label||"Rate this content",u.appendChild(l),a.appendChild(u);function s(d,f={}){return n.rate({...f,rating:d})}function y(d){c=d,i.forEach((f,h)=>f.style.color=h<d?"#f5b342":"#ccc")}return{resource:n.resource,container:u,setRating:y,rate:s}}var Se=M(()=>{I();we();Q();W();ze();D()});var Zt={};Ae(Zt,{ACCESS_MODES:()=>Y,CONTENT_TYPES:()=>F,NIBGATE_CONTENT_HASH_NAMESPACE:()=>nt,NIBGATE_CONTENT_SETTING_FIELDS:()=>pt,NIBGATE_REPUTATION_ABI:()=>ct,NIBGATE_REPUTATION_CHAIN_ID:()=>rt,NIBGATE_REPUTATION_CHAIN_NAME:()=>at,NIBGATE_REPUTATION_CONTRACT:()=>Le,NIBGATE_REPUTATION_RPC_URL:()=>ot,PAYMENT_RAILS:()=>ee,UNLOCK_MODES:()=>te,checkResourceAccess:()=>N,contentRatingHash:()=>De,createCircleGatewayBrowserAdapter:()=>ce,createEvmGatewayUnlock:()=>q,createGate:()=>P,createHostedUnlock:()=>et,createNibgate:()=>Oe,createNibgateContentSettings:()=>gt,createOnchainRating:()=>ie,createTransferCheckout:()=>ue,createWalletCheckout:()=>he,mountRatingUI:()=>se,nibgate:()=>$e,normalizeAccessPolicy:()=>$,normalizeContentType:()=>O,normalizePaymentRail:()=>j,normalizeResource:()=>S,normalizeUnlockPolicy:()=>J,payAndUnlockResource:()=>re,payWithPaymentSignature:()=>ne,payWithTransfer:()=>Ee,rateContentOnchain:()=>ve,rateResource:()=>X,renderDefaultGatewayWalletUI:()=>mt,renderDefaultRatingUI:()=>ft,renderDefaultUnlockUI:()=>dt,reviewTextHash:()=>it,settingsToAccessPolicy:()=>yt,settingsToUnlockPolicy:()=>ht,setupResourcePage:()=>ye,trackResourcePage:()=>G,validateResourceMetadata:()=>de});D();Q();pe();ge();D();I();W();D();function G(t,e={}){let n=P(t,e.gateOptions||{}),r=de(n.resource,e.validation||{});return(r.warnings.length||r.errors.length)&&e.warn!==!1&&v()?.console?.warn&&v().console.warn("Nibgate content metadata needs attention",r),n.content({source:e.source,metadataQuality:{score:r.score,warnings:r.warnings,errors:r.errors},...e.content||{}}),n.view({source:e.source,path:e.path||v()?.location?.pathname||n.resource.path,referrer:e.referrer??v()?.document?.referrer??"",...e.view||{}}),n}function ye(t,e={}){let n=G(t,e),r=v();if(!r)return n;let a=typeof e.button=="string"?r.document.querySelector(e.button):e.button,o=typeof e.status=="string"?r.document.querySelector(e.status):e.status,c=e.onStatus||(u=>{o&&(o.textContent=u||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await N(t,{...e,onStatus:c})}finally{a.disabled=!1}}),n}async function N(t,e={}){let n=P(t,e.gateOptions||{}),r=e.accessPath||n.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.checkingMessage||"Checking access route..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"nibgate-access-route"});let o=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json",...Ue(n.resource)?{"x-nibgate-payment-proof":Ue(n.resource)}:{},...e.headers||{}},body:e.body}),c=await o.json().catch(()=>({}));if(o.status===402){if(n.track("payment_challenge_returned",{source:e.source,challenge:c,resource:n.resource}),a(e.challengeMessage||"Payment challenge returned. Continue with checkout."),typeof e.createPaymentSignature=="function"||typeof e.checkout=="function")return ne(t,{...e,challenge:c,paymentRequiredHeader:o.headers.get("PAYMENT-REQUIRED")||o.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let i=await re(t,e);return i.ok&&e.retryAfterPay!==!1?N(t,{...e,autoPay:!1}):i}return{ok:!1,status:o.status,challenge:c,resource:n.resource,response:o}}if(!o.ok)return a(c.error||e.errorMessage||"Access check failed"),{ok:!1,status:o.status,error:c.error||"Access check failed",payload:c,resource:n.resource,response:o};let u=e.payment||c.payment||null;return u&&(n.unlockCompleted(u),n.paymentCompleted(u)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:o.status,payload:c,payment:u,resource:n.resource,response:o}}async function ne(t,e={}){let n=P(t,e.gateOptions||{}),r=e.accessPath||n.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Waiting for wallet payment approval..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"wallet-gateway"});let o=e.paymentSignature||"",c=e.memo||"",u=e.payment||{};if(!o){let d=e.paymentRequiredHeader||"",f=e.challenge||null,x=await(e.createPaymentSignature||e.checkout)({resource:n.resource,challenge:f,paymentRequiredHeader:d,accessPath:r});o=x?.paymentSignature||x?.signature||x?.payment||"",c=x?.memo||x?.paymentMemo||"",u=x?.metadata||x?.paymentMetadata||x||{}}if(!o){let d="Wallet did not return a payment signature.";return n.track("payment_failed",{source:e.source,error:d}),a(d),{ok:!1,status:400,error:d,resource:n.resource}}let i=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":o,...c?{"payment-memo":c}:{},...e.headers||{}}}),l=await i.text(),s={};try{s=l?JSON.parse(l):{}}catch{s={error:l||"Payment verification failed"}}if(!i.ok){let d=s.detail||s.reason||s.invalidReason||s.error||l||"Payment verification failed",f=typeof d=="string"?d:K(d);return n.track("payment_failed",{source:e.source,status:i.status,error:f,...u}),a(e.paymentErrorMessage||f),{ok:!1,status:i.status,error:f,payload:s,resource:n.resource,response:i}}let y=s.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:o,memo:c,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC",...u};return Me(n.resource,s.unlockProof),n.markUnlocked(y),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:i.status,payload:s,payment:y,resource:n.resource,response:i}}async function re(t,e={}){let n=P(t,e.gateOptions||{}),r=e.payPath||n.resource.payPath||"/api/nibgate/pay",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Starting payment..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"circle-gateway"});let o=await fetch(r,{method:e.payMethod||"POST",headers:{accept:"application/json","content-type":"application/json",...e.payHeaders||{}},body:JSON.stringify({resource:n.resource,...e.payPayload||{}})}),c=await o.json().catch(()=>({}));if(!o.ok||!c.ok)return n.track("payment_failed",{source:e.source,status:o.status,error:c.error||"Payment failed",detail:c.detail||""}),a(c.detail||c.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:o.status,payload:c,resource:n.resource,response:o};let u=c.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:c.paymentId||`nibgate_payment_${Date.now()}`,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC"};return Me(n.resource,c.unlockProof),n.markUnlocked(u),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:c,payment:u,resource:n.resource,response:o}}I();W();function Ht(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&(r.textContent=e||"")}function Je(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&"disabled"in r&&(r.disabled=!!e)}function he(t,e={}){let n=S(t),r=e.accessPath||n.accessPath||"/api/nibgate/access",a=e.button||null,o=e.status||null,c=typeof e.onStatus=="function"?e.onStatus:s=>Ht(o,s),u=e.checkout||e.createPaymentSignature||e.pay;if(typeof u!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function i(s={}){Je(a,!0);try{return await N(n,{...e,...s,accessPath:r,createPaymentSignature:u,onStatus:c})}finally{Je(a,!1)}}function l(){let s=v();if(!s||!a)return{unlock:i};let y=typeof a=="string"?s.document.querySelector(a):a;return y&&y.addEventListener("click",()=>i().catch(d=>c(d.message||"Checkout failed."))),{unlock:i}}return{resource:n,unlock:i,mount:l}}I();we();Q();D();D();W();pe();ge();D();async function ce(t={}){return(await Promise.resolve().then(()=>(Ze(),Xe))).createCircleGatewayBrowserAdapter(t)}var Gt="https://api.nibgate.xyz/api/hub/pay";function qt(t,e){return e.hosted||e.accessPath==="hosted"?Gt:e.accessPath||t.accessPath||"/api/nibgate/access"}function q(t,e={}){let n=P(t,e.gateOptions||{}),r=v(),a=qt(n.resource,e),o=e.source||"nibgate-evm-gateway",c=e.network||"eip155:5042002",u=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,i=typeof e.connectButton=="string"?r?.document.querySelector(e.connectButton):e.connectButton,l=typeof e.disconnectButton=="string"?r?.document.querySelector(e.disconnectButton):e.disconnectButton,s=typeof e.unlockButton=="string"?r?.document.querySelector(e.unlockButton):e.unlockButton,y=typeof e.clearButton=="string"?r?.document.querySelector(e.clearButton):e.clearButton,d=typeof e.walletLabel=="string"?r?.document.querySelector(e.walletLabel):e.walletLabel,f=typeof e.unlockedTarget=="string"?r?.document.querySelector(e.unlockedTarget):e.unlockedTarget,h="",x=!1;function T(w){typeof e.onStatus=="function"&&e.onStatus(w),u&&(u.textContent=w||"")}function A(w){return w?`${w.slice(0,6)}...${w.slice(-4)}`:""}function m(){return r?.ethereum||e.provider||null}function p(w){x=!!w,[i,l,s,y].forEach(C=>{C&&"disabled"in C&&(C.disabled=x||C===i&&!m()||C===l&&!h)})}function b(){let w=!!m();d&&(d.textContent=h?A(h):w?"Ready to connect":"No wallet detected"),i&&(i.textContent=h?"Connected":"Connect wallet"),l&&(l.textContent="Disconnect"),i&&"disabled"in i&&(i.disabled=x||!w),l&&"disabled"in l&&(l.disabled=x||!h)}function k(w,C={}){s&&(s.textContent=w?"Unlocked":`Unlock for ${n.resource.price} ${n.resource.currency||"USDC"}`),f&&("hidden"in f&&(f.hidden=!w),f.setAttribute("aria-hidden",w?"false":"true")),w&&n.markUnlocked(C)}async function R(){p(!0),T("Opening wallet connection...");try{let w=m();if(!w)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let C=await w.request({method:"eth_requestAccounts"});if(h=Array.isArray(C)&&C[0]||"",!h)throw new Error("No wallet account selected.");return b(),T("Wallet connected. You can unlock now."),h}finally{p(!1)}}async function E(){p(!0);try{let w=m();if(w?.request&&h)try{await w.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return h="",b(),T(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{p(!1)}}async function H(w){let C=m();if(!C)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");return h||await R(),(await ce({network:c,signer:{address:h,signTypedData:bt=>C.request({method:"eth_signTypedData_v4",params:[h,K(bt)]})},clientModule:e.circleClientModule})).pay(w)}async function L(){p(!0);try{h||await R(),p(!0),T("Requesting Gateway unlock...");let w=await N(n.resource,{accessPath:a,source:o,paymentProvider:e.paymentProvider||"circle-gateway-browser",challengeMessage:e.challengeMessage||"Gateway payment required. Connect your wallet to continue...",paymentMessage:e.paymentMessage||"Approve the Gateway payment proof in your wallet...",successMessage:e.successMessage||`Unlocked ${n.resource.title||"content"}.`,method:e.method,headers:e.headers,body:e.body,checkout:H,onStatus:T});return w.ok&&(k(!0,w.payment||{}),typeof e.onUnlock=="function"&&e.onUnlock(w)),w}catch(w){let C=w?.message||"Unlock failed. Please try again.";return T(C),{ok:!1,status:0,error:C,resource:n.resource}}finally{p(!1),b()}}function _(){Ve(n.resource),k(!1),T("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function Z(){let w=m();try{let C=w?await w.request({method:"eth_accounts"}):[];h=Array.isArray(C)&&C[0]||""}catch{}b(),k(!1)}function Ge(){return i?.addEventListener?.("click",()=>R().catch(w=>T(w?.message||"Could not connect wallet."))),l?.addEventListener?.("click",()=>E().catch(w=>T(w?.message||"Could not disconnect wallet."))),s?.addEventListener?.("click",()=>L()),y?.addEventListener?.("click",_),Z(),G(n.resource,{source:o}),qe}let qe={resource:n.resource,connect:R,disconnect:E,unlock:L,clear:_,hydrate:Z,mount:Ge,getWalletAddress:()=>h};return e.autoMount!==!1&&Ge(),qe}function et(t,e={}){return q(t,{...e,hosted:!0,noWalletMessage:e.noWalletMessage||"Install MetaMask or another EVM wallet to unlock premium content."})}Se();I();function ue(t,e={}){let n=S({...t,paymentRail:"transfer"}),r=e.sendTransfer||e.transfer;if(typeof r!="function")throw new Error("createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.");return{resource:n,async pay(a={}){let o=n.recipient||n.payTo,c=String(n.price||n.amount||"0"),u=n.currency||"USDC",i=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",l=await r({resource:n,recipient:o,amount:c,currency:u,network:i,challenge:a.challenge}),s=l?.txHash||l?.hash||l?.transactionHash||l?.paymentId||"";if(!s)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:s,signature:s,memo:l.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:s,txHash:s,recipient:o,amount:Number(c),currency:u,network:i,...l.metadata||l}}}}}async function Ee(t,e={}){let r=await(e.checkout||ue(t,e).pay)({resource:S(t),challenge:e.challenge||null}),a=r?.metadata?.txHash||r?.txHash||r?.paymentSignature||r?.signature||"";if(!a)throw new Error("Transfer checkout did not return a txHash.");return N(t,{...e,headers:{...e.headers||{},"x-nibgate-transfer-tx":a},payment:r.metadata||{paymentProvider:"direct-transfer",txHash:a,paymentId:a}})}function Oe(t={}){let e=t.resource?S(t.resource):null;function n(r={}){return S({...e||{},...typeof r=="string"?{id:r}:r})}return{content(r,a={}){return U("content_registered",B(n(r),a))},registerContent(r,a={}){return U("content_registered",B(n(r),a))},view(r,a={}){return U("resource_view",B(n(r),a))},track(r,a={}){return U(r||"custom",a)},unlockStarted(r,a={}){return U("unlock_started",B(n(r),a))},unlockCompleted(r,a={}){return U("unlock_completed",B(n(r),a))},paymentCompleted(r,a={}){return U("payment_completed",B(n(r),a))},rateResource(r,a={},o={}){return X(n(r),a,o)},ratingMessage(r,a={},o={}){return be(n(r),a,o)},gate(r,a={}){return P(n(r),{...a,client:this})},trackResourcePage(r,a={}){return G(n(r),a)},checkResourceAccess(r,a={}){return N(n(r),a)},payWithPaymentSignature(r,a={}){return ne(n(r),a)},createWalletCheckout(r,a={}){return he(n(r),a)},createCircleGatewayBrowserAdapter(r={}){return ce(r)},createTransferCheckout(r,a={}){return ue(n(r),a)},payWithTransfer(r,a={}){return Ee(n(r),a)},createEvmGatewayUnlock(r,a={}){return q(n(r),a)},createOnchainRating(r,a={}){return ie(n(r),a)},mountRatingUI(r,a={}){return se(n(r),a)},payAndUnlockResource(r,a={}){return re(n(r),a)},setupResourcePage(r,a={}){return ye(n(r),a)},normalizeResource:n,normalizeContentType:O,flush:fe}}var $e=Oe();Ye($e);Se();ze();var ut="nibgate-ui-styles",g={bg:"var(--bg, #f4f4f0)",fg:"var(--fg, #0a0a0a)",muted:"var(--muted, #6b6862)",border:"var(--border, #cecdc3)",accent:"var(--accent, #7c9a6d)",accentSoft:"var(--accent-soft, #d8e8d3)",cardHover:"var(--card-hover, #e0ddd3)"},Kt=t=>Object.entries(t).map(([e,n])=>`${e.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())}:${n}`).join(";");function lt(t,e,n){let r=document.createElement(t);for(let[a,o]of Object.entries(e||{}))a==="dataset"?Object.assign(r.dataset,o):a.startsWith("on")?r.addEventListener(a.slice(2).toLowerCase(),o):a==="style"&&typeof o=="object"?r.style.cssText=Kt(o):a==="cls"?r.className=o:r.setAttribute(a,String(o));return typeof n=="string"?r.innerHTML=n:n&&(Array.isArray(n)?n:[n]).forEach(a=>{a!=null&&r.appendChild(typeof a=="string"?document.createTextNode(a):a)}),r}function We(){if(document.getElementById(ut))return;let t=lt("style",{id:ut},`
1
+ var Nibgate=(()=>{var kt=Object.create;var de=Object.defineProperty;var vt=Object.getOwnPropertyDescriptor;var St=Object.getOwnPropertyNames;var Et=Object.getPrototypeOf,Ct=Object.prototype.hasOwnProperty;var Tt=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var M=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{for(var n in e)de(t,n,{get:e[n],enumerable:!0})},Ve=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of St(e))!Ct.call(t,a)&&a!==n&&de(t,a,{get:()=>e[a],enumerable:!(r=vt(e,a))||r.enumerable});return t};var At=(t,e,n)=>(n=t!=null?kt(Et(t)):{},Ve(e||!t||!t.__esModule?de(n,"default",{value:t,enumerable:!0}):n,t)),_t=t=>Ve(de({},"__esModule",{value:!0}),t);function j(t,e="gateway"){let n=String(t||"").trim().toLowerCase().replace(/[-\s]+/g,"_");return n==="circle_gateway"||n==="x402"?"gateway":n==="direct_transfer"||n==="wallet_transfer"?"transfer":ee.includes(n)?n:e}var ee,me=M(()=>{ee=["gateway","transfer"]});function O(t){let e=String(t||"").trim().toLowerCase();return F.includes(e)?e:Rt[e]||"article"}function Ae(t,e="paid"){let n=String(t||"").trim().toLowerCase();return Y.includes(n)?n:e}function $(t={}){if(typeof t=="string"){let e=Ae(t);return{humans:e,agents:e}}return{humans:Ae(t.humans||t.human||t.default,"paid"),agents:Ae(t.agents||t.agent||t.default,"paid")}}function J(t={}){let e=typeof t=="string"?{mode:t}:t||{},n=String(e.mode||e.type||"one_time").trim().toLowerCase().replace(/[-\s]+/g,"_");return{...e,mode:te.includes(n)?n:"one_time"}}function Re(){return typeof window<"u"?window:null}function z(t){let e=Re();if(!e)return"";let n=`meta[name="${t}"], meta[property="${t}"]`,r=e.document.querySelector(n);return r&&r.getAttribute("content")||""}function Pt(t){let e=Re();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function It(){return z("og:image")||void 0}function Nt(){return z("og:description")||z("description")||void 0}function Mt(){let t=Re();return z("og:title")||z("twitter:title")||(t?t.document.title:"")||void 0}function Ut(){let t=z("og:type").toLowerCase();return t.includes("music")||t.includes("audio")||t.includes("song")?"music":t.includes("video")||t.includes("movie")?"video":t.includes("image")||t.includes("photo")?"image":"article"}function Bt(){let t=z("keywords");if(t)return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).slice(0,8)}function Ht(t,e){return e&&typeof e=="object"&&Object.keys(e).length>0?$(e):t!=null&&t!==""&&Number.parseFloat(t)>0?{humans:"paid",agents:"paid"}:{humans:"free",agents:"free"}}function S(t={}){let e=typeof t=="string"?{id:t}:t||{},{publisher:n,publisherId:r,publisherWallet:a,publisherHandle:o,publisherName:l,publisherProfileUrl:s,publisherOrigin:i,publisherVerification:d,authorHandle:c,...m}=e,f=e.path||e.route||void 0,u=e.url||Pt(f)||void 0,h=e.access,x=e.price??e.amount??"";return{...m,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||Mt()||"Untitled").trim(),type:O(e.type||e.contentType||Ut()),price:x,currency:e.currency||"USDC",paymentRail:j(e.paymentRail||e.paymentMode||e.rail),recipient:e.recipient||e.receiver||e.receiverAddress||e.payTo||e.creatorWallet||void 0,payTo:e.payTo||e.recipient||e.receiver||e.receiverAddress||e.creatorWallet||void 0,path:f,url:u,imageUrl:e.imageUrl||e.image||It()||void 0,description:e.description||e.summary||Nt()||void 0,tags:e.tags||Bt()||void 0,access:Ht(x,h),unlock:J(e.unlock),ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0,reputation:{...typeof e.reputation=="object"&&e.reputation?e.reputation:{},ratingsEnabled:e.ratingsEnabled??e.enableRatings??e.reputation?.ratingsEnabled??!0}}}function _e(t){return Array.isArray(t)?t.length>0:t!=null&&String(t).trim()!==""}function Lt(t={}){let e=$(t.access);return e.humans==="paid"||e.agents==="paid"||Number.parseFloat(t.price||t.amount||"0")>0}function pe(t={},e={}){let n=S(t),r=[],a=[],o=e.required||["id","type"],l=e.recommended||["title","url","description","imageUrl","tags"];for(let i of o)_e(n[i])||a.push(`Missing required content metadata: ${i}`);for(let i of l)_e(n[i])||r.push(`Missing recommended discovery metadata: ${i}`);F.includes(n.type)||a.push("Content type must be one of music, video, article, or image."),n.url&&!/^https?:\/\//i.test(String(n.url))&&r.push("Use an absolute canonical url for stronger discovery identity."),n.imageUrl&&!/^https?:\/\//i.test(String(n.imageUrl))&&r.push("Use an absolute imageUrl for thumbnails in Explore and agent discovery."),Lt(n)&&(_e(n.price)||a.push("Paid content requires price."));let s=Math.max(0,100-a.length*20-r.length*8);return{ok:a.length===0,score:s,errors:a,warnings:r,resource:n}}var F,Rt,Y,te,I=M(()=>{me();F=["music","video","article","image"],Rt={audio:"music",song:"music",track:"music",album:"music",playlist:"music",photo:"image",picture:"image",illustration:"image",art:"image",movie:"video",clip:"video"},Y=["free","paid","blocked"],te=["one_time","metered_stream","metered_read","time_pass","agent_quota"]});function v(){return typeof window>"u"?null:window}var W=M(()=>{});function Dt(t,e){let n=v();return n?(n.__nibgateClientQueue=n.__nibgateClientQueue||[],n.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function ge(){let t=v();if(!t?.nibgateHub?.track||!Array.isArray(t.__nibgateClientQueue))return!1;let e=t.__nibgateClientQueue.splice(0);return e.forEach(n=>{t.nibgateHub.track(n.eventName,n.payload)}),e.length>0}function zt(){let t=v();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,n=t.setInterval(()=>{e+=1,ge(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(n),t.__nibgateClientFlushStarted=!1)},250)}function U(t,e={}){let n=v();return n?n.nibgateHub?.track?(n.nibgateHub.track(t,e),ge(),!0):(Dt(t,e),zt(),!1):!1}function B(t,e={}){return{...e,resource:S(t)}}var Q=M(()=>{W();I()});function Pe(t){return`nibgate:unlock:${t.id||t.path||t.url||"content"}`}function Ie(t){return`nibgate:payment-proof:${t.id||t.path||t.url||"content"}`}function ye(t,e={}){let n=v();if(!n)return!1;try{return n.localStorage.setItem(Pe(t),JSON.stringify({unlockedAt:new Date().toISOString(),payment:e})),!0}catch{return!1}}function Ne(t,e){let n=v();if(!n||!e)return!1;try{let r=typeof e=="string"?e:JSON.stringify(e);return n.localStorage.setItem(Ie(t),r),!0}catch{return!1}}function Me(t){let e=v();if(!e)return"";try{return e.localStorage.getItem(Ie(t))||""}catch{return""}}function je(t){let e=S(t),n=v();if(!n)return!1;try{return n.localStorage.removeItem(Ie(e)),n.localStorage.removeItem(Pe(e)),!0}catch{return!1}}function Fe(t){let e=v();if(!e)return!1;try{return!!e.localStorage.getItem(Pe(t))}catch{return!1}}var he=M(()=>{W();I()});function Je(t){Ye=t}function P(t,e={}){let n=S(t),r=e.client||Ye;return{resource:n,content(a={}){return r.content(n,a)},view(a={}){return r.view(n,a)},track(a,o={}){return r.track(a,B(n,o))},unlockStarted(a={}){return r.unlockStarted(n,a)},unlockCompleted(a={}){return ye(n,a),r.unlockCompleted(n,a)},paymentCompleted(a={}){return r.paymentCompleted(n,a)},isUnlocked(){return Fe(n)},markUnlocked(a={}){return ye(n,a),r.unlockCompleted(n,a),r.paymentCompleted(n,a),!0},async unlock(a={}){r.unlockStarted(n);let o=typeof a=="function"?await a(n):a;return ye(n,o||{}),r.unlockCompleted(n,o||{}),r.paymentCompleted(n,o||{}),{unlocked:!0,resource:n,payment:o||{}}},rate(a={},o={}){return r.rateResource(n,a,o)}}}var Ye,D=M(()=>{I();Q();he();Ye=null});function Ot(t,e){return typeof e=="bigint"?e.toString():e}function K(t){return JSON.stringify(t,Ot)}var be=M(()=>{});function ae(t={}){let e=typeof t=="number"?t:t.rating??t.stars??t.ratingValue??t.score,n=Number.parseFloat(e),r=Number.isFinite(n)?Math.max(1,Math.min(50,n<=5?Math.round(n*10):Math.round(n))):null;return{...t,rating:r?r/10:void 0,ratingValue:r||void 0}}function ke(t,e={},n={}){let r=S(t),o=ae(e).ratingValue||0;return["Nibgate content rating",`site:${n.siteDomain||n.domain||r.siteDomain||r.domain||""}`,`content:${r.externalId||r.id}`,`url:${r.url||n.url||""}`,`rating:${o}`,"I confirm this rating is tied to my unlock/payment proof."].join(`
2
+ `)}var ve=M(()=>{I()});var Xe={};fe(Xe,{BatchEvmScheme:()=>Ue,CIRCLE_BATCHING_NAME:()=>ce,CIRCLE_BATCHING_VERSION:()=>Wt,GATEWAY_AUTH_VALIDITY_WINDOW_SECONDS:()=>qt,GATEWAY_MIN_AUTH_VALIDITY_SECONDS:()=>Gt});function Ke(t){let e=t.extra;return e?e.name===ce&&e.version==="1":!1}function jt(t){if(Ke(t))return t.extra?.verifyingContract}function Ft(){let t=new Uint8Array(32);return crypto.getRandomValues(t),"0x"+Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function oe(t){return t&&typeof t=="string"&&t.startsWith("0x")?t.toLowerCase():t}var ce,Wt,Gt,qt,Vt,Ue,Ze=M(()=>{ce="GatewayWalletBatched",Wt="1",Gt=604800,qt=604900,Vt={TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]};Ue=class{constructor(e){this.signer=e,this.scheme=ce,this._beforeHooks=[],this._afterHooks=[],this._failureHooks=[]}onBeforePaymentCreation(e){return this._beforeHooks.push(e),this}onAfterPaymentCreation(e){return this._afterHooks.push(e),this}onPaymentCreationFailure(e){return this._failureHooks.push(e),this}async createPaymentPayload(e,n){let r={paymentRequired:{x402Version:e,accepts:[n]},selectedRequirements:n};for(let a of this._beforeHooks){let o=await a(r);if(o&&o.abort)throw new Error("Payment creation aborted: "+o.reason)}try{if(!Ke(n))throw new Error('BatchEvmScheme can only handle Circle batching options. Expected extra.name="'+ce+'" and extra.version="1"');let a=jt(n);if(!a)throw new Error("Circle batching option missing extra.verifyingContract (GatewayWallet address)");let o=Ft(),l=Math.floor(Date.now()/1e3),s=Math.max(n.maxTimeoutSeconds||0,604900),i={from:oe(this.signer.address),to:oe(n.payTo),value:n.amount,validAfter:String(l-600),validBefore:String(l+s),nonce:o},d=await this.signAuthorization(i,n,a),m={x402Version:e,payload:{authorization:i,signature:d}},f={...r,paymentPayload:m};for(let u of this._afterHooks)try{await u(f)}catch{}return m}catch(a){let o={...r,error:a};for(let l of this._failureHooks){let s=await l(o);if(s&&s.recovered)return{x402Version:s.payload.x402Version,payload:s.payload.payload}}throw a}}async signAuthorization(e,n,r){if(!n.network.startsWith("eip155:"))throw new Error('BatchEvmScheme: unsupported network format "'+n.network+'". Expected "eip155:<chainId>"');let a=parseInt(n.network.split(":")[1],10),o={name:ce,version:"1",chainId:a,verifyingContract:oe(r)},l={from:oe(e.from),to:oe(e.to),value:BigInt(e.value),validAfter:BigInt(e.validAfter),validBefore:BigInt(e.validBefore),nonce:e.nonce},s={domain:o,types:Vt,primaryType:"TransferWithAuthorization",message:l};return this.signer.signTypedData(s)}}});var et={};fe(et,{createCircleGatewayBrowserAdapter:()=>Qt});function Yt(t){let e=typeof t=="string"?t:K(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function Jt(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function Qt(t={}){let e=t.signer||await t.getSigner?.();if(!e?.address||typeof e.signTypedData!="function")throw new Error("Circle Gateway browser adapter requires an EVM signer with address and signTypedData.");let n;try{n=(await import("@circle-fin/x402-batching/client")).BatchEvmScheme}catch{n=(await Promise.resolve().then(()=>(Ze(),Xe))).BatchEvmScheme}let r=t.clientModule?.BatchEvmScheme?new t.clientModule.BatchEvmScheme(e):new n(e),a=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function o(s){if(s&&typeof s=="object")return s;if(!s||typeof s!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse(Jt(s))}function l(s){let i=Array.isArray(s?.accepts)?s.accepts:[],d=i.find(c=>{let m=c.extra||{};return c.network===a&&m.name==="GatewayWalletBatched"&&m.version==="1"&&typeof m.verifyingContract=="string"})||i.find(c=>{let m=c.extra||{};return m.name==="GatewayWalletBatched"&&m.version==="1"&&typeof m.verifyingContract=="string"});if(!d){let c=i.map(f=>f.network).filter(Boolean).join(", ")||"none",m=i.some(f=>{let u=f.extra||{};return u.name==="GatewayWalletBatched"&&u.version==="1"&&typeof u.verifyingContract=="string"});throw new Error(m?`No Circle Gateway batching payment option found for ${a}. Server returned networks: ${c}.`:`The payment challenge is not a Circle Gateway batching challenge. Configure the creator access route with createCircleGatewayServer(...) or createNibgateServer({ paymentMode: 'circle-gateway', network: '${a}' }).`)}return d}return{signer:e,network:a,async pay({paymentRequiredHeader:s,challenge:i}){let d=o(s||i),c=l(d),m=d.x402Version??2,f=await r.createPaymentPayload(m,c),u=Yt({...f,resource:d.resource,accepted:c});return{paymentSignature:u,signature:u,metadata:{paymentProvider:"circle-gateway",network:c.network,payer:e.address,recipient:c.payTo||c.recipient,amount:c.amount,currency:c.asset}}}}}var tt=M(()=>{be()});function en(t=""){return String(t||"").replace(/^0x/i,"").replace(/[^0-9a-fA-F]/g,"").toLowerCase()}function rt(t=""){let e=en(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function Be(t=0){return Number(t||0).toString(16).padStart(64,"0")}function tn(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function nn(t=""){let e=tn(t),n=e.length/2,r=Math.ceil(n/32)*64;return Be(n)+e.padEnd(r,"0")}function rn({contentId:t,ratingValue:e,reviewHash:n,unlockRef:r}){return Zt+rt(t)+Be(e)+rt(n||He)+Be(128)+nn(r||"")}function De(t,e={}){let n=e.contentId||e.contentHash;if(!n)throw new Error("contentId/contentHash is required. Use the Nibgate backend prepare endpoint or pass a known content hash.");return n}function lt(t=""){if(!t)return He;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function an(t,e={}){if(e.contentId||e.contentHash)return{contentId:e.contentId||e.contentHash};let n=e.prepareUrl||e.indexUrl?.replace(/\/index$/,"/prepare");if(!n)throw new Error("contentId/contentHash or prepareUrl is required for onchain rating.");let r=await fetch(n,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,resource:t,url:t.url,path:t.path})}),a=await r.json().catch(()=>({}));if(!r.ok||!a.contentHash)throw new Error(a.error||"Could not prepare Nibgate onchain rating.");return a}async function Se(t,e={}){let n=S(t),r=ae(e.rating??e.stars??e);if(!r.ratingValue)throw new Error("Rating must be between 0.1 and 5 stars.");let a=e.provider||globalThis?.ethereum;if(!a?.request)throw new Error("Connect an EVM wallet to rate this content onchain.");let o=e.contractAddress||e.reputationContract||Le;if(!o)throw new Error("Nibgate reputation contract address is not configured.");let l=await a.request({method:"eth_requestAccounts"}),s=Array.isArray(l)&&l[0]||"";if(!s)throw new Error("No wallet account selected.");let i=await an(n,e),d=i.contentHash||i.contentId||De(n,e),c=e.reviewHash||He,m=String(e.unlockRef||e.paymentId||e.txHash||""),f=rn({contentId:d,ratingValue:r.ratingValue,reviewHash:c,unlockRef:m}),u=await a.request({method:"eth_sendTransaction",params:[{from:s,to:o,data:f}]}),h=B(n,{rating:r.rating,ratingValue:r.ratingValue,walletAddress:s,txHash:u,contentHash:d,reviewHash:c,proofType:"onchain_pending",proof:m,paymentId:e.paymentId,actor:e.actor||"human"});return U("content_rating",h),e.indexUrl&&await fetch(e.indexUrl,{method:"POST",headers:{"content-type":"application/json",...e.indexHeaders||{}},body:JSON.stringify({siteId:e.siteId,token:e.token,txHash:u,resource:n,url:n.url,path:n.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:u,walletAddress:s,contentId:d,ratingValue:r.ratingValue,reviewHash:c}}var Zt,He,at,ot,ct,it,Le,st,ze=M(()=>{ve();I();Q();Zt="0xc62fad09",He=`0x${"0".repeat(64)}`,at="nibgate:content:v1",ot=5042002,ct="Arc Testnet",it="https://rpc.testnet.arc.io",Le="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",st=[{type:"function",name:"rateContent",stateMutability:"nonpayable",inputs:[{name:"contentId",type:"bytes32"},{name:"rating",type:"uint8"},{name:"reviewHash",type:"bytes32"},{name:"unlockRef",type:"string"}],outputs:[]}]});var ut={};fe(ut,{createOnchainRating:()=>se,mountRatingUI:()=>le,rateResource:()=>X});function X(t,e={},n={}){let r=S(t),a=ae(e),o={...n,...a,ratingMessage:n.ratingMessage||e.message||e.ratingMessage||ke(r,a,n),ratingSignature:n.ratingSignature||e.signature||e.ratingSignature||void 0,resource:r};return U("content_rating",o)}function se(t,e={}){let n=P(t,e.gateOptions||{}),r=v(),a=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,o=typeof e.ratingTarget=="string"?r?.document.querySelector(e.ratingTarget):e.ratingTarget,l=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",i=(Array.isArray(e.buttons)?e.buttons:typeof e.buttons=="string"?Array.from(r?.document.querySelectorAll(e.buttons)||[]):e.buttons?[e.buttons]:null)||Array.from(r?.document.querySelectorAll(l)||[]),d=e.source||"nibgate-onchain-rating",c=!1,m=e.payment||null;function f(b){typeof e.onStatus=="function"&&e.onStatus(b),a&&(a.textContent=b||"")}function u(b){c=!!b,i.forEach(k=>{k&&"disabled"in k&&(k.disabled=c)})}function h(b=null){return m=b||null,m}function x(b){return o&&("hidden"in o&&(o.hidden=!b),o.setAttribute("aria-hidden",b?"false":"true")),!!b}function T(b){let k=b?.dataset?.nibgateRatingValue||b?.dataset?.rating||b?.value||b?.textContent,R=Number.parseFloat(String(k||"").replace(/[^\d.]/g,""));return Number.isFinite(R)?R:Number(e.rating||e.stars||0)}async function A(b={}){u(!0);try{let k=Number.parseFloat(b.rating??b.stars??b.value??e.rating??e.stars);if(!Number.isFinite(k))throw new Error("Choose a rating before sending.");let R=b.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():m?.paymentId),E=b.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||R||m?.txHash||m?.transactionHash||"";f(e.pendingMessage||"Send the onchain rating transaction...");let H=await Se(n.resource,{...e,...b,rating:k,paymentId:R,unlockRef:E,source:d});return f(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(H),H}catch(k){let R=k?.message||e.errorMessage||"Rating failed.";throw f(R),typeof e.onError=="function"&&e.onError(k),k}finally{u(!1)}}function p(){return i.forEach(b=>{b?.addEventListener?.("click",()=>A({rating:T(b)}).catch(()=>null))}),e.visible!==void 0&&x(!!e.visible),g}let g={resource:n.resource,rate:A,mount:p,setPayment:h,setVisible:x};return e.autoMount!==!1&&p(),g}function le(t,e={}){let n=P(t,e.gateOptions||{}),r=v();if(!r)return null;let a=typeof e.target=="string"?r.document.querySelector(e.target):e.target;if(!a)return null;let o=[1,2,3,4,5],l=0,s=r.document.createElement("div");s.className="nibgate-rating-ui",s.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let i=o.map(f=>{let u=r.document.createElement("button");return u.type="button",u.dataset.nibgateRatingValue=String(f),u.setAttribute("aria-label",`${f} star${f>1?"s":""}`),u.innerHTML="\u2606",u.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",u.addEventListener("mouseenter",()=>{i.forEach((h,x)=>h.style.color=x<f?"#f5b342":"#ccc")}),u.addEventListener("mouseleave",()=>{i.forEach((h,x)=>h.style.color=x<l?"#f5b342":"#ccc")}),u.addEventListener("click",()=>{l=f,i.forEach((h,x)=>h.style.color=x<f?"#f5b342":"#ccc"),X(n.resource,{rating:f}).catch(()=>{})}),s.appendChild(u),u}),d=r.document.createElement("span");d.style.cssText="font-size:13px;color:#888;margin-left:8px",d.textContent=e.label||"Rate this content",s.appendChild(d),a.appendChild(s);function c(f,u={}){return n.rate({...u,rating:f})}function m(f){l=f,i.forEach((u,h)=>u.style.color=h<f?"#f5b342":"#ccc")}return{resource:n.resource,container:s,setRating:m,rate:c}}var Ee=M(()=>{I();ve();Q();W();ze();D()});var sn={};fe(sn,{ACCESS_MODES:()=>Y,CONTENT_TYPES:()=>F,NIBGATE_CONTENT_HASH_NAMESPACE:()=>at,NIBGATE_CONTENT_SETTING_FIELDS:()=>yt,NIBGATE_REPUTATION_ABI:()=>st,NIBGATE_REPUTATION_CHAIN_ID:()=>ot,NIBGATE_REPUTATION_CHAIN_NAME:()=>ct,NIBGATE_REPUTATION_CONTRACT:()=>Le,NIBGATE_REPUTATION_RPC_URL:()=>it,PAYMENT_RAILS:()=>ee,UNLOCK_MODES:()=>te,checkResourceAccess:()=>N,contentRatingHash:()=>De,createCircleGatewayBrowserAdapter:()=>ie,createEvmGatewayUnlock:()=>q,createGate:()=>P,createHostedUnlock:()=>nt,createNibgate:()=>Oe,createNibgateContentSettings:()=>ht,createOnchainRating:()=>se,createTransferCheckout:()=>ue,createWalletCheckout:()=>xe,mountRatingUI:()=>le,nibgate:()=>$e,normalizeAccessPolicy:()=>$,normalizeContentType:()=>O,normalizePaymentRail:()=>j,normalizeResource:()=>S,normalizeUnlockPolicy:()=>J,payAndUnlockResource:()=>re,payWithPaymentSignature:()=>ne,payWithTransfer:()=>Ce,rateContentOnchain:()=>Se,rateResource:()=>X,renderDefaultGatewayWalletUI:()=>gt,renderDefaultRatingUI:()=>pt,renderDefaultUnlockUI:()=>mt,reviewTextHash:()=>lt,settingsToAccessPolicy:()=>bt,settingsToUnlockPolicy:()=>wt,setupResourcePage:()=>we,trackResourcePage:()=>G,validateResourceMetadata:()=>pe});D();Q();he();be();D();I();W();D();function G(t,e={}){let n=P(t,e.gateOptions||{}),r=pe(n.resource,e.validation||{});return(r.warnings.length||r.errors.length)&&e.warn!==!1&&v()?.console?.warn&&v().console.warn("Nibgate content metadata needs attention",r),n.content({source:e.source,metadataQuality:{score:r.score,warnings:r.warnings,errors:r.errors},...e.content||{}}),n.view({source:e.source,path:e.path||v()?.location?.pathname||n.resource.path,referrer:e.referrer??v()?.document?.referrer??"",...e.view||{}}),n}function we(t,e={}){let n=G(t,e),r=v();if(!r)return n;let a=typeof e.button=="string"?r.document.querySelector(e.button):e.button,o=typeof e.status=="string"?r.document.querySelector(e.status):e.status,l=e.onStatus||(s=>{o&&(o.textContent=s||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await N(t,{...e,onStatus:l})}finally{a.disabled=!1}}),n}async function N(t,e={}){let n=P(t,e.gateOptions||{}),r=e.accessPath||n.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.checkingMessage||"Checking access route..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"nibgate-access-route"});let o=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json",...Me(n.resource)?{"x-nibgate-payment-proof":Me(n.resource)}:{},...e.headers||{}},body:e.body}),l=await o.json().catch(()=>({}));if(o.status===402){if(n.track("payment_challenge_returned",{source:e.source,challenge:l,resource:n.resource}),a(e.challengeMessage||"Payment challenge returned. Continue with checkout."),typeof e.createPaymentSignature=="function"||typeof e.checkout=="function")return ne(t,{...e,challenge:l,paymentRequiredHeader:o.headers.get("PAYMENT-REQUIRED")||o.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let i=await re(t,e);return i.ok&&e.retryAfterPay!==!1?N(t,{...e,autoPay:!1}):i}return{ok:!1,status:o.status,challenge:l,resource:n.resource,response:o}}if(!o.ok)return a(l.error||e.errorMessage||"Access check failed"),{ok:!1,status:o.status,error:l.error||"Access check failed",payload:l,resource:n.resource,response:o};let s=e.payment||l.payment||null;return s&&(n.unlockCompleted(s),n.paymentCompleted(s)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:o.status,payload:l,payment:s,resource:n.resource,response:o}}async function ne(t,e={}){let n=P(t,e.gateOptions||{}),r=e.accessPath||n.resource.accessPath||"/api/nibgate/access",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Waiting for wallet payment approval..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"wallet-gateway"});let o=e.paymentSignature||"",l=e.memo||"",s=e.payment||{};if(!o){let f=e.paymentRequiredHeader||"",u=e.challenge||null,x=await(e.createPaymentSignature||e.checkout)({resource:n.resource,challenge:u,paymentRequiredHeader:f,accessPath:r});o=x?.paymentSignature||x?.signature||x?.payment||"",l=x?.memo||x?.paymentMemo||"",s=x?.metadata||x?.paymentMetadata||x||{}}if(!o){let f="Wallet did not return a payment signature.";return n.track("payment_failed",{source:e.source,error:f}),a(f),{ok:!1,status:400,error:f,resource:n.resource}}let i=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":o,...l?{"payment-memo":l}:{},...e.headers||{}}}),d=await i.text(),c={};try{c=d?JSON.parse(d):{}}catch{c={error:d||"Payment verification failed"}}if(!i.ok){let f=c.detail||c.reason||c.invalidReason||c.error||d||"Payment verification failed",u=typeof f=="string"?f:K(f);return n.track("payment_failed",{source:e.source,status:i.status,error:u,...s}),a(e.paymentErrorMessage||u),{ok:!1,status:i.status,error:u,payload:c,resource:n.resource,response:i}}let m=c.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:o,memo:l,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC",...s};return Ne(n.resource,c.unlockProof),n.markUnlocked(m),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:i.status,payload:c,payment:m,resource:n.resource,response:i}}async function re(t,e={}){let n=P(t,e.gateOptions||{}),r=e.payPath||n.resource.payPath||"/api/nibgate/pay",a=typeof e.onStatus=="function"?e.onStatus:()=>{};a(e.paymentMessage||"Starting payment..."),n.unlockStarted({source:e.source,paymentProvider:e.paymentProvider||"circle-gateway"});let o=await fetch(r,{method:e.payMethod||"POST",headers:{accept:"application/json","content-type":"application/json",...e.payHeaders||{}},body:JSON.stringify({resource:n.resource,...e.payPayload||{}})}),l=await o.json().catch(()=>({}));if(!o.ok||!l.ok)return n.track("payment_failed",{source:e.source,status:o.status,error:l.error||"Payment failed",detail:l.detail||""}),a(l.detail||l.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:o.status,payload:l,resource:n.resource,response:o};let s=l.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:l.paymentId||`nibgate_payment_${Date.now()}`,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC"};return Ne(n.resource,l.unlockProof),n.markUnlocked(s),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:l,payment:s,resource:n.resource,response:o}}I();W();function $t(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&(r.textContent=e||"")}function Qe(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&"disabled"in r&&(r.disabled=!!e)}function xe(t,e={}){let n=S(t),r=e.accessPath||n.accessPath||"/api/nibgate/access",a=e.button||null,o=e.status||null,l=typeof e.onStatus=="function"?e.onStatus:c=>$t(o,c),s=e.checkout||e.createPaymentSignature||e.pay;if(typeof s!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function i(c={}){Qe(a,!0);try{return await N(n,{...e,...c,accessPath:r,createPaymentSignature:s,onStatus:l})}finally{Qe(a,!1)}}function d(){let c=v();if(!c||!a)return{unlock:i};let m=typeof a=="string"?c.document.querySelector(a):a;return m&&m.addEventListener("click",()=>i().catch(f=>l(f.message||"Checkout failed."))),{unlock:i}}return{resource:n,unlock:i,mount:d}}I();ve();Q();D();D();W();he();be();D();async function ie(t={}){return(await Promise.resolve().then(()=>(tt(),et))).createCircleGatewayBrowserAdapter(t)}var Kt="https://api.nibgate.xyz/api/hub/pay";function Xt(t,e){return e.hosted||e.accessPath==="hosted"?Kt:e.accessPath||t.accessPath||"/api/nibgate/access"}function q(t,e={}){let n=P(t,e.gateOptions||{}),r=v(),a=Xt(n.resource,e),o=e.source||"nibgate-evm-gateway",l=e.network||"eip155:5042002",s=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,i=typeof e.connectButton=="string"?r?.document.querySelector(e.connectButton):e.connectButton,d=typeof e.disconnectButton=="string"?r?.document.querySelector(e.disconnectButton):e.disconnectButton,c=typeof e.unlockButton=="string"?r?.document.querySelector(e.unlockButton):e.unlockButton,m=typeof e.clearButton=="string"?r?.document.querySelector(e.clearButton):e.clearButton,f=typeof e.walletLabel=="string"?r?.document.querySelector(e.walletLabel):e.walletLabel,u=typeof e.unlockedTarget=="string"?r?.document.querySelector(e.unlockedTarget):e.unlockedTarget,h="",x=!1;function T(w){typeof e.onStatus=="function"&&e.onStatus(w),s&&(s.textContent=w||"")}function A(w){return w?`${w.slice(0,6)}...${w.slice(-4)}`:""}function p(){return r?.ethereum||e.provider||null}function g(w){x=!!w,[i,d,c,m].forEach(C=>{C&&"disabled"in C&&(C.disabled=x||C===i&&!p()||C===d&&!h)})}function b(){let w=!!p();f&&(f.textContent=h?A(h):w?"Ready to connect":"No wallet detected"),i&&(i.textContent=h?"Connected":"Connect wallet"),d&&(d.textContent="Disconnect"),i&&"disabled"in i&&(i.disabled=x||!w),d&&"disabled"in d&&(d.disabled=x||!h)}function k(w,C={}){c&&(c.textContent=w?"Unlocked":`Unlock for ${n.resource.price} ${n.resource.currency||"USDC"}`),u&&("hidden"in u&&(u.hidden=!w),u.setAttribute("aria-hidden",w?"false":"true")),w&&n.markUnlocked(C)}async function R(){g(!0),T("Opening wallet connection...");try{let w=p();if(!w)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let C=await w.request({method:"eth_requestAccounts"});if(h=Array.isArray(C)&&C[0]||"",!h)throw new Error("No wallet account selected.");return b(),T("Wallet connected. You can unlock now."),h}finally{g(!1)}}async function E(){g(!0);try{let w=p();if(w?.request&&h)try{await w.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return h="",b(),T(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{g(!1)}}async function H(w){let C=p();if(!C)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");return h||await R(),(await ie({network:l,signer:{address:h,signTypedData:xt=>C.request({method:"eth_signTypedData_v4",params:[h,K(xt)]})},clientModule:e.circleClientModule})).pay(w)}async function L(){g(!0);try{h||await R(),g(!0),T("Requesting Gateway unlock...");let w=await N(n.resource,{accessPath:a,source:o,paymentProvider:e.paymentProvider||"circle-gateway-browser",challengeMessage:e.challengeMessage||"Gateway payment required. Connect your wallet to continue...",paymentMessage:e.paymentMessage||"Approve the Gateway payment proof in your wallet...",successMessage:e.successMessage||`Unlocked ${n.resource.title||"content"}.`,method:e.method,headers:e.headers,body:e.body,checkout:H,onStatus:T});return w.ok&&(k(!0,w.payment||{}),typeof e.onUnlock=="function"&&e.onUnlock(w)),w}catch(w){let C=w?.message||"Unlock failed. Please try again.";return T(C),{ok:!1,status:0,error:C,resource:n.resource}}finally{g(!1),b()}}function _(){je(n.resource),k(!1),T("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function Z(){let w=p();try{let C=w?await w.request({method:"eth_accounts"}):[];h=Array.isArray(C)&&C[0]||""}catch{}b(),k(!1)}function Ge(){return i?.addEventListener?.("click",()=>R().catch(w=>T(w?.message||"Could not connect wallet."))),d?.addEventListener?.("click",()=>E().catch(w=>T(w?.message||"Could not disconnect wallet."))),c?.addEventListener?.("click",()=>L()),m?.addEventListener?.("click",_),Z(),G(n.resource,{source:o}),qe}let qe={resource:n.resource,connect:R,disconnect:E,unlock:L,clear:_,hydrate:Z,mount:Ge,getWalletAddress:()=>h};return e.autoMount!==!1&&Ge(),qe}function nt(t,e={}){return q(t,{...e,hosted:!0,noWalletMessage:e.noWalletMessage||"Install MetaMask or another EVM wallet to unlock premium content."})}Ee();I();function ue(t,e={}){let n=S({...t,paymentRail:"transfer"}),r=e.sendTransfer||e.transfer;if(typeof r!="function")throw new Error("createTransferCheckout requires sendTransfer({ resource, recipient, amount, currency, network }) and a server verifyTransfer hook.");return{resource:n,async pay(a={}){let o=n.recipient||n.payTo,l=String(n.price||n.amount||"0"),s=n.currency||"USDC",i=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",d=await r({resource:n,recipient:o,amount:l,currency:s,network:i,challenge:a.challenge}),c=d?.txHash||d?.hash||d?.transactionHash||d?.paymentId||"";if(!c)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:c,signature:c,memo:d.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:c,txHash:c,recipient:o,amount:Number(l),currency:s,network:i,...d.metadata||d}}}}}async function Ce(t,e={}){let r=await(e.checkout||ue(t,e).pay)({resource:S(t),challenge:e.challenge||null}),a=r?.metadata?.txHash||r?.txHash||r?.paymentSignature||r?.signature||"";if(!a)throw new Error("Transfer checkout did not return a txHash.");return N(t,{...e,headers:{...e.headers||{},"x-nibgate-transfer-tx":a},payment:r.metadata||{paymentProvider:"direct-transfer",txHash:a,paymentId:a}})}function Oe(t={}){let e=t.resource?S(t.resource):null;function n(r={}){return S({...e||{},...typeof r=="string"?{id:r}:r})}return{content(r,a={}){return U("content_registered",B(n(r),a))},registerContent(r,a={}){return U("content_registered",B(n(r),a))},view(r,a={}){return U("resource_view",B(n(r),a))},track(r,a={}){return U(r||"custom",a)},unlockStarted(r,a={}){return U("unlock_started",B(n(r),a))},unlockCompleted(r,a={}){return U("unlock_completed",B(n(r),a))},paymentCompleted(r,a={}){return U("payment_completed",B(n(r),a))},rateResource(r,a={},o={}){return X(n(r),a,o)},ratingMessage(r,a={},o={}){return ke(n(r),a,o)},gate(r,a={}){return P(n(r),{...a,client:this})},trackResourcePage(r,a={}){return G(n(r),a)},checkResourceAccess(r,a={}){return N(n(r),a)},payWithPaymentSignature(r,a={}){return ne(n(r),a)},createWalletCheckout(r,a={}){return xe(n(r),a)},createCircleGatewayBrowserAdapter(r={}){return ie(r)},createTransferCheckout(r,a={}){return ue(n(r),a)},payWithTransfer(r,a={}){return Ce(n(r),a)},createEvmGatewayUnlock(r,a={}){return q(n(r),a)},createOnchainRating(r,a={}){return se(n(r),a)},mountRatingUI(r,a={}){return le(n(r),a)},payAndUnlockResource(r,a={}){return re(n(r),a)},setupResourcePage(r,a={}){return we(n(r),a)},normalizeResource:n,normalizeContentType:O,flush:ge}}var $e=Oe();Je($e);Ee();ze();var dt="nibgate-ui-styles",y={bg:"var(--bg, #f4f4f0)",fg:"var(--fg, #0a0a0a)",muted:"var(--muted, #6b6862)",border:"var(--border, #cecdc3)",accent:"var(--accent, #7c9a6d)",accentSoft:"var(--accent-soft, #d8e8d3)",cardHover:"var(--card-hover, #e0ddd3)"},on=t=>Object.entries(t).map(([e,n])=>`${e.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())}:${n}`).join(";");function ft(t,e,n){let r=document.createElement(t);for(let[a,o]of Object.entries(e||{}))a==="dataset"?Object.assign(r.dataset,o):a.startsWith("on")?r.addEventListener(a.slice(2).toLowerCase(),o):a==="style"&&typeof o=="object"?r.style.cssText=on(o):a==="cls"?r.className=o:r.setAttribute(a,String(o));return typeof n=="string"?r.innerHTML=n:n&&(Array.isArray(n)?n:[n]).forEach(a=>{a!=null&&r.appendChild(typeof a=="string"?document.createTextNode(a):a)}),r}function We(){if(document.getElementById(dt))return;let t=ft("style",{id:dt},`
3
3
  @keyframes nfade { from { opacity:0;transform:translateY(6px) } to { opacity:1;transform:translateY(0) } }
4
4
  @keyframes nscale { from { opacity:0;transform:scale(0.96) } to { opacity:1;transform:scale(1) } }
5
5
  @keyframes nshimmer { 0% { transform:translateX(-100%) } 100% { transform:translateX(100%) } }
6
6
 
7
- .nui { font-family:var(--font-content,'Kumbh Sans','ABC Favorit',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif);color:${g.fg};line-height:1.5;-webkit-font-smoothing:antialiased;font-size:19px }
7
+ .nui { font-family:var(--font-content,'Kumbh Sans','ABC Favorit',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif);color:${y.fg};line-height:1.5;-webkit-font-smoothing:antialiased;font-size:19px }
8
8
  .nui *,.nui *::before,.nui *::after { box-sizing:border-box }
9
9
  .nui-btn { display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:600;padding:14px 28px;border-radius:12px;cursor:pointer;transition:all.12s;font-family:inherit;line-height:1;border:none }
10
10
  .nui-btn:disabled { opacity:0.35;cursor:default;pointer-events:none }
11
- .nui-btn:focus-visible { outline:2px solid ${g.accent};outline-offset:2px }
12
- .nui-btn-primary { background:${g.accent};color:${g.bg} }
11
+ .nui-btn:focus-visible { outline:2px solid ${y.accent};outline-offset:2px }
12
+ .nui-btn-primary { background:${y.accent};color:${y.bg} }
13
13
  .nui-btn-primary:hover:not(:disabled) { opacity:0.9 }
14
14
  .nui-btn-primary:active:not(:disabled) { transform:scale(.98) }
15
- .nui-btn-outline { background:transparent;border:1px solid ${g.border};color:${g.fg} }
16
- .nui-btn-outline:hover:not(:disabled) { border-color:${g.accent};color:${g.accent} }
17
- .nui-input { padding:14px 16px;font-size:18px;border-radius:12px;border:1px solid ${g.border};background:transparent;color:${g.fg};width:100%;font-family:inherit;outline:none;transition:border-color.12s }
18
- .nui-input:focus { border-color:${g.accent} }
19
- .nui-input::placeholder { color:${g.muted} }
20
- .nui-label { font-size:17px;font-weight:600;color:${g.muted};margin-bottom:8px;display:block }
15
+ .nui-btn-outline { background:transparent;border:1px solid ${y.border};color:${y.fg} }
16
+ .nui-btn-outline:hover:not(:disabled) { border-color:${y.accent};color:${y.accent} }
17
+ .nui-input { padding:14px 16px;font-size:18px;border-radius:12px;border:1px solid ${y.border};background:transparent;color:${y.fg};width:100%;font-family:inherit;outline:none;transition:border-color.12s }
18
+ .nui-input:focus { border-color:${y.accent} }
19
+ .nui-input::placeholder { color:${y.muted} }
20
+ .nui-label { font-size:17px;font-weight:600;color:${y.muted};margin-bottom:8px;display:block }
21
21
  .nui-mono { font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace }
22
- .nui-stat { font-size:18px;color:${g.muted};line-height:1.4;min-height:28px }
22
+ .nui-stat { font-size:18px;color:${y.muted};line-height:1.4;min-height:28px }
23
23
  .nui-stat-err { color:#dc2626 }
24
24
  .nui-stat-ok { color:#16a34a }
25
- `);document.head.appendChild(t)}function V(t,e,n){return lt(t,e,n)}function Xt(t,e){t&&(t.textContent=e||"")}function Ce(t){let e=document.createElement("div");return e.textContent=String(t??""),e.innerHTML}function dt(t,e,n={}){We();let r=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out"}}),a='<svg width="24" height="24" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle"><path d="M6 16v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-8"/><path d="M10 16v-5a6 6 0 0 1 12 0v5"/><circle cx="16" cy="21" r="2"/></svg>';r.innerHTML=`
25
+ `);document.head.appendChild(t)}function V(t,e,n){return ft(t,e,n)}function cn(t,e){t&&(t.textContent=e||"")}function Te(t){let e=document.createElement("div");return e.textContent=String(t??""),e.innerHTML}function mt(t,e,n={}){We();let r=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out"}}),a='<svg width="24" height="24" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle"><path d="M6 16v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-8"/><path d="M10 16v-5a6 6 0 0 1 12 0v5"/><circle cx="16" cy="21" r="2"/></svg>';r.innerHTML=`
26
26
  <div style="display:flex;flex-direction:column;align-items:center;text-align:center;max-width:580px;margin:0 auto;padding:40px 52px">
27
27
  <div id="nibgate-lottie" style="width:165px;height:168px;margin-bottom:24px"></div>
28
- <div style="font-size:50px;font-weight:700;letter-spacing:-.03em;color:${g.fg};margin-bottom:12px">${Ce(e.price)} USDC</div>
29
- <div style="font-size:21px;color:${g.muted};margin-bottom:48px">Pay to unlock this content</div>
30
- <div data-nibgate-wallet-label class="nui-mono" style="font-size:18px;color:${g.muted};margin-bottom:40px;min-height:28px">Connect wallet</div>
28
+ <div style="font-size:50px;font-weight:700;letter-spacing:-.03em;color:${y.fg};margin-bottom:12px">${Te(e.price)} USDC</div>
29
+ <div style="font-size:21px;color:${y.muted};margin-bottom:48px">Pay to unlock this content</div>
30
+ <div data-nibgate-wallet-label class="nui-mono" style="font-size:18px;color:${y.muted};margin-bottom:40px;min-height:28px">Connect wallet</div>
31
31
  <div data-nibgate-unlock-wrap style="width:100%;position:relative;border-radius:12px;overflow:hidden;cursor:pointer">
32
32
  <div data-nibgate-unlock-progress style="position:absolute;inset:0;width:0%;background:linear-gradient(90deg,rgba(255,255,255,0.1),rgba(255,255,255,0.45));border-radius:12px;transition:width .05s linear;z-index:2"></div>
33
33
  <div data-nibgate-shimmer style="position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.12),transparent);border-radius:12px;transform:translateX(-100%);z-index:3;pointer-events:none"></div>
34
- <button type="button" data-nibgate-unlock disabled class="nui-btn nui-btn-primary" style="width:100%;padding:24px 32px;font-size:24px;position:relative;z-index:4;background:${g.accent};transition:transform .1s,opacity .15s;display:flex">${a}Hold to pay ${Ce(e.price)} USDC</button></div>
34
+ <button type="button" data-nibgate-unlock disabled class="nui-btn nui-btn-primary" style="width:100%;padding:24px 32px;font-size:24px;position:relative;z-index:4;background:${y.accent};transition:transform .1s,opacity .15s;display:flex">${a}Hold to pay ${Te(e.price)} USDC</button></div>
35
35
  <div class="nui-stat" style="text-align:center;margin-top:16px" data-nibgate-status></div>
36
36
  </div>
37
- <div data-nibgate-premium hidden style="margin-top:32px;border-top:1px solid ${g.border};padding-top:32px"></div>
38
- `,(typeof t=="string"?document.querySelector(t):t)?.appendChild(r),(function(){if(!document.getElementById("nibgate-lottie"))return;function H(_){var Z=document.getElementById("nibgate-lottie");Z&&window.lottie&&window.lottie.loadAnimation({container:Z,animationData:_,loop:!0,autoplay:!0})}if(window.lottie){window._lottieData?H(window._lottieData):fetch("/nibgate-unlock-key.json?t=1").then(function(_){if(!_.ok)throw new Error;return _.json()}).then(function(_){window._lottieData=_,H(_)}).catch(function(){});return}if(!window._lottieLoading){window._lottieLoading=!0;var L=document.createElement("script");L.src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js",L.onload=function(){fetch("/nibgate-unlock-key.json?t=1").then(function(_){if(!_.ok)throw new Error;return _.json()}).then(function(_){window._lottieData=_,H(_)}).catch(function(){})},document.head.appendChild(L)}})();let o=r.querySelector("[data-nibgate-status]"),c=r.querySelector("[data-nibgate-wallet-label]"),u=r.querySelector("[data-nibgate-unlock-wrap]"),i=r.querySelector("[data-nibgate-unlock-progress]"),l=r.querySelector("[data-nibgate-shimmer]"),s=r.querySelector("[data-nibgate-unlock]"),y=1500,d=null,f=!1,h=!1,x=q(e,{...n,connectButton:null,unlockButton:null,walletLabel:null,status:"[data-nibgate-status]",unlockedTarget:"[data-nibgate-premium]",onStatus:E=>Xt(o,E)});function T(E){return E?E.slice(0,6)+"..."+E.slice(-4):""}function A(){let E=x.getWalletAddress();E?(c.innerHTML=T(E)+' <span data-nibgate-disconnect style="cursor:pointer">\xB7 Disconnect</span>',s.disabled=!1,s.style.cursor="pointer"):(c.textContent="Connect wallet",s.disabled=!0,s.style.cursor="default",s.innerHTML=a+"Hold to pay "+Ce(e.price)+" USDC")}function m(E){s.innerHTML=a+E}function p(){f=!1,h=!1,d=null,s.style.transform="scale(1)",i.style.width="0%",l.style.animation="none",l.style.transform="translateX(-100%)",s.disabled||m("Hold to pay "+Ce(e.price)+" USDC")}function b(E){if(s.disabled||f)return;E.preventDefault(),f=!0,h=!1,s.style.transform="scale(.97)",i.style.transition="none",i.style.width="0%",l.style.animation="nshimmer 1s ease-in-out infinite",l.style.transform="none",m("Hold\u2026"),requestAnimationFrame(()=>{i.style.transition="width "+y+"ms linear",i.style.width="100%"});let H=setTimeout(()=>{f&&!h&&m("Keep holding\u2026")},y*.4),L=setTimeout(()=>{f&&!h&&m("Almost there\u2026")},y*.75);d=setTimeout(()=>{h=!0,f=!1,clearTimeout(H),clearTimeout(L),s.style.transform="scale(1)",l.style.animation="none",i.style.transition="width .05s linear",m("Processing\u2026"),s.disabled=!0,setTimeout(()=>x.unlock().then(A).catch(A),300)},y)}function k(){!f||h||(clearTimeout(d),p())}c.addEventListener("click",E=>{E.target.dataset.nibgateDisconnect!==void 0?x.disconnect().then(A):x.getWalletAddress()||x.connect().then(A).catch(()=>A())}),u.addEventListener("mousedown",b),u.addEventListener("touchstart",b,{passive:!1}),document.addEventListener("mouseup",k),document.addEventListener("touchend",k),u.addEventListener("mouseleave",k),setTimeout(A,200);let R=()=>{document.removeEventListener("mouseup",k),document.removeEventListener("touchend",k)};return r.addEventListener("remove",R),{...x,element:r,destroy:()=>{R(),r.remove()}}}function ft(t,e,n={}){We();let r=0,a=!1,o=null,c=null,u=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out",textAlign:"center",padding:"28px 0"}}),i=V("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"4px"}}),l=[];for(let m=1;m<=5;m++){let p=V("button",{type:"button","aria-label":`${m} star${m>1?"s":""}`,"data-star":m,style:{background:"none",border:"none",cursor:"pointer",padding:"4px",fontSize:"31px",lineHeight:"1",color:g.border,transition:"color .12s, transform .12s",borderRadius:"4px",fontFamily:"inherit"}},"\u2606");l.push(p),i.appendChild(p)}let s=V("span",{style:{fontSize:"17px",color:g.muted,marginLeft:"12px"}});s.textContent="No ratings yet",i.appendChild(s);let y=V("div",{style:{fontSize:"17px",color:g.muted,marginTop:"8px",minHeight:"1.4em"}});y.textContent="Tap stars to rate",u.append(i,y),(typeof t=="string"?document.querySelector(t):t)?.appendChild(u);function d(){c&&(clearTimeout(c),c=null),y.textContent=r>0?"":"Tap stars to rate",y.style.color=g.muted}function f(m,p,b){y.textContent=m||"",y.style.color=p||"",b&&(c=setTimeout(d,b))}function h(m){l.forEach((p,b)=>{let k=b<m;p.style.color=k?g.accent:g.border,p.textContent=k?"\u2605":"\u2606",p.style.transform=k?"scale(1.08)":"scale(1)"})}function x(m){f(["","Poor","Below average","Average","Good","Excellent"][m])}async function T(m){if(!(a||!o)){a=!0,l.forEach(p=>{p.disabled=!0,p.style.cursor="default"}),r=m,h(m),f("Submitting\u2026");try{await o.rate({rating:m}),h(m),f("You rated "+m+" \u2605".repeat(m),g.accent,3e3),A()}catch(p){f(p?.message||"Could not save rating. Try again.","#dc2626"),h(r)}finally{a=!1,l.forEach(p=>{p.disabled=!1,p.style.cursor="pointer"})}}}function A(){let m=n.statsUrl||(e.id?`${n.apiBase||"/api"}/rating/${e.id}`:null);m&&fetch(m).then(p=>p.json()).then(p=>{p.count>0?s.textContent=`${p.average.toFixed(1)} \u2014 ${p.count} rating${p.count!==1?"s":""}`:s.textContent="No ratings yet"}).catch(()=>{})}return l.forEach(m=>{let p=parseInt(m.dataset.star);m.addEventListener("mouseenter",()=>{a||(h(p),x(p))}),m.addEventListener("mouseleave",()=>{a||(h(r),d())}),m.addEventListener("click",()=>T(p)),m.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),T(p))})}),Promise.resolve().then(()=>(Se(),st)).then(m=>{o=m.createOnchainRating(e,{autoMount:!1,contentId:n.contentId||"0x"+(e.id||"").replace(/-/g,""),onRated:p=>{f("Rating saved",g.accent,3e3),A(),typeof n.onRated=="function"&&n.onRated(p)},onError:p=>{f(p?.message||"Could not save rating. Try again.","#dc2626"),typeof n.onError=="function"&&n.onError(p)}}),A()}).catch(()=>{f("Could not load rating","#dc2626")}),{element:u,destroy:()=>u.remove(),refresh:A,setRating:m=>{r=m,h(m)}}}function mt(t,e={}){We();let n="deposit",r=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out",border:"1px solid "+g.border,borderRadius:"16px",padding:"28px"}});r.innerHTML=`
37
+ <div data-nibgate-premium hidden style="margin-top:32px;border-top:1px solid ${y.border};padding-top:32px"></div>
38
+ `,(typeof t=="string"?document.querySelector(t):t)?.appendChild(r),(function(){if(!document.getElementById("nibgate-lottie"))return;function H(_){var Z=document.getElementById("nibgate-lottie");Z&&window.lottie&&window.lottie.loadAnimation({container:Z,animationData:_,loop:!0,autoplay:!0})}if(window.lottie){window._lottieData?H(window._lottieData):fetch("/nibgate-unlock-key.json?t=1").then(function(_){if(!_.ok)throw new Error;return _.json()}).then(function(_){window._lottieData=_,H(_)}).catch(function(){});return}if(!window._lottieLoading){window._lottieLoading=!0;var L=document.createElement("script");L.src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js",L.onload=function(){fetch("/nibgate-unlock-key.json?t=1").then(function(_){if(!_.ok)throw new Error;return _.json()}).then(function(_){window._lottieData=_,H(_)}).catch(function(){})},document.head.appendChild(L)}})();let o=r.querySelector("[data-nibgate-status]"),l=r.querySelector("[data-nibgate-wallet-label]"),s=r.querySelector("[data-nibgate-unlock-wrap]"),i=r.querySelector("[data-nibgate-unlock-progress]"),d=r.querySelector("[data-nibgate-shimmer]"),c=r.querySelector("[data-nibgate-unlock]"),m=1500,f=null,u=!1,h=!1,x=q(e,{...n,connectButton:null,unlockButton:null,walletLabel:null,status:"[data-nibgate-status]",unlockedTarget:"[data-nibgate-premium]",onStatus:E=>cn(o,E)});function T(E){return E?E.slice(0,6)+"..."+E.slice(-4):""}function A(){let E=x.getWalletAddress();E?(l.innerHTML=T(E)+' <span data-nibgate-disconnect style="cursor:pointer">\xB7 Disconnect</span>',c.disabled=!1,c.style.cursor="pointer"):(l.textContent="Connect wallet",c.disabled=!0,c.style.cursor="default",c.innerHTML=a+"Hold to pay "+Te(e.price)+" USDC")}function p(E){c.innerHTML=a+E}function g(){u=!1,h=!1,f=null,c.style.transform="scale(1)",i.style.width="0%",d.style.animation="none",d.style.transform="translateX(-100%)",c.disabled||p("Hold to pay "+Te(e.price)+" USDC")}function b(E){if(c.disabled||u)return;E.preventDefault(),u=!0,h=!1,c.style.transform="scale(.97)",i.style.transition="none",i.style.width="0%",d.style.animation="nshimmer 1s ease-in-out infinite",d.style.transform="none",p("Hold\u2026"),requestAnimationFrame(()=>{i.style.transition="width "+m+"ms linear",i.style.width="100%"});let H=setTimeout(()=>{u&&!h&&p("Keep holding\u2026")},m*.4),L=setTimeout(()=>{u&&!h&&p("Almost there\u2026")},m*.75);f=setTimeout(()=>{h=!0,u=!1,clearTimeout(H),clearTimeout(L),c.style.transform="scale(1)",d.style.animation="none",i.style.transition="width .05s linear",p("Processing\u2026"),c.disabled=!0,setTimeout(()=>x.unlock().then(A).catch(A),300)},m)}function k(){!u||h||(clearTimeout(f),g())}l.addEventListener("click",E=>{E.target.dataset.nibgateDisconnect!==void 0?x.disconnect().then(A):x.getWalletAddress()||x.connect().then(A).catch(()=>A())}),s.addEventListener("mousedown",b),s.addEventListener("touchstart",b,{passive:!1}),document.addEventListener("mouseup",k),document.addEventListener("touchend",k),s.addEventListener("mouseleave",k),setTimeout(A,200);let R=()=>{document.removeEventListener("mouseup",k),document.removeEventListener("touchend",k)};return r.addEventListener("remove",R),{...x,element:r,destroy:()=>{R(),r.remove()}}}function pt(t,e,n={}){We();let r=0,a=!1,o=null,l=null,s=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out",textAlign:"center",padding:"28px 0"}}),i=V("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"4px"}}),d=[];for(let p=1;p<=5;p++){let g=V("button",{type:"button","aria-label":`${p} star${p>1?"s":""}`,"data-star":p,style:{background:"none",border:"none",cursor:"pointer",padding:"4px",fontSize:"31px",lineHeight:"1",color:y.border,transition:"color .12s, transform .12s",borderRadius:"4px",fontFamily:"inherit"}},"\u2606");d.push(g),i.appendChild(g)}let c=V("span",{style:{fontSize:"17px",color:y.muted,marginLeft:"12px"}});c.textContent="No ratings yet",i.appendChild(c);let m=V("div",{style:{fontSize:"17px",color:y.muted,marginTop:"8px",minHeight:"1.4em"}});m.textContent="Tap stars to rate",s.append(i,m),(typeof t=="string"?document.querySelector(t):t)?.appendChild(s);function f(){l&&(clearTimeout(l),l=null),m.textContent=r>0?"":"Tap stars to rate",m.style.color=y.muted}function u(p,g,b){m.textContent=p||"",m.style.color=g||"",b&&(l=setTimeout(f,b))}function h(p){d.forEach((g,b)=>{let k=b<p;g.style.color=k?y.accent:y.border,g.textContent=k?"\u2605":"\u2606",g.style.transform=k?"scale(1.08)":"scale(1)"})}function x(p){u(["","Poor","Below average","Average","Good","Excellent"][p])}async function T(p){if(!(a||!o)){a=!0,d.forEach(g=>{g.disabled=!0,g.style.cursor="default"}),r=p,h(p),u("Submitting\u2026");try{await o.rate({rating:p}),h(p),u("You rated "+p+" \u2605".repeat(p),y.accent,3e3),A()}catch(g){u(g?.message||"Could not save rating. Try again.","#dc2626"),h(r)}finally{a=!1,d.forEach(g=>{g.disabled=!1,g.style.cursor="pointer"})}}}function A(){let p=n.statsUrl||(e.id?`${n.apiBase||"/api"}/rating/${e.id}`:null);p&&fetch(p).then(g=>g.json()).then(g=>{g.count>0?c.textContent=`${g.average.toFixed(1)} \u2014 ${g.count} rating${g.count!==1?"s":""}`:c.textContent="No ratings yet"}).catch(()=>{})}return d.forEach(p=>{let g=parseInt(p.dataset.star);p.addEventListener("mouseenter",()=>{a||(h(g),x(g))}),p.addEventListener("mouseleave",()=>{a||(h(r),f())}),p.addEventListener("click",()=>T(g)),p.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),T(g))})}),Promise.resolve().then(()=>(Ee(),ut)).then(p=>{o=p.createOnchainRating(e,{autoMount:!1,contentId:n.contentId||"0x"+(e.id||"").replace(/-/g,""),onRated:g=>{u("Rating saved",y.accent,3e3),A(),typeof n.onRated=="function"&&n.onRated(g)},onError:g=>{u(g?.message||"Could not save rating. Try again.","#dc2626"),typeof n.onError=="function"&&n.onError(g)}}),A()}).catch(()=>{u("Could not load rating","#dc2626")}),{element:s,destroy:()=>s.remove(),refresh:A,setRating:p=>{r=p,h(p)}}}function gt(t,e={}){We();let n="deposit",r=V("div",{cls:"nui",style:{animation:"nfade .2s ease-out",border:"1px solid "+y.border,borderRadius:"16px",padding:"28px"}});r.innerHTML=`
39
39
  <div style="display:flex;gap:12px;margin-bottom:20px">
40
- <div data-gw-wallet-card style="flex:1;background:${g.bg};border:1px solid ${g.border};border-radius:12px;padding:16px">
40
+ <div data-gw-wallet-card style="flex:1;background:${y.bg};border:1px solid ${y.border};border-radius:12px;padding:16px">
41
41
  <div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
42
- <div style="font-size:12px;font-weight:600;color:${g.muted};letter-spacing:.02em">Wallet</div>
43
- <button data-gw-connect style="font-size:12px;font-weight:600;cursor:pointer;border:1px solid ${g.accent};background:transparent;color:${g.accent};border-radius:8px;padding:4px 12px;font-family:inherit">Connect</button>
42
+ <div style="font-size:12px;font-weight:600;color:${y.muted};letter-spacing:.02em">Wallet</div>
43
+ <button data-gw-connect style="font-size:12px;font-weight:600;cursor:pointer;border:1px solid ${y.accent};background:transparent;color:${y.accent};border-radius:8px;padding:4px 12px;font-family:inherit">Connect</button>
44
44
  </div>
45
- <div data-gw-wallet-balance class="nui-mono" style="font-size:24px;font-weight:700;color:${g.fg}">\u2014</div>
45
+ <div data-gw-wallet-balance class="nui-mono" style="font-size:24px;font-weight:700;color:${y.fg}">\u2014</div>
46
46
  </div>
47
- <div style="flex:1;background:${g.bg};border:1px solid ${g.border};border-radius:12px;padding:16px">
48
- <div style="font-size:12px;font-weight:600;color:${g.muted};margin-bottom:4px;letter-spacing:.02em">Gateway</div>
49
- <div data-gw-balance class="nui-mono" style="font-size:24px;font-weight:700;color:${g.fg}">\u2014</div>
47
+ <div style="flex:1;background:${y.bg};border:1px solid ${y.border};border-radius:12px;padding:16px">
48
+ <div style="font-size:12px;font-weight:600;color:${y.muted};margin-bottom:4px;letter-spacing:.02em">Gateway</div>
49
+ <div data-gw-balance class="nui-mono" style="font-size:24px;font-weight:700;color:${y.fg}">\u2014</div>
50
50
  </div>
51
51
  </div>
52
- <div style="display:flex;gap:0;margin-bottom:20px;border-bottom:1px solid ${g.border}">
53
- <button data-tab="deposit" style="flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${g.fg};border-bottom:2px solid ${g.accent};font-family:inherit">Deposit</button>
54
- <button data-tab="withdraw" style="flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${g.muted};border-bottom:2px solid transparent;font-family:inherit">Withdraw</button>
52
+ <div style="display:flex;gap:0;margin-bottom:20px;border-bottom:1px solid ${y.border}">
53
+ <button data-tab="deposit" style="flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${y.fg};border-bottom:2px solid ${y.accent};font-family:inherit">Deposit</button>
54
+ <button data-tab="withdraw" style="flex:1;padding:10px 0;font-size:15px;font-weight:600;cursor:pointer;border:none;background:transparent;color:${y.muted};border-bottom:2px solid transparent;font-family:inherit">Withdraw</button>
55
55
  </div>
56
56
  <div data-gw-form></div>
57
- `,(typeof t=="string"?document.querySelector(t):t)?.appendChild(r);let a=r.querySelector("[data-gw-form]"),o=r.querySelectorAll("[data-tab]");function c(i,l){i.forEach(s=>{let y=s.dataset.tab===l;s.style.color=y?g.fg:g.muted,s.style.borderBottomColor=y?g.accent:"transparent"})}function u(i){n=i,c(o,i),i==="deposit"?a.innerHTML=`
57
+ `,(typeof t=="string"?document.querySelector(t):t)?.appendChild(r);let a=r.querySelector("[data-gw-form]"),o=r.querySelectorAll("[data-tab]");function l(i,d){i.forEach(c=>{let m=c.dataset.tab===d;c.style.color=m?y.fg:y.muted,c.style.borderBottomColor=m?y.accent:"transparent"})}function s(i){n=i,l(o,i),i==="deposit"?a.innerHTML=`
58
58
  <label class="nui-label">Amount (USDC)</label>
59
59
  <input type="number" step="0.01" min="0" placeholder="0.00" data-gw-deposit-amount class="nui-input" style="margin-bottom:16px">
60
60
  <button type="button" data-gw-deposit class="nui-btn nui-btn-primary" style="width:100%;padding:16px 28px;font-size:20px">Deposit</button>
61
- <div data-gw-tx class="nui-mono" style="font-size:12px;color:${g.muted};word-break:break-all;margin-top:12px;display:none"></div>
61
+ <div data-gw-tx class="nui-mono" style="font-size:12px;color:${y.muted};word-break:break-all;margin-top:12px;display:none"></div>
62
62
  `:a.innerHTML=`
63
63
  <label class="nui-label">Amount (USDC)</label>
64
64
  <input type="number" step="0.01" min="0" placeholder="0.00" data-gw-withdraw-amount class="nui-input" style="margin-bottom:16px">
65
65
  <button type="button" data-gw-withdraw class="nui-btn nui-btn-primary" style="width:100%;padding:16px 28px;font-size:20px">Withdraw to your wallet</button>
66
- <div data-gw-tx class="nui-mono" style="font-size:12px;color:${g.muted};word-break:break-all;margin-top:12px;display:none"></div>
67
- `}return u("deposit"),o.forEach(i=>i.addEventListener("click",()=>u(i.dataset.tab))),{element:r,destroy:()=>r.remove(),switchTab:u}}I();le();I();var pt=[{name:"publishToNibgate",label:"Publish to Nibgate discovery",type:"boolean",defaultValue:!0},{name:"type",label:"Content type",type:"select",options:F,defaultValue:"article"},{name:"humanAccess",label:"Human access",type:"select",options:Y,defaultValue:"paid"},{name:"agentAccess",label:"Agent access",type:"select",options:Y,defaultValue:"paid"},{name:"unlockMode",label:"Unlock mode",type:"select",options:te,defaultValue:"one_time"},{name:"paymentRail",label:"Payment rail",type:"select",options:ee,defaultValue:"gateway"},{name:"price",label:"Price",type:"text",defaultValue:"0.005"},{name:"currency",label:"Currency",type:"text",defaultValue:"USDC"},{name:"recipient",label:"Recipient wallet",type:"wallet",defaultValue:""},{name:"ratingsEnabled",label:"Enable ratings",type:"boolean",defaultValue:!0},{name:"license",label:"License / terms",type:"textarea",defaultValue:""}];function gt(t={}){let e=$(t.access||{humans:t.humanAccess,agents:t.agentAccess}),n=J(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:O(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:n.mode,paymentRail:j(t.paymentRail||t.paymentMode||t.rail),price:String(t.price??t.amount??"0.005"),currency:t.currency||"USDC",recipient:t.recipient||t.payTo||t.receiverAddress||t.creatorWallet||"",ratingsEnabled:t.ratingsEnabled??t.enableRatings??t.reputation?.ratingsEnabled??!0,license:t.license||t.terms||""}}function yt(t={}){return $({humans:t.humanAccess,agents:t.agentAccess})}function ht(t={}){return J(t.unlockMode||t.unlock||"one_time")}le();return St(Zt);})();
66
+ <div data-gw-tx class="nui-mono" style="font-size:12px;color:${y.muted};word-break:break-all;margin-top:12px;display:none"></div>
67
+ `}return s("deposit"),o.forEach(i=>i.addEventListener("click",()=>s(i.dataset.tab))),{element:r,destroy:()=>r.remove(),switchTab:s}}I();me();I();var yt=[{name:"publishToNibgate",label:"Publish to Nibgate discovery",type:"boolean",defaultValue:!0},{name:"type",label:"Content type",type:"select",options:F,defaultValue:"article"},{name:"humanAccess",label:"Human access",type:"select",options:Y,defaultValue:"paid"},{name:"agentAccess",label:"Agent access",type:"select",options:Y,defaultValue:"paid"},{name:"unlockMode",label:"Unlock mode",type:"select",options:te,defaultValue:"one_time"},{name:"paymentRail",label:"Payment rail",type:"select",options:ee,defaultValue:"gateway"},{name:"price",label:"Price",type:"text",defaultValue:"0.005"},{name:"currency",label:"Currency",type:"text",defaultValue:"USDC"},{name:"recipient",label:"Recipient wallet",type:"wallet",defaultValue:""},{name:"ratingsEnabled",label:"Enable ratings",type:"boolean",defaultValue:!0},{name:"license",label:"License / terms",type:"textarea",defaultValue:""}];function ht(t={}){let e=$(t.access||{humans:t.humanAccess,agents:t.agentAccess}),n=J(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:O(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:n.mode,paymentRail:j(t.paymentRail||t.paymentMode||t.rail),price:String(t.price??t.amount??"0.005"),currency:t.currency||"USDC",recipient:t.recipient||t.payTo||t.receiverAddress||t.creatorWallet||"",ratingsEnabled:t.ratingsEnabled??t.enableRatings??t.reputation?.ratingsEnabled??!0,license:t.license||t.terms||""}}function bt(t={}){return $({humans:t.humanAccess,agents:t.agentAccess})}function wt(t={}){return J(t.unlockMode||t.unlock||"one_time")}me();return _t(sn);})();
68
68
  //# sourceMappingURL=nibgate.min.js.map