@nibgate/sdk 0.2.10 → 0.2.12

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