@nibgate/sdk 0.2.15 → 0.2.16

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 Se=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var yt=Object.getOwnPropertyNames;var ht=Object.prototype.hasOwnProperty;var bt=(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 U=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ee=(t,e)=>{for(var n in e)Se(t,n,{get:e[n],enumerable:!0})},wt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of yt(e))!ht.call(t,a)&&a!==n&&Se(t,a,{get:()=>e[a],enumerable:!(r=gt(e,a))||r.enumerable});return t};var xt=t=>wt(Se({},"__esModule",{value:!0}),t);function V(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,ue=U(()=>{ee=["gateway","transfer"]});function D(t){let e=String(t||"").trim().toLowerCase();return F.includes(e)?e:kt[e]||"article"}function Ce(t,e="paid"){let n=String(t||"").trim().toLowerCase();return Y.includes(n)?n:e}function O(t={}){if(typeof t=="string"){let e=Ce(t);return{humans:e,agents:e}}return{humans:Ce(t.humans||t.human||t.default,"paid"),agents:Ce(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 L(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 vt(t){let e=Re();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function St(){return L("og:image")||void 0}function Et(){return L("og:description")||L("description")||void 0}function Ct(){let t=Re();return L("og:title")||L("twitter:title")||(t?t.document.title:"")||void 0}function Tt(){let t=L("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 Rt(){let t=L("keywords");if(t)return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).slice(0,8)}function At(t,e){return e&&typeof e=="object"&&Object.keys(e).length>0?O(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:s,publisherProfileUrl:l,publisherOrigin:c,publisherVerification:u,authorHandle:i,...b}=e,d=e.path||e.route||void 0,m=e.url||vt(d)||void 0,y=e.access,x=e.price??e.amount??"";return{...b,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||Ct()||"Untitled").trim(),type:D(e.type||e.contentType||Tt()),price:x,currency:e.currency||"USDC",paymentRail:V(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:m,imageUrl:e.imageUrl||e.image||St()||void 0,description:e.description||e.summary||Et()||void 0,tags:e.tags||Rt()||void 0,access:At(x,y),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 Te(t){return Array.isArray(t)?t.length>0:t!=null&&String(t).trim()!==""}function Pt(t={}){let e=O(t.access);return e.humans==="paid"||e.agents==="paid"||Number.parseFloat(t.price||t.amount||"0")>0}function le(t={},e={}){let n=S(t),r=[],a=[],o=e.required||["id","type"],s=e.recommended||["title","url","description","imageUrl","tags"];for(let c of o)Te(n[c])||a.push(`Missing required content metadata: ${c}`);for(let c of s)Te(n[c])||r.push(`Missing recommended discovery metadata: ${c}`);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."),Pt(n)&&(Te(n.price)||a.push("Paid content requires price."));let l=Math.max(0,100-a.length*20-r.length*8);return{ok:a.length===0,score:l,errors:a,warnings:r,resource:n}}var F,kt,Y,te,I=U(()=>{ue();F=["music","video","article","image"],kt={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 q=U(()=>{});function _t(t,e){let n=v();return n?(n.__nibgateClientQueue=n.__nibgateClientQueue||[],n.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function de(){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 It(){let t=v();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,n=t.setInterval(()=>{e+=1,de(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(n),t.__nibgateClientFlushStarted=!1)},250)}function M(t,e={}){let n=v();return n?n.nibgateHub?.track?(n.nibgateHub.track(t,e),de(),!0):(_t(t,e),It(),!1):!1}function B(t,e={}){return{...e,resource:S(t)}}var Q=U(()=>{q();I()});function Ae(t){return`nibgate:unlock:${t.id||t.path||t.url||"content"}`}function Pe(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(Ae(t),JSON.stringify({unlockedAt:new Date().toISOString(),payment:e})),!0}catch{return!1}}function _e(t,e){let n=v();if(!n||!e)return!1;try{let r=typeof e=="string"?e:JSON.stringify(e);return n.localStorage.setItem(Pe(t),r),!0}catch{return!1}}function Ie(t){let e=v();if(!e)return"";try{return e.localStorage.getItem(Pe(t))||""}catch{return""}}function qe(t){let e=S(t),n=v();if(!n)return!1;try{return n.localStorage.removeItem(Pe(e)),n.localStorage.removeItem(Ae(e)),!0}catch{return!1}}function Ge(t){let e=v();if(!e)return!1;try{return!!e.localStorage.getItem(Ae(t))}catch{return!1}}var fe=U(()=>{q();I()});function je(t){We=t}function _(t,e={}){let n=S(t),r=e.client||We;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 Ge(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 We,$=U(()=>{I();Q();fe();We=null});function Nt(t,e){return typeof e=="bigint"?e.toString():e}function K(t){return JSON.stringify(t,Nt)}var pe=U(()=>{});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 he(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 be=U(()=>{I()});var Ye={};Ee(Ye,{createCircleGatewayBrowserAdapter:()=>Ht});function Ut(t){let e=typeof t=="string"?t:K(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function Bt(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function Ht(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=new Fe.BatchEvmScheme(e),r=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function a(s){if(s&&typeof s=="object")return s;if(!s||typeof s!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse(Bt(s))}function o(s){let l=Array.isArray(s?.accepts)?s.accepts:[],c=l.find(u=>{let i=u.extra||{};return u.network===r&&i.name==="GatewayWalletBatched"&&i.version==="1"&&typeof i.verifyingContract=="string"})||l.find(u=>{let i=u.extra||{};return i.name==="GatewayWalletBatched"&&i.version==="1"&&typeof i.verifyingContract=="string"});if(!c){let u=l.map(b=>b.network).filter(Boolean).join(", ")||"none",i=l.some(b=>{let d=b.extra||{};return d.name==="GatewayWalletBatched"&&d.version==="1"&&typeof d.verifyingContract=="string"});throw new Error(i?`No Circle Gateway batching payment option found for ${r}. Server returned networks: ${u}.`:`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 c}return{signer:e,network:r,async pay({paymentRequiredHeader:s,challenge:l}){let c=a(s||l),u=o(c),i=c.x402Version??2,b=await n.createPaymentPayload(i,u),d=Ut({...b,resource:c.resource,accepted:u});return{paymentSignature:d,signature:d,metadata:{paymentProvider:"circle-gateway",network:u.network,payer:e.address,recipient:u.payTo||u.recipient,amount:u.amount,currency:u.asset}}}}}var Fe,Je=U(()=>{Fe=bt("@circle-fin/x402-batching/client");pe()});function Dt(t=""){return String(t||"").replace(/^0x/i,"").replace(/[^0-9a-fA-F]/g,"").toLowerCase()}function Ke(t=""){let e=Dt(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function Ne(t=0){return Number(t||0).toString(16).padStart(64,"0")}function Ot(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function qt(t=""){let e=Ot(t),n=e.length/2,r=Math.ceil(n/32)*64;return Ne(n)+e.padEnd(r,"0")}function Gt({contentId:t,ratingValue:e,reviewHash:n,unlockRef:r}){return Lt+Ke(t)+Ne(e)+Ke(n||Me)+Ne(128)+qt(r||"")}function Be(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 rt(t=""){if(!t)return Me;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function Wt(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 we(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||Ue;if(!o)throw new Error("Nibgate reputation contract address is not configured.");let s=await a.request({method:"eth_requestAccounts"}),l=Array.isArray(s)&&s[0]||"";if(!l)throw new Error("No wallet account selected.");let c=await Wt(n,e),u=c.contentHash||c.contentId||Be(n,e),i=e.reviewHash||Me,b=String(e.unlockRef||e.paymentId||e.txHash||""),d=Gt({contentId:u,ratingValue:r.ratingValue,reviewHash:i,unlockRef:b}),m=await a.request({method:"eth_sendTransaction",params:[{from:l,to:o,data:d}]}),y=B(n,{rating:r.rating,ratingValue:r.ratingValue,walletAddress:l,txHash:m,contentHash:u,reviewHash:i,proofType:"onchain_pending",proof:b,paymentId:e.paymentId,actor:e.actor||"human"});return M("content_rating",y),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:m,resource:n,url:n.url,path:n.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:m,walletAddress:l,contentId:u,ratingValue:r.ratingValue,reviewHash:i}}var Lt,Me,Xe,Ze,et,tt,Ue,nt,He=U(()=>{be();I();Q();Lt="0xc62fad09",Me=`0x${"0".repeat(64)}`,Xe="nibgate:content:v1",Ze=5042002,et="Arc Testnet",tt="https://rpc.testnet.arc.io",Ue="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",nt=[{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 at={};Ee(at,{createOnchainRating:()=>ce,mountRatingUI:()=>ie,rateResource:()=>X});function X(t,e={},n={}){let r=S(t),a=ae(e),o={...n,...a,ratingMessage:n.ratingMessage||e.message||e.ratingMessage||he(r,a,n),ratingSignature:n.ratingSignature||e.signature||e.ratingSignature||void 0,resource:r};return M("content_rating",o)}function ce(t,e={}){let n=_(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,s=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",c=(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(s)||[]),u=e.source||"nibgate-onchain-rating",i=!1,b=e.payment||null;function d(h){typeof e.onStatus=="function"&&e.onStatus(h),a&&(a.textContent=h||"")}function m(h){i=!!h,c.forEach(k=>{k&&"disabled"in k&&(k.disabled=i)})}function y(h=null){return b=h||null,b}function x(h){return o&&("hidden"in o&&(o.hidden=!h),o.setAttribute("aria-hidden",h?"false":"true")),!!h}function T(h){let k=h?.dataset?.nibgateRatingValue||h?.dataset?.rating||h?.value||h?.textContent,P=Number.parseFloat(String(k||"").replace(/[^\d.]/g,""));return Number.isFinite(P)?P:Number(e.rating||e.stars||0)}async function R(h={}){m(!0);try{let k=Number.parseFloat(h.rating??h.stars??h.value??e.rating??e.stars);if(!Number.isFinite(k))throw new Error("Choose a rating before sending.");let P=h.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():b?.paymentId),E=h.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||P||b?.txHash||b?.transactionHash||"";d(e.pendingMessage||"Send the onchain rating transaction...");let H=await we(n.resource,{...e,...h,rating:k,paymentId:P,unlockRef:E,source:u});return d(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(H),H}catch(k){let P=k?.message||e.errorMessage||"Rating failed.";throw d(P),typeof e.onError=="function"&&e.onError(k),k}finally{m(!1)}}function f(){return c.forEach(h=>{h?.addEventListener?.("click",()=>R({rating:T(h)}).catch(()=>null))}),e.visible!==void 0&&x(!!e.visible),p}let p={resource:n.resource,rate:R,mount:f,setPayment:y,setVisible:x};return e.autoMount!==!1&&f(),p}function ie(t,e={}){let n=_(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],s=0,l=r.document.createElement("div");l.className="nibgate-rating-ui",l.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let c=o.map(d=>{let m=r.document.createElement("button");return m.type="button",m.dataset.nibgateRatingValue=String(d),m.setAttribute("aria-label",`${d} star${d>1?"s":""}`),m.innerHTML="\u2606",m.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",m.addEventListener("mouseenter",()=>{c.forEach((y,x)=>y.style.color=x<d?"#f5b342":"#ccc")}),m.addEventListener("mouseleave",()=>{c.forEach((y,x)=>y.style.color=x<s?"#f5b342":"#ccc")}),m.addEventListener("click",()=>{s=d,c.forEach((y,x)=>y.style.color=x<d?"#f5b342":"#ccc"),X(n.resource,{rating:d}).catch(()=>{})}),l.appendChild(m),m}),u=r.document.createElement("span");u.style.cssText="font-size:13px;color:#888;margin-left:8px",u.textContent=e.label||"Rate this content",l.appendChild(u),a.appendChild(l);function i(d,m={}){return n.rate({...m,rating:d})}function b(d){s=d,c.forEach((m,y)=>m.style.color=y<d?"#f5b342":"#ccc")}return{resource:n.resource,container:l,setRating:b,rate:i}}var xe=U(()=>{I();be();Q();q();He();$()});var Ft={};Ee(Ft,{ACCESS_MODES:()=>Y,CONTENT_TYPES:()=>F,NIBGATE_CONTENT_HASH_NAMESPACE:()=>Xe,NIBGATE_CONTENT_SETTING_FIELDS:()=>lt,NIBGATE_REPUTATION_ABI:()=>nt,NIBGATE_REPUTATION_CHAIN_ID:()=>Ze,NIBGATE_REPUTATION_CHAIN_NAME:()=>et,NIBGATE_REPUTATION_CONTRACT:()=>Ue,NIBGATE_REPUTATION_RPC_URL:()=>tt,PAYMENT_RAILS:()=>ee,UNLOCK_MODES:()=>te,checkResourceAccess:()=>N,contentRatingHash:()=>Be,createCircleGatewayBrowserAdapter:()=>oe,createEvmGatewayUnlock:()=>W,createGate:()=>_,createHostedUnlock:()=>Qe,createNibgate:()=>ze,createNibgateContentSettings:()=>dt,createOnchainRating:()=>ce,createTransferCheckout:()=>se,createWalletCheckout:()=>ye,mountRatingUI:()=>ie,nibgate:()=>$e,normalizeAccessPolicy:()=>O,normalizeContentType:()=>D,normalizePaymentRail:()=>V,normalizeResource:()=>S,normalizeUnlockPolicy:()=>J,payAndUnlockResource:()=>re,payWithPaymentSignature:()=>ne,payWithTransfer:()=>ke,rateContentOnchain:()=>we,rateResource:()=>X,renderDefaultGatewayWalletUI:()=>ut,renderDefaultRatingUI:()=>st,renderDefaultUnlockUI:()=>it,reviewTextHash:()=>rt,settingsToAccessPolicy:()=>mt,settingsToUnlockPolicy:()=>ft,setupResourcePage:()=>ge,trackResourcePage:()=>G,validateResourceMetadata:()=>le});$();Q();fe();pe();$();I();q();$();function G(t,e={}){let n=_(t,e.gateOptions||{}),r=le(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 ge(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,s=e.onStatus||(l=>{o&&(o.textContent=l||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await N(t,{...e,onStatus:s})}finally{a.disabled=!1}}),n}async function N(t,e={}){let n=_(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",...Ie(n.resource)?{"x-nibgate-payment-proof":Ie(n.resource)}:{},...e.headers||{}},body:e.body}),s=await o.json().catch(()=>({}));if(o.status===402){if(n.track("payment_challenge_returned",{source:e.source,challenge:s,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:s,paymentRequiredHeader:o.headers.get("PAYMENT-REQUIRED")||o.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let c=await re(t,e);return c.ok&&e.retryAfterPay!==!1?N(t,{...e,autoPay:!1}):c}return{ok:!1,status:o.status,challenge:s,resource:n.resource,response:o}}if(!o.ok)return a(s.error||e.errorMessage||"Access check failed"),{ok:!1,status:o.status,error:s.error||"Access check failed",payload:s,resource:n.resource,response:o};let l=e.payment||s.payment||null;return l&&(n.unlockCompleted(l),n.paymentCompleted(l)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:o.status,payload:s,payment:l,resource:n.resource,response:o}}async function ne(t,e={}){let n=_(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||"",s=e.memo||"",l=e.payment||{};if(!o){let d=e.paymentRequiredHeader||"",m=e.challenge||null,x=await(e.createPaymentSignature||e.checkout)({resource:n.resource,challenge:m,paymentRequiredHeader:d,accessPath:r});o=x?.paymentSignature||x?.signature||x?.payment||"",s=x?.memo||x?.paymentMemo||"",l=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 c=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":o,...s?{"payment-memo":s}:{},...e.headers||{}}}),u=await c.text(),i={};try{i=u?JSON.parse(u):{}}catch{i={error:u||"Payment verification failed"}}if(!c.ok){let d=i.detail||i.reason||i.invalidReason||i.error||u||"Payment verification failed",m=typeof d=="string"?d:K(d);return n.track("payment_failed",{source:e.source,status:c.status,error:m,...l}),a(e.paymentErrorMessage||m),{ok:!1,status:c.status,error:m,payload:i,resource:n.resource,response:c}}let b=i.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:o,memo:s,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC",...l};return _e(n.resource,i.unlockProof),n.markUnlocked(b),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:c.status,payload:i,payment:b,resource:n.resource,response:c}}async function re(t,e={}){let n=_(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||{}})}),s=await o.json().catch(()=>({}));if(!o.ok||!s.ok)return n.track("payment_failed",{source:e.source,status:o.status,error:s.error||"Payment failed",detail:s.detail||""}),a(s.detail||s.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:o.status,payload:s,resource:n.resource,response:o};let l=s.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:s.paymentId||`nibgate_payment_${Date.now()}`,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC"};return _e(n.resource,s.unlockProof),n.markUnlocked(l),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:s,payment:l,resource:n.resource,response:o}}I();q();function Mt(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&(r.textContent=e||"")}function Ve(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 ye(t,e={}){let n=S(t),r=e.accessPath||n.accessPath||"/api/nibgate/access",a=e.button||null,o=e.status||null,s=typeof e.onStatus=="function"?e.onStatus:i=>Mt(o,i),l=e.checkout||e.createPaymentSignature||e.pay;if(typeof l!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function c(i={}){Ve(a,!0);try{return await N(n,{...e,...i,accessPath:r,createPaymentSignature:l,onStatus:s})}finally{Ve(a,!1)}}function u(){let i=v();if(!i||!a)return{unlock:c};let b=typeof a=="string"?i.document.querySelector(a):a;return b&&b.addEventListener("click",()=>c().catch(d=>s(d.message||"Checkout failed."))),{unlock:c}}return{resource:n,unlock:c,mount:u}}I();be();Q();$();$();q();fe();pe();$();async function oe(t={}){return(await Promise.resolve().then(()=>(Je(),Ye))).createCircleGatewayBrowserAdapter(t)}var zt="https://api.nibgate.xyz/api/hub/pay";function $t(t,e){return e.hosted||e.accessPath==="hosted"?zt:e.accessPath||t.accessPath||"/api/nibgate/access"}function W(t,e={}){let n=_(t,e.gateOptions||{}),r=v(),a=$t(n.resource,e),o=e.source||"nibgate-evm-gateway",s=e.network||"eip155:5042002",l=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,c=typeof e.connectButton=="string"?r?.document.querySelector(e.connectButton):e.connectButton,u=typeof e.disconnectButton=="string"?r?.document.querySelector(e.disconnectButton):e.disconnectButton,i=typeof e.unlockButton=="string"?r?.document.querySelector(e.unlockButton):e.unlockButton,b=typeof e.clearButton=="string"?r?.document.querySelector(e.clearButton):e.clearButton,d=typeof e.walletLabel=="string"?r?.document.querySelector(e.walletLabel):e.walletLabel,m=typeof e.unlockedTarget=="string"?r?.document.querySelector(e.unlockedTarget):e.unlockedTarget,y="",x=!1;function T(w){typeof e.onStatus=="function"&&e.onStatus(w),l&&(l.textContent=w||"")}function R(w){return w?`${w.slice(0,6)}...${w.slice(-4)}`:""}function f(){return r?.ethereum||e.provider||null}function p(w){x=!!w,[c,u,i,b].forEach(C=>{C&&"disabled"in C&&(C.disabled=x||C===c&&!f()||C===u&&!y)})}function h(){let w=!!f();d&&(d.textContent=y?R(y):w?"Ready to connect":"No wallet detected"),c&&(c.textContent=y?"Connected":"Connect wallet"),u&&(u.textContent="Disconnect"),c&&"disabled"in c&&(c.disabled=x||!w),u&&"disabled"in u&&(u.disabled=x||!y)}function k(w,C={}){i&&(i.textContent=w?"Unlocked":`Unlock for ${n.resource.price} ${n.resource.currency||"USDC"}`),m&&("hidden"in m&&(m.hidden=!w),m.setAttribute("aria-hidden",w?"false":"true")),w&&n.markUnlocked(C)}async function P(){p(!0),T("Opening wallet connection...");try{let w=f();if(!w)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let C=await w.request({method:"eth_requestAccounts"});if(y=Array.isArray(C)&&C[0]||"",!y)throw new Error("No wallet account selected.");return h(),T("Wallet connected. You can unlock now."),y}finally{p(!1)}}async function E(){p(!0);try{let w=f();if(w?.request&&y)try{await w.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return y="",h(),T(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{p(!1)}}async function H(w){let C=f();if(!C)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");return y||await P(),(await oe({network:s,signer:{address:y,signTypedData:pt=>C.request({method:"eth_signTypedData_v4",params:[y,K(pt)]})},clientModule:e.circleClientModule})).pay(w)}async function z(){p(!0);try{y||await P(),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),h()}}function A(){qe(n.resource),k(!1),T("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function Z(){let w=f();try{let C=w?await w.request({method:"eth_accounts"}):[];y=Array.isArray(C)&&C[0]||""}catch{}h(),k(!1)}function De(){return c?.addEventListener?.("click",()=>P().catch(w=>T(w?.message||"Could not connect wallet."))),u?.addEventListener?.("click",()=>E().catch(w=>T(w?.message||"Could not disconnect wallet."))),i?.addEventListener?.("click",()=>z()),b?.addEventListener?.("click",A),Z(),G(n.resource,{source:o}),Oe}let Oe={resource:n.resource,connect:P,disconnect:E,unlock:z,clear:A,hydrate:Z,mount:De,getWalletAddress:()=>y};return e.autoMount!==!1&&De(),Oe}function Qe(t,e={}){return W(t,{...e,hosted:!0,noWalletMessage:e.noWalletMessage||"Install MetaMask or another EVM wallet to unlock premium content."})}xe();I();function se(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,s=String(n.price||n.amount||"0"),l=n.currency||"USDC",c=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",u=await r({resource:n,recipient:o,amount:s,currency:l,network:c,challenge:a.challenge}),i=u?.txHash||u?.hash||u?.transactionHash||u?.paymentId||"";if(!i)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:i,signature:i,memo:u.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:i,txHash:i,recipient:o,amount:Number(s),currency:l,network:c,...u.metadata||u}}}}}async function ke(t,e={}){let r=await(e.checkout||se(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 ze(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 M("content_registered",B(n(r),a))},registerContent(r,a={}){return M("content_registered",B(n(r),a))},view(r,a={}){return M("resource_view",B(n(r),a))},track(r,a={}){return M(r||"custom",a)},unlockStarted(r,a={}){return M("unlock_started",B(n(r),a))},unlockCompleted(r,a={}){return M("unlock_completed",B(n(r),a))},paymentCompleted(r,a={}){return M("payment_completed",B(n(r),a))},rateResource(r,a={},o={}){return X(n(r),a,o)},ratingMessage(r,a={},o={}){return he(n(r),a,o)},gate(r,a={}){return _(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 ye(n(r),a)},createCircleGatewayBrowserAdapter(r={}){return oe(r)},createTransferCheckout(r,a={}){return se(n(r),a)},payWithTransfer(r,a={}){return ke(n(r),a)},createEvmGatewayUnlock(r,a={}){return W(n(r),a)},createOnchainRating(r,a={}){return ce(n(r),a)},mountRatingUI(r,a={}){return ie(n(r),a)},payAndUnlockResource(r,a={}){return re(n(r),a)},setupResourcePage(r,a={}){return ge(n(r),a)},normalizeResource:n,normalizeContentType:D,flush:de}}var $e=ze();je($e);xe();He();var ot="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)"},jt=t=>Object.entries(t).map(([e,n])=>`${e.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())}:${n}`).join(";");function ct(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=jt(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 Le(){if(document.getElementById(ot))return;let t=ct("style",{id:ot},`
1
+ var Nibgate=(()=>{var Ce=Object.defineProperty;var ht=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var wt=Object.prototype.hasOwnProperty;var xt=(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 U=(t,e)=>()=>(t&&(e=t(t=0)),e);var Te=(t,e)=>{for(var n in e)Ce(t,n,{get:e[n],enumerable:!0})},kt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of bt(e))!wt.call(t,a)&&a!==n&&Ce(t,a,{get:()=>e[a],enumerable:!(r=ht(e,a))||r.enumerable});return t};var vt=t=>kt(Ce({},"__esModule",{value:!0}),t);function V(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=U(()=>{ee=["gateway","transfer"]});function D(t){let e=String(t||"").trim().toLowerCase();return F.includes(e)?e:St[e]||"article"}function Ae(t,e="paid"){let n=String(t||"").trim().toLowerCase();return Y.includes(n)?n:e}function O(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 Pe(){return typeof window<"u"?window:null}function L(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 Et(t){let e=Pe();if(!(!e||!t))return`${e.location.origin}${t.startsWith("/")?t:"/"+t}`}function Ct(){return L("og:image")||void 0}function Tt(){return L("og:description")||L("description")||void 0}function At(){let t=Pe();return L("og:title")||L("twitter:title")||(t?t.document.title:"")||void 0}function Rt(){let t=L("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=L("keywords");if(t)return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).slice(0,8)}function _t(t,e){return e&&typeof e=="object"&&Object.keys(e).length>0?O(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:s,publisherProfileUrl:l,publisherOrigin:c,publisherVerification:u,authorHandle:i,...b}=e,d=e.path||e.route||void 0,m=e.url||Et(d)||void 0,p=e.access,x=e.price??e.amount??"";return{...b,id:String(e.id||e.contentId||e.slug||"").trim(),title:String(e.title||e.name||At()||"Untitled").trim(),type:D(e.type||e.contentType||Rt()),price:x,currency:e.currency||"USDC",paymentRail:V(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:m,imageUrl:e.imageUrl||e.image||Ct()||void 0,description:e.description||e.summary||Tt()||void 0,tags:e.tags||Pt()||void 0,access:_t(x,p),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 It(t={}){let e=O(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"],s=e.recommended||["title","url","description","imageUrl","tags"];for(let c of o)Re(n[c])||a.push(`Missing required content metadata: ${c}`);for(let c of s)Re(n[c])||r.push(`Missing recommended discovery metadata: ${c}`);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."),It(n)&&(Re(n.price)||a.push("Paid content requires price."));let l=Math.max(0,100-a.length*20-r.length*8);return{ok:a.length===0,score:l,errors:a,warnings:r,resource:n}}var F,St,Y,te,I=U(()=>{le();F=["music","video","article","image"],St={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 q=U(()=>{});function Nt(t,e){let n=v();return n?(n.__nibgateClientQueue=n.__nibgateClientQueue||[],n.__nibgateClientQueue.push({eventName:t,payload:e}),!0):!1}function me(){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 Mt(){let t=v();if(!t||t.__nibgateClientFlushStarted)return;t.__nibgateClientFlushStarted=!0;let e=0,n=t.setInterval(()=>{e+=1,me(),(t.nibgateHub?.track||e>=80)&&(t.clearInterval(n),t.__nibgateClientFlushStarted=!1)},250)}function M(t,e={}){let n=v();return n?n.nibgateHub?.track?(n.nibgateHub.track(t,e),me(),!0):(Nt(t,e),Mt(),!1):!1}function B(t,e={}){return{...e,resource:S(t)}}var Q=U(()=>{q();I()});function _e(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 fe(t,e={}){let n=v();if(!n)return!1;try{return n.localStorage.setItem(_e(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 We(t){let e=S(t),n=v();if(!n)return!1;try{return n.localStorage.removeItem(Ie(e)),n.localStorage.removeItem(_e(e)),!0}catch{return!1}}function je(t){let e=v();if(!e)return!1;try{return!!e.localStorage.getItem(_e(t))}catch{return!1}}var pe=U(()=>{q();I()});function Fe(t){Ve=t}function _(t,e={}){let n=S(t),r=e.client||Ve;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 fe(n,a),r.unlockCompleted(n,a)},paymentCompleted(a={}){return r.paymentCompleted(n,a)},isUnlocked(){return je(n)},markUnlocked(a={}){return fe(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 fe(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 Ve,$=U(()=>{I();Q();pe();Ve=null});function Ut(t,e){return typeof e=="bigint"?e.toString():e}function K(t){return JSON.stringify(t,Ut)}var ge=U(()=>{});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=U(()=>{I()});var Qe={};Te(Qe,{createCircleGatewayBrowserAdapter:()=>$t});function Ht(t){let e=typeof t=="string"?t:K(t);return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(unescape(encodeURIComponent(e)))}function zt(t){return typeof Buffer<"u"?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}async function $t(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=new Je.BatchEvmScheme(e),r=t.network||t.chainId&&`eip155:${t.chainId}`||"eip155:5042002";function a(s){if(s&&typeof s=="object")return s;if(!s||typeof s!="string")throw new Error("Missing PAYMENT-REQUIRED header.");return JSON.parse(zt(s))}function o(s){let l=Array.isArray(s?.accepts)?s.accepts:[],c=l.find(u=>{let i=u.extra||{};return u.network===r&&i.name==="GatewayWalletBatched"&&i.version==="1"&&typeof i.verifyingContract=="string"})||l.find(u=>{let i=u.extra||{};return i.name==="GatewayWalletBatched"&&i.version==="1"&&typeof i.verifyingContract=="string"});if(!c){let u=l.map(b=>b.network).filter(Boolean).join(", ")||"none",i=l.some(b=>{let d=b.extra||{};return d.name==="GatewayWalletBatched"&&d.version==="1"&&typeof d.verifyingContract=="string"});throw new Error(i?`No Circle Gateway batching payment option found for ${r}. Server returned networks: ${u}.`:`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 c}return{signer:e,network:r,async pay({paymentRequiredHeader:s,challenge:l}){let c=a(s||l),u=o(c),i=c.x402Version??2,b=await n.createPaymentPayload(i,u),d=Ht({...b,resource:c.resource,accepted:u});return{paymentSignature:d,signature:d,metadata:{paymentProvider:"circle-gateway",network:u.network,payer:e.address,recipient:u.payTo||u.recipient,amount:u.amount,currency:u.asset}}}}}var Je,Ke=U(()=>{Je=xt("@circle-fin/x402-batching/client");ge()});function qt(t=""){return String(t||"").replace(/^0x/i,"").replace(/[^0-9a-fA-F]/g,"").toLowerCase()}function Ze(t=""){let e=qt(t);if(e.length>64)throw new Error("ABI word is too long.");return e.padEnd(64,"0")}function Ue(t=0){return Number(t||0).toString(16).padStart(64,"0")}function Gt(t=""){return Array.from(new TextEncoder().encode(String(t||""))).map(e=>e.toString(16).padStart(2,"0")).join("")}function Wt(t=""){let e=Gt(t),n=e.length/2,r=Math.ceil(n/32)*64;return Ue(n)+e.padEnd(r,"0")}function jt({contentId:t,ratingValue:e,reviewHash:n,unlockRef:r}){return Ot+Ze(t)+Ue(e)+Ze(n||Be)+Ue(128)+Wt(r||"")}function ze(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 ot(t=""){if(!t)return Be;throw new Error("Text review hashing is not available in direct-browser mode. Pass reviewHash from your app/backend.")}async function Vt(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 xe(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||He;if(!o)throw new Error("Nibgate reputation contract address is not configured.");let s=await a.request({method:"eth_requestAccounts"}),l=Array.isArray(s)&&s[0]||"";if(!l)throw new Error("No wallet account selected.");let c=await Vt(n,e),u=c.contentHash||c.contentId||ze(n,e),i=e.reviewHash||Be,b=String(e.unlockRef||e.paymentId||e.txHash||""),d=jt({contentId:u,ratingValue:r.ratingValue,reviewHash:i,unlockRef:b}),m=await a.request({method:"eth_sendTransaction",params:[{from:l,to:o,data:d}]}),p=B(n,{rating:r.rating,ratingValue:r.ratingValue,walletAddress:l,txHash:m,contentHash:u,reviewHash:i,proofType:"onchain_pending",proof:b,paymentId:e.paymentId,actor:e.actor||"human"});return M("content_rating",p),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:m,resource:n,url:n.url,path:n.path,actor:e.actor||"human"})}).catch(()=>null),{txHash:m,walletAddress:l,contentId:u,ratingValue:r.ratingValue,reviewHash:i}}var Ot,Be,et,tt,nt,rt,He,at,$e=U(()=>{we();I();Q();Ot="0xc62fad09",Be=`0x${"0".repeat(64)}`,et="nibgate:content:v1",tt=5042002,nt="Arc Testnet",rt="https://rpc.testnet.arc.io",He="0x9f27fd62e75f86a3c7addfdba443aab1f930e281",at=[{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 ct={};Te(ct,{createOnchainRating:()=>ce,mountRatingUI:()=>ie,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 M("content_rating",o)}function ce(t,e={}){let n=_(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,s=e.ratingButtons||e.buttons||"[data-nibgate-rating-value], [data-rating]",c=(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(s)||[]),u=e.source||"nibgate-onchain-rating",i=!1,b=e.payment||null;function d(h){typeof e.onStatus=="function"&&e.onStatus(h),a&&(a.textContent=h||"")}function m(h){i=!!h,c.forEach(k=>{k&&"disabled"in k&&(k.disabled=i)})}function p(h=null){return b=h||null,b}function x(h){return o&&("hidden"in o&&(o.hidden=!h),o.setAttribute("aria-hidden",h?"false":"true")),!!h}function T(h){let k=h?.dataset?.nibgateRatingValue||h?.dataset?.rating||h?.value||h?.textContent,P=Number.parseFloat(String(k||"").replace(/[^\d.]/g,""));return Number.isFinite(P)?P:Number(e.rating||e.stars||0)}async function A(h={}){m(!0);try{let k=Number.parseFloat(h.rating??h.stars??h.value??e.rating??e.stars);if(!Number.isFinite(k))throw new Error("Choose a rating before sending.");let P=h.paymentId||e.paymentId||(typeof e.getPaymentId=="function"?e.getPaymentId():b?.paymentId),C=h.unlockRef||e.unlockRef||(typeof e.getUnlockRef=="function"?e.getUnlockRef():null)||P||b?.txHash||b?.transactionHash||"";d(e.pendingMessage||"Send the onchain rating transaction...");let H=await xe(n.resource,{...e,...h,rating:k,paymentId:P,unlockRef:C,source:u});return d(e.successMessage||"Rating sent to Nibgate reputation."),typeof e.onRated=="function"&&e.onRated(H),H}catch(k){let P=k?.message||e.errorMessage||"Rating failed.";throw d(P),typeof e.onError=="function"&&e.onError(k),k}finally{m(!1)}}function f(){return c.forEach(h=>{h?.addEventListener?.("click",()=>A({rating:T(h)}).catch(()=>null))}),e.visible!==void 0&&x(!!e.visible),g}let g={resource:n.resource,rate:A,mount:f,setPayment:p,setVisible:x};return e.autoMount!==!1&&f(),g}function ie(t,e={}){let n=_(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],s=0,l=r.document.createElement("div");l.className="nibgate-rating-ui",l.style.cssText="display:flex;align-items:center;gap:4px;padding:8px 0";let c=o.map(d=>{let m=r.document.createElement("button");return m.type="button",m.dataset.nibgateRatingValue=String(d),m.setAttribute("aria-label",`${d} star${d>1?"s":""}`),m.innerHTML="\u2606",m.style.cssText="background:none;border:none;font-size:24px;cursor:pointer;color:#ccc;transition:color 0.15s;padding:2px;line-height:1",m.addEventListener("mouseenter",()=>{c.forEach((p,x)=>p.style.color=x<d?"#f5b342":"#ccc")}),m.addEventListener("mouseleave",()=>{c.forEach((p,x)=>p.style.color=x<s?"#f5b342":"#ccc")}),m.addEventListener("click",()=>{s=d,c.forEach((p,x)=>p.style.color=x<d?"#f5b342":"#ccc"),X(n.resource,{rating:d}).catch(()=>{})}),l.appendChild(m),m}),u=r.document.createElement("span");u.style.cssText="font-size:13px;color:#888;margin-left:8px",u.textContent=e.label||"Rate this content",l.appendChild(u),a.appendChild(l);function i(d,m={}){return n.rate({...m,rating:d})}function b(d){s=d,c.forEach((m,p)=>m.style.color=p<d?"#f5b342":"#ccc")}return{resource:n.resource,container:l,setRating:b,rate:i}}var ke=U(()=>{I();we();Q();q();$e();$()});var Jt={};Te(Jt,{ACCESS_MODES:()=>Y,CONTENT_TYPES:()=>F,NIBGATE_CONTENT_HASH_NAMESPACE:()=>et,NIBGATE_CONTENT_SETTING_FIELDS:()=>mt,NIBGATE_REPUTATION_ABI:()=>at,NIBGATE_REPUTATION_CHAIN_ID:()=>tt,NIBGATE_REPUTATION_CHAIN_NAME:()=>nt,NIBGATE_REPUTATION_CONTRACT:()=>He,NIBGATE_REPUTATION_RPC_URL:()=>rt,PAYMENT_RAILS:()=>ee,UNLOCK_MODES:()=>te,checkResourceAccess:()=>N,contentRatingHash:()=>ze,createCircleGatewayBrowserAdapter:()=>oe,createEvmGatewayUnlock:()=>W,createGate:()=>_,createHostedUnlock:()=>Xe,createNibgate:()=>Le,createNibgateContentSettings:()=>ft,createOnchainRating:()=>ce,createTransferCheckout:()=>se,createWalletCheckout:()=>he,mountRatingUI:()=>ie,nibgate:()=>De,normalizeAccessPolicy:()=>O,normalizeContentType:()=>D,normalizePaymentRail:()=>V,normalizeResource:()=>S,normalizeUnlockPolicy:()=>J,payAndUnlockResource:()=>re,payWithPaymentSignature:()=>ne,payWithTransfer:()=>ve,rateContentOnchain:()=>xe,rateResource:()=>X,renderDefaultGatewayWalletUI:()=>dt,renderDefaultRatingUI:()=>lt,renderDefaultUnlockUI:()=>ut,reviewTextHash:()=>ot,settingsToAccessPolicy:()=>pt,settingsToUnlockPolicy:()=>gt,setupResourcePage:()=>ye,trackResourcePage:()=>G,validateResourceMetadata:()=>de});$();Q();pe();ge();$();I();q();$();function G(t,e={}){let n=_(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,s=e.onStatus||(l=>{o&&(o.textContent=l||"")});return a&&a.addEventListener("click",async()=>{a.disabled=!0;try{await N(t,{...e,onStatus:s})}finally{a.disabled=!1}}),n}async function N(t,e={}){let n=_(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}),s=await o.json().catch(()=>({}));if(o.status===402){if(n.track("payment_challenge_returned",{source:e.source,challenge:s,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:s,paymentRequiredHeader:o.headers.get("PAYMENT-REQUIRED")||o.headers.get("payment-required")||""});if(e.autoPay&&e.payPath){let c=await re(t,e);return c.ok&&e.retryAfterPay!==!1?N(t,{...e,autoPay:!1}):c}return{ok:!1,status:o.status,challenge:s,resource:n.resource,response:o}}if(!o.ok)return a(s.error||e.errorMessage||"Access check failed"),{ok:!1,status:o.status,error:s.error||"Access check failed",payload:s,resource:n.resource,response:o};let l=e.payment||s.payment||null;return l&&(n.unlockCompleted(l),n.paymentCompleted(l)),a(e.successMessage||"Access allowed and Nibgate events emitted."),{ok:!0,status:o.status,payload:s,payment:l,resource:n.resource,response:o}}async function ne(t,e={}){let n=_(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||"",s=e.memo||"",l=e.payment||{};if(!o){let d=e.paymentRequiredHeader||"",m=e.challenge||null,x=await(e.createPaymentSignature||e.checkout)({resource:n.resource,challenge:m,paymentRequiredHeader:d,accessPath:r});o=x?.paymentSignature||x?.signature||x?.payment||"",s=x?.memo||x?.paymentMemo||"",l=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 c=await fetch(r,{method:e.method||"GET",headers:{accept:"application/json","payment-signature":o,...s?{"payment-memo":s}:{},...e.headers||{}}}),u=await c.text(),i={};try{i=u?JSON.parse(u):{}}catch{i={error:u||"Payment verification failed"}}if(!c.ok){let d=i.detail||i.reason||i.invalidReason||i.error||u||"Payment verification failed",m=typeof d=="string"?d:K(d);return n.track("payment_failed",{source:e.source,status:c.status,error:m,...l}),a(e.paymentErrorMessage||m),{ok:!1,status:c.status,error:m,payload:i,resource:n.resource,response:c}}let b=i.payment||{paymentProvider:e.paymentProvider||"wallet-gateway",paymentId:o,memo:s,amount:Number(n.resource.price||0),revenue:Number(n.resource.price||0),currency:n.resource.currency||"USDC",...l};return Ne(n.resource,i.unlockProof),n.markUnlocked(b),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:c.status,payload:i,payment:b,resource:n.resource,response:c}}async function re(t,e={}){let n=_(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||{}})}),s=await o.json().catch(()=>({}));if(!o.ok||!s.ok)return n.track("payment_failed",{source:e.source,status:o.status,error:s.error||"Payment failed",detail:s.detail||""}),a(s.detail||s.error||e.paymentErrorMessage||"Payment failed."),{ok:!1,status:o.status,payload:s,resource:n.resource,response:o};let l=s.payment||{paymentProvider:e.paymentProvider||"circle-gateway",paymentId:s.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,s.unlockProof),n.markUnlocked(l),a(e.paymentSuccessMessage||"Payment verified. Content unlocked."),{ok:!0,status:o.status,payload:s,payment:l,resource:n.resource,response:o}}I();q();function Bt(t,e){let n=v();if(!t||!n)return;let r=typeof t=="string"?n.document.querySelector(t):t;r&&(r.textContent=e||"")}function Ye(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,s=typeof e.onStatus=="function"?e.onStatus:i=>Bt(o,i),l=e.checkout||e.createPaymentSignature||e.pay;if(typeof l!="function")throw new Error("createWalletCheckout requires checkout/createPaymentSignature/pay callback for the active wallet or Gateway adapter.");async function c(i={}){Ye(a,!0);try{return await N(n,{...e,...i,accessPath:r,createPaymentSignature:l,onStatus:s})}finally{Ye(a,!1)}}function u(){let i=v();if(!i||!a)return{unlock:c};let b=typeof a=="string"?i.document.querySelector(a):a;return b&&b.addEventListener("click",()=>c().catch(d=>s(d.message||"Checkout failed."))),{unlock:c}}return{resource:n,unlock:c,mount:u}}I();we();Q();$();$();q();pe();ge();$();async function oe(t={}){return(await Promise.resolve().then(()=>(Ke(),Qe))).createCircleGatewayBrowserAdapter(t)}var Lt="https://api.nibgate.xyz/api/hub/pay";function Dt(t,e){return e.hosted||e.accessPath==="hosted"?Lt:e.accessPath||t.accessPath||"/api/nibgate/access"}function W(t,e={}){let n=_(t,e.gateOptions||{}),r=v(),a=Dt(n.resource,e),o=e.source||"nibgate-evm-gateway",s=e.network||"eip155:5042002",l=typeof e.status=="string"?r?.document.querySelector(e.status):e.status,c=typeof e.connectButton=="string"?r?.document.querySelector(e.connectButton):e.connectButton,u=typeof e.disconnectButton=="string"?r?.document.querySelector(e.disconnectButton):e.disconnectButton,i=typeof e.unlockButton=="string"?r?.document.querySelector(e.unlockButton):e.unlockButton,b=typeof e.clearButton=="string"?r?.document.querySelector(e.clearButton):e.clearButton,d=typeof e.walletLabel=="string"?r?.document.querySelector(e.walletLabel):e.walletLabel,m=typeof e.unlockedTarget=="string"?r?.document.querySelector(e.unlockedTarget):e.unlockedTarget,p="",x=!1;function T(w){typeof e.onStatus=="function"&&e.onStatus(w),l&&(l.textContent=w||"")}function A(w){return w?`${w.slice(0,6)}...${w.slice(-4)}`:""}function f(){return r?.ethereum||e.provider||null}function g(w){x=!!w,[c,u,i,b].forEach(E=>{E&&"disabled"in E&&(E.disabled=x||E===c&&!f()||E===u&&!p)})}function h(){let w=!!f();d&&(d.textContent=p?A(p):w?"Ready to connect":"No wallet detected"),c&&(c.textContent=p?"Connected":"Connect wallet"),u&&(u.textContent="Disconnect"),c&&"disabled"in c&&(c.disabled=x||!w),u&&"disabled"in u&&(u.disabled=x||!p)}function k(w,E={}){i&&(i.textContent=w?"Unlocked":`Unlock for ${n.resource.price} ${n.resource.currency||"USDC"}`),m&&("hidden"in m&&(m.hidden=!w),m.setAttribute("aria-hidden",w?"false":"true")),w&&n.markUnlocked(E)}async function P(){g(!0),T("Opening wallet connection...");try{let w=f();if(!w)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let E=await w.request({method:"eth_requestAccounts"});if(p=Array.isArray(E)&&E[0]||"",!p)throw new Error("No wallet account selected.");return h(),T("Wallet connected. You can unlock now."),p}finally{g(!1)}}async function C(){g(!0);try{let w=f();if(w?.request&&p)try{await w.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}return p="",h(),T(e.disconnectMessage||"Wallet disconnected for this page."),!0}finally{g(!1)}}async function H(w){let E=f();if(!E)throw new Error(e.noWalletMessage||"Install or open an EVM wallet to continue.");let Ee=await E.request({method:"eth_accounts"}).catch(()=>p?[p]:[]),ue=Array.isArray(Ee)&&Ee[0]?Ee[0]:p||await P();return ue!==p&&(p=ue),(await oe({network:s,signer:{address:ue,signTypedData:yt=>E.request({method:"eth_signTypedData_v4",params:[ue,K(yt)]})},clientModule:e.circleClientModule})).pay(w)}async function z(){g(!0);try{p||await P(),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 E=w?.message||"Unlock failed. Please try again.";return T(E),{ok:!1,status:0,error:E,resource:n.resource}}finally{g(!1),h()}}function R(){We(n.resource),k(!1),T("Local payment proof cleared. The next unlock will require Gateway payment again.")}async function Z(){let w=f();try{let E=w?await w.request({method:"eth_accounts"}):[];p=Array.isArray(E)&&E[0]||""}catch{}h(),k(!1)}function qe(){return c?.addEventListener?.("click",()=>P().catch(w=>T(w?.message||"Could not connect wallet."))),u?.addEventListener?.("click",()=>C().catch(w=>T(w?.message||"Could not disconnect wallet."))),i?.addEventListener?.("click",()=>z()),b?.addEventListener?.("click",R),Z(),G(n.resource,{source:o}),Ge}let Ge={resource:n.resource,connect:P,disconnect:C,unlock:z,clear:R,hydrate:Z,mount:qe,getWalletAddress:()=>p};return e.autoMount!==!1&&qe(),Ge}function Xe(t,e={}){return W(t,{...e,hosted:!0,noWalletMessage:e.noWalletMessage||"Install MetaMask or another EVM wallet to unlock premium content."})}ke();I();function se(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,s=String(n.price||n.amount||"0"),l=n.currency||"USDC",c=e.network||a.challenge?.accepts?.[0]?.network||"eip155:5042002",u=await r({resource:n,recipient:o,amount:s,currency:l,network:c,challenge:a.challenge}),i=u?.txHash||u?.hash||u?.transactionHash||u?.paymentId||"";if(!i)throw new Error("Transfer checkout did not return a txHash.");return{paymentSignature:i,signature:i,memo:u.memo||"",metadata:{paymentProvider:"direct-transfer",paymentId:i,txHash:i,recipient:o,amount:Number(s),currency:l,network:c,...u.metadata||u}}}}}async function ve(t,e={}){let r=await(e.checkout||se(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 Le(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 M("content_registered",B(n(r),a))},registerContent(r,a={}){return M("content_registered",B(n(r),a))},view(r,a={}){return M("resource_view",B(n(r),a))},track(r,a={}){return M(r||"custom",a)},unlockStarted(r,a={}){return M("unlock_started",B(n(r),a))},unlockCompleted(r,a={}){return M("unlock_completed",B(n(r),a))},paymentCompleted(r,a={}){return M("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 _(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 oe(r)},createTransferCheckout(r,a={}){return se(n(r),a)},payWithTransfer(r,a={}){return ve(n(r),a)},createEvmGatewayUnlock(r,a={}){return W(n(r),a)},createOnchainRating(r,a={}){return ce(n(r),a)},mountRatingUI(r,a={}){return ie(n(r),a)},payAndUnlockResource(r,a={}){return re(n(r),a)},setupResourcePage(r,a={}){return ye(n(r),a)},normalizeResource:n,normalizeContentType:D,flush:me}}var De=Le();Fe(De);ke();$e();var it="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)"},Ft=t=>Object.entries(t).map(([e,n])=>`${e.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())}:${n}`).join(";");function st(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=Ft(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 Oe(){if(document.getElementById(it))return;let t=st("style",{id:it},`
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 j(t,e,n){return ct(t,e,n)}function Vt(t,e){t&&(t.textContent=e||"")}function ve(t){let e=document.createElement("div");return e.textContent=String(t??""),e.innerHTML}function it(t,e,n={}){Le();let r=j("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 j(t,e,n){return st(t,e,n)}function Yt(t,e){t&&(t.textContent=e||"")}function Se(t){let e=document.createElement("div");return e.textContent=String(t??""),e.innerHTML}function ut(t,e,n={}){Oe();let r=j("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">${ve(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">${Se(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 ${ve(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 ${Se(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(A){var Z=document.getElementById("nibgate-lottie");Z&&window.lottie&&window.lottie.loadAnimation({container:Z,animationData:A,loop:!0,autoplay:!0})}if(window.lottie){window._lottieData?H(window._lottieData):fetch("/nibgate-unlock-key.json?t=1").then(function(A){if(!A.ok)throw new Error;return A.json()}).then(function(A){window._lottieData=A,H(A)}).catch(function(){});return}if(!window._lottieLoading){window._lottieLoading=!0;var z=document.createElement("script");z.src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js",z.onload=function(){fetch("/nibgate-unlock-key.json?t=1").then(function(A){if(!A.ok)throw new Error;return A.json()}).then(function(A){window._lottieData=A,H(A)}).catch(function(){})},document.head.appendChild(z)}})();let o=r.querySelector("[data-nibgate-status]"),s=r.querySelector("[data-nibgate-wallet-label]"),l=r.querySelector("[data-nibgate-unlock-wrap]"),c=r.querySelector("[data-nibgate-unlock-progress]"),u=r.querySelector("[data-nibgate-shimmer]"),i=r.querySelector("[data-nibgate-unlock]"),b=1500,d=null,m=!1,y=!1,x=W(e,{...n,connectButton:null,unlockButton:null,walletLabel:null,status:"[data-nibgate-status]",unlockedTarget:"[data-nibgate-premium]",onStatus:E=>Vt(o,E)});function T(E){return E?E.slice(0,6)+"..."+E.slice(-4):""}function R(){let E=x.getWalletAddress();E?(s.innerHTML=T(E)+' <span data-nibgate-disconnect style="cursor:pointer">\xB7 Disconnect</span>',i.disabled=!1,i.style.cursor="pointer"):(s.textContent="Connect wallet",i.disabled=!0,i.style.cursor="default",i.innerHTML=a+"Hold to pay "+ve(e.price)+" USDC")}function f(E){i.innerHTML=a+E}function p(){m=!1,y=!1,d=null,i.style.transform="scale(1)",c.style.width="0%",u.style.animation="none",u.style.transform="translateX(-100%)",i.disabled||f("Hold to pay "+ve(e.price)+" USDC")}function h(E){if(i.disabled||m)return;E.preventDefault(),m=!0,y=!1,i.style.transform="scale(.97)",c.style.transition="none",c.style.width="0%",u.style.animation="nshimmer 1s ease-in-out infinite",u.style.transform="none",f("Hold\u2026"),requestAnimationFrame(()=>{c.style.transition="width "+b+"ms linear",c.style.width="100%"});let H=setTimeout(()=>{m&&!y&&f("Keep holding\u2026")},b*.4),z=setTimeout(()=>{m&&!y&&f("Almost there\u2026")},b*.75);d=setTimeout(()=>{y=!0,m=!1,clearTimeout(H),clearTimeout(z),i.style.transform="scale(1)",u.style.animation="none",c.style.transition="width .05s linear",f("Processing\u2026"),i.disabled=!0,setTimeout(()=>x.unlock().then(R).catch(R),300)},b)}function k(){!m||y||(clearTimeout(d),p())}s.addEventListener("click",E=>{E.target.dataset.nibgateDisconnect!==void 0?x.disconnect().then(R):x.getWalletAddress()||x.connect().then(R).catch(()=>R())}),l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!1}),document.addEventListener("mouseup",k),document.addEventListener("touchend",k),l.addEventListener("mouseleave",k),setTimeout(R,200);let P=()=>{document.removeEventListener("mouseup",k),document.removeEventListener("touchend",k)};return r.addEventListener("remove",P),{...x,element:r,destroy:()=>{P(),r.remove()}}}function st(t,e,n={}){Le();let r=0,a=!1,o=null,s=null,l=j("div",{cls:"nui",style:{animation:"nfade .2s ease-out",textAlign:"center",padding:"28px 0"}}),c=j("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"4px"}}),u=[];for(let f=1;f<=5;f++){let p=j("button",{type:"button","aria-label":`${f} star${f>1?"s":""}`,"data-star":f,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");u.push(p),c.appendChild(p)}let i=j("span",{style:{fontSize:"17px",color:g.muted,marginLeft:"12px"}});i.textContent="No ratings yet",c.appendChild(i);let b=j("div",{style:{fontSize:"17px",color:g.muted,marginTop:"8px",minHeight:"1.4em"}});b.textContent="Tap stars to rate",l.append(c,b),(typeof t=="string"?document.querySelector(t):t)?.appendChild(l);function d(){s&&(clearTimeout(s),s=null),b.textContent=r>0?"":"Tap stars to rate",b.style.color=g.muted}function m(f,p,h){b.textContent=f||"",b.style.color=p||"",h&&(s=setTimeout(d,h))}function y(f){u.forEach((p,h)=>{let k=h<f;p.style.color=k?g.accent:g.border,p.textContent=k?"\u2605":"\u2606",p.style.transform=k?"scale(1.08)":"scale(1)"})}function x(f){m(["","Poor","Below average","Average","Good","Excellent"][f])}async function T(f){if(!(a||!o)){a=!0,u.forEach(p=>{p.disabled=!0,p.style.cursor="default"}),r=f,y(f),m("Submitting\u2026");try{await o.rate({rating:f}),y(f),m("You rated "+f+" \u2605".repeat(f),g.accent,3e3),R()}catch(p){m(p?.message||"Could not save rating. Try again.","#dc2626"),y(r)}finally{a=!1,u.forEach(p=>{p.disabled=!1,p.style.cursor="pointer"})}}}function R(){let f=n.statsUrl||(e.id?`${n.apiBase||"/api"}/rating/${e.id}`:null);f&&fetch(f).then(p=>p.json()).then(p=>{p.count>0?i.textContent=`${p.average.toFixed(1)} \u2014 ${p.count} rating${p.count!==1?"s":""}`:i.textContent="No ratings yet"}).catch(()=>{})}return u.forEach(f=>{let p=parseInt(f.dataset.star);f.addEventListener("mouseenter",()=>{a||(y(p),x(p))}),f.addEventListener("mouseleave",()=>{a||(y(r),d())}),f.addEventListener("click",()=>T(p)),f.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),T(p))})}),Promise.resolve().then(()=>(xe(),at)).then(f=>{o=f.createOnchainRating(e,{autoMount:!1,contentId:n.contentId||"0x"+(e.id||"").replace(/-/g,""),onRated:p=>{m("Rating saved",g.accent,3e3),R(),typeof n.onRated=="function"&&n.onRated(p)},onError:p=>{m(p?.message||"Could not save rating. Try again.","#dc2626"),typeof n.onError=="function"&&n.onError(p)}}),R()}).catch(()=>{m("Could not load rating","#dc2626")}),{element:l,destroy:()=>l.remove(),refresh:R,setRating:f=>{r=f,y(f)}}}function ut(t,e={}){Le();let n="deposit",r=j("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(R){var Z=document.getElementById("nibgate-lottie");Z&&window.lottie&&window.lottie.loadAnimation({container:Z,animationData:R,loop:!0,autoplay:!0})}if(window.lottie){window._lottieData?H(window._lottieData):fetch("/nibgate-unlock-key.json?t=1").then(function(R){if(!R.ok)throw new Error;return R.json()}).then(function(R){window._lottieData=R,H(R)}).catch(function(){});return}if(!window._lottieLoading){window._lottieLoading=!0;var z=document.createElement("script");z.src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js",z.onload=function(){fetch("/nibgate-unlock-key.json?t=1").then(function(R){if(!R.ok)throw new Error;return R.json()}).then(function(R){window._lottieData=R,H(R)}).catch(function(){})},document.head.appendChild(z)}})();let o=r.querySelector("[data-nibgate-status]"),s=r.querySelector("[data-nibgate-wallet-label]"),l=r.querySelector("[data-nibgate-unlock-wrap]"),c=r.querySelector("[data-nibgate-unlock-progress]"),u=r.querySelector("[data-nibgate-shimmer]"),i=r.querySelector("[data-nibgate-unlock]"),b=1500,d=null,m=!1,p=!1,x=W(e,{...n,connectButton:null,unlockButton:null,walletLabel:null,status:"[data-nibgate-status]",unlockedTarget:"[data-nibgate-premium]",onStatus:C=>Yt(o,C)});function T(C){return C?C.slice(0,6)+"..."+C.slice(-4):""}function A(){let C=x.getWalletAddress();C?(s.innerHTML=T(C)+' <span data-nibgate-disconnect style="cursor:pointer">\xB7 Disconnect</span>',i.disabled=!1,i.style.cursor="pointer"):(s.textContent="Connect wallet",i.disabled=!0,i.style.cursor="default",i.innerHTML=a+"Hold to pay "+Se(e.price)+" USDC")}function f(C){i.innerHTML=a+C}function g(){m=!1,p=!1,d=null,i.style.transform="scale(1)",c.style.width="0%",u.style.animation="none",u.style.transform="translateX(-100%)",i.disabled||f("Hold to pay "+Se(e.price)+" USDC")}function h(C){if(i.disabled||m)return;C.preventDefault(),m=!0,p=!1,i.style.transform="scale(.97)",c.style.transition="none",c.style.width="0%",u.style.animation="nshimmer 1s ease-in-out infinite",u.style.transform="none",f("Hold\u2026"),requestAnimationFrame(()=>{c.style.transition="width "+b+"ms linear",c.style.width="100%"});let H=setTimeout(()=>{m&&!p&&f("Keep holding\u2026")},b*.4),z=setTimeout(()=>{m&&!p&&f("Almost there\u2026")},b*.75);d=setTimeout(()=>{p=!0,m=!1,clearTimeout(H),clearTimeout(z),i.style.transform="scale(1)",u.style.animation="none",c.style.transition="width .05s linear",f("Processing\u2026"),i.disabled=!0,setTimeout(()=>x.unlock().then(A).catch(A),300)},b)}function k(){!m||p||(clearTimeout(d),g())}s.addEventListener("click",C=>{C.target.dataset.nibgateDisconnect!==void 0?x.disconnect().then(A):x.getWalletAddress()||x.connect().then(A).catch(()=>A())}),l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!1}),document.addEventListener("mouseup",k),document.addEventListener("touchend",k),l.addEventListener("mouseleave",k),setTimeout(A,200);let P=()=>{document.removeEventListener("mouseup",k),document.removeEventListener("touchend",k)};return r.addEventListener("remove",P),{...x,element:r,destroy:()=>{P(),r.remove()}}}function lt(t,e,n={}){Oe();let r=0,a=!1,o=null,s=null,l=j("div",{cls:"nui",style:{animation:"nfade .2s ease-out",textAlign:"center",padding:"28px 0"}}),c=j("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"4px"}}),u=[];for(let f=1;f<=5;f++){let g=j("button",{type:"button","aria-label":`${f} star${f>1?"s":""}`,"data-star":f,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");u.push(g),c.appendChild(g)}let i=j("span",{style:{fontSize:"17px",color:y.muted,marginLeft:"12px"}});i.textContent="No ratings yet",c.appendChild(i);let b=j("div",{style:{fontSize:"17px",color:y.muted,marginTop:"8px",minHeight:"1.4em"}});b.textContent="Tap stars to rate",l.append(c,b),(typeof t=="string"?document.querySelector(t):t)?.appendChild(l);function d(){s&&(clearTimeout(s),s=null),b.textContent=r>0?"":"Tap stars to rate",b.style.color=y.muted}function m(f,g,h){b.textContent=f||"",b.style.color=g||"",h&&(s=setTimeout(d,h))}function p(f){u.forEach((g,h)=>{let k=h<f;g.style.color=k?y.accent:y.border,g.textContent=k?"\u2605":"\u2606",g.style.transform=k?"scale(1.08)":"scale(1)"})}function x(f){m(["","Poor","Below average","Average","Good","Excellent"][f])}async function T(f){if(!(a||!o)){a=!0,u.forEach(g=>{g.disabled=!0,g.style.cursor="default"}),r=f,p(f),m("Submitting\u2026");try{await o.rate({rating:f}),p(f),m("You rated "+f+" \u2605".repeat(f),y.accent,3e3),A()}catch(g){m(g?.message||"Could not save rating. Try again.","#dc2626"),p(r)}finally{a=!1,u.forEach(g=>{g.disabled=!1,g.style.cursor="pointer"})}}}function A(){let f=n.statsUrl||(e.id?`${n.apiBase||"/api"}/rating/${e.id}`:null);f&&fetch(f).then(g=>g.json()).then(g=>{g.count>0?i.textContent=`${g.average.toFixed(1)} \u2014 ${g.count} rating${g.count!==1?"s":""}`:i.textContent="No ratings yet"}).catch(()=>{})}return u.forEach(f=>{let g=parseInt(f.dataset.star);f.addEventListener("mouseenter",()=>{a||(p(g),x(g))}),f.addEventListener("mouseleave",()=>{a||(p(r),d())}),f.addEventListener("click",()=>T(g)),f.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),T(g))})}),Promise.resolve().then(()=>(ke(),ct)).then(f=>{o=f.createOnchainRating(e,{autoMount:!1,contentId:n.contentId||"0x"+(e.id||"").replace(/-/g,""),onRated:g=>{m("Rating saved",y.accent,3e3),A(),typeof n.onRated=="function"&&n.onRated(g)},onError:g=>{m(g?.message||"Could not save rating. Try again.","#dc2626"),typeof n.onError=="function"&&n.onError(g)}}),A()}).catch(()=>{m("Could not load rating","#dc2626")}),{element:l,destroy:()=>l.remove(),refresh:A,setRating:f=>{r=f,p(f)}}}function dt(t,e={}){Oe();let n="deposit",r=j("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 s(c,u){c.forEach(i=>{let b=i.dataset.tab===u;i.style.color=b?g.fg:g.muted,i.style.borderBottomColor=b?g.accent:"transparent"})}function l(c){n=c,s(o,c),c==="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 s(c,u){c.forEach(i=>{let b=i.dataset.tab===u;i.style.color=b?y.fg:y.muted,i.style.borderBottomColor=b?y.accent:"transparent"})}function l(c){n=c,s(o,c),c==="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 l("deposit"),o.forEach(c=>c.addEventListener("click",()=>l(c.dataset.tab))),{element:r,destroy:()=>r.remove(),switchTab:l}}I();ue();I();var lt=[{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 dt(t={}){let e=O(t.access||{humans:t.humanAccess,agents:t.agentAccess}),n=J(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:D(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:n.mode,paymentRail:V(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 mt(t={}){return O({humans:t.humanAccess,agents:t.agentAccess})}function ft(t={}){return J(t.unlockMode||t.unlock||"one_time")}ue();return xt(Ft);})();
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 l("deposit"),o.forEach(c=>c.addEventListener("click",()=>l(c.dataset.tab))),{element:r,destroy:()=>r.remove(),switchTab:l}}I();le();I();var mt=[{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 ft(t={}){let e=O(t.access||{humans:t.humanAccess,agents:t.agentAccess}),n=J(t.unlock||t.unlockMode||"one_time");return{publishToNibgate:t.publishToNibgate??t.publishedToNibgate??!0,type:D(t.type||t.contentType||"article"),humanAccess:e.humans,agentAccess:e.agents,unlockMode:n.mode,paymentRail:V(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 pt(t={}){return O({humans:t.humanAccess,agents:t.agentAccess})}function gt(t={}){return J(t.unlockMode||t.unlock||"one_time")}le();return vt(Jt);})();
68
68
  //# sourceMappingURL=nibgate.min.js.map